k8s 常用的正则表达式

参考大佬:https://blog.csdn.net/remix_xy/article/details/127001584

示例 - ingress

复制代码
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    emr-vke/ray-cluster-uuid: 221167282729208548-emr-4yw63nfsim3u4ruc1oim-rayjob-sample-raycluster-b5x8f
    emr/role: JOB
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    ray.io/enable-ray-history-server: "true"
  creationTimestamp: "2026-05-15T08:11:57Z"
  generation: 1
  labels:
    app.kubernetes.io/created-by: kuberay-operator
    app.kubernetes.io/name: kuberay
    ray.io/cluster: rayjob-sample-raycluster-b5x8f
    ray.io/identifier: rayjob-sample-raycluster-b5x8f-head
  name: rayjob-sample-raycluster-b5x8f-head-ingress
  namespace: emr-4yw63nfsim3u4ruc1oim-ray
  ownerReferences:
  - apiVersion: ray.io/v1
    blockOwnerDeletion: true
    controller: true
    kind: RayCluster
    name: rayjob-sample-raycluster-b5x8f
    uid: 75e96b29-689a-40b3-8a38-281712e3a123
  resourceVersion: "3967321"
  uid: a083035f-0e6f-446d-9ba5-de1b4d6c405a
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - backend:
          service:
            name: rayjob-sample-raycluster-b5x8f-head-svc
            port:
              number: 8265
        path: /rayjob-sample-raycluster-b5x8f/(.*)
        pathType: Exact
status:
  loadBalancer:
    ingress:
    - ip: 118.196.47.109

解释

1. (.*)

(.*) 是一个正则表达式,配合 nginx ingress 的 rewrite(重写) 功能使用。

拆开看:

• . 表示任意一个字符

• * 表示前面的字符出现 0 次或多次

• () 表示捕获分组,把匹配到的内容"抓出来",可以在后面引用

所以 (.*) 的意思是:匹配任意长度的任意字符,并把它捕获下来。

2. annotations

结合annotations一起看

annotations:

nginx.ingress.kubernetes.io/rewrite-target: /$1

...

path: /rayjob-sample-raycluster-b5x8f/(.*)

工作流程:

  1. 用户访问:http://118.196.47.109/rayjob-sample-raycluster-b5x8f/api/jobs

  2. nginx 用正则 /rayjob-sample-raycluster-b5x8f/(.*) 去匹配路径

  3. (.*) 捕获到的内容是:api/jobs → 这就是 $1

  4. rewrite-target: /$1 告诉 nginx 把请求重写成 /api/jobs

  5. 最后转发给后端 Service(Ray dashboard)的就是 /api/jobs

相关推荐
这个DBA有点耶1 小时前
云数据库半夜卡顿,CPU才30%?深挖云盘IOPS突发限制与内核挂起机制
数据库·mysql·云原生
miaobinfei3 小时前
docker拉取dify镜像,执行docker compose up -d 报错
运维·docker·容器
kobe_OKOK_4 小时前
docker compose命名卷 映射到宿主机的路径
运维·docker·容器
无言听风雨丶5 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
分布式存储与RustFS6 小时前
JuiceFS 接 RustFS 当数据后端:把对象存储挂成本地文件系统
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
孔令飞9 小时前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程
晨陌y9 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
无言听风雨丶9 小时前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
Z21-X9 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云
分布式存储与RustFS10 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准