Kubernetes2026-04-15·8 分钟
Kubernetes Deployment 与 Service
说明 Deployment 和 Service 的作用、常见配置及在集群中如何实现应用发布与访问。
Kubernetes Deployment 与 Service
1. Deployment 作用
Deployment 用于管理 Pod 副本数、滚动升级和回滚策略。
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: registry.example.com/myorg/myapp:1.0.0
ports:
- containerPort: 802. Service 类型
- ClusterIP:默认类型,仅集群内部访问。
- NodePort:暴露宿主机端口。
- LoadBalancer:接入云厂商负载均衡。
- ExternalName:通过 DNS 名称代理外部服务。
yaml
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
type: ClusterIP
selector:
app: myapp
ports:
- port: 80
targetPort: 803. Service 与 Pod 关联
Service 通过 selector 匹配 Deployment 生成的 Pod 标签,实现集群内负载均衡。
4. 常见访问方式
- 应用内部调用:
http://myapp-service。 - NodePort:
http://<node-ip>:<node-port>。 - LoadBalancer:由云平台分配外部 IP 或域名。
5. 负载均衡与会话保持
Service默认采用轮询。- 需要会话保持时,可结合 Ingress、Nginx 或 Cloud LB 实现。
6. 滚动更新
bash
kubectl set image deployment/myapp myapp=registry.example.com/myorg/myapp:1.0.1
kubectl rollout status deployment/myapp- Kubernetes 会逐步替换旧 Pod,保证最小中断。
- 失败可回滚:
kubectl rollout undo deployment/myapp。
KubernetesDeploymentService