SorryToPerson logo
返回
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: 80

2. 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: 80

3. 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