Deployment、Service、Ingress 三者 label selector 和端口必须严格一致:Deployment 设 replicas=3、containerPort=80、readinessProbe;Service 的 selector 匹配 app: my-app,NodePort=30080;Ingress 指向 service name: my-app port: 80,ingressClassName=nginx。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要一套可直接应用的 Kubernetes 微服务部署配置,包含 Deployment 管理实例、Service 暴露内部端点、Ingress 对外提供 HTTP 路由——这三者必须严格匹配 label selector 和端口定义,否则服务根本无法连通。
生成 Deployment 配置文件
先创建微服务 Pod 的声明式定义,关键在于容器镜像、就绪探针和资源限制必须明确。
执行 kubectl create deployment my-app --image=nginx:1.25 --dry-run=client -o yaml > deployment.yaml 生成基础模板。
手动编辑 deployment.yaml,将 replicas 设为 【3】,在 template.spec.containers 下添加 ports 字段:- containerPort: 80,并补充 readinessProbe(HTTP GET /healthz,超时 1 秒)——没有就绪探针,Service 可能将流量转发到未启动完成的 Pod。
确保 selector.matchLabels 和 template.metadata.labels 完全一致,例如都设为 app: my-app。这是 Service 能关联到 Pod 的唯一依据。
生成 Service 配置文件
Service 必须与 Deployment 的 label selector 严格对应,否则不会发现任何后端 Pod。
方法一:用命令快速生成 ClusterIP 类型
运行 kubectl expose deployment my-app --port=80 --target-port=80 --dry-run=client -o yaml > service.yaml。
方法二:手动编写 NodePort 类型(适合开发环境)
在 service.yaml 中将 type: ClusterIP 改为 type: NodePort,并显式指定 nodePort: 30080——不指定时系统会随机分配,难以固化访问地址。
注意:spec.selector 的键值对必须与 Deployment 中的 matchLabels 完全相同,一个字母都不能错。
生成 Ingress 配置文件
第一步:确认集群已安装支持的 Ingress 控制器(如 ingress-nginx 或 Traefik),否则 Ingress 资源不会生效。
第二步:创建 ingress.yaml 文件,内容如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: app.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-app
port:
number: 80
host 字段必须是你能解析的域名,本地测试可临时加 /etc/hosts 条目;ingressClassName 必须与集群中实际运行的 Ingress 控制器名称一致,常见为 【nginx】 或 【traefik】。
第三步:执行 kubectl apply -f deployment.yaml -f service.yaml -f ingress.yaml 一次性提交全部资源。


















