3

我正在运行这个命令:

kubectl set image deployment/www-deployment VERSION_www=newImage

工作正常。但是有一个10秒的窗口,网站是503,我是个完美主义者。

如何配置 kubernetes 在切换入口之前等待图像可用?

我从这里使用 nginx 入口控制器:

gcr.io/google_containers/nginx-ingress-controller:0.8.3

这个用于 Web 服务器的 yaml:

# Service and Deployment
apiVersion: v1
kind: Service
metadata:
  name: www-service
spec:
  ports:
  - name: http-port
    port: 80
    protocol: TCP
    targetPort: http-port
  selector:
    app: www
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: www-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels: 
        app: www
    spec:
      containers:
      - image: myapp/www
        imagePullPolicy: Always
        livenessProbe:
          httpGet:
            path: /healthz
            port: http-port
        name: www
        ports:
        - containerPort: 80
          name: http-port
          protocol: TCP
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        volumeMounts:
        - mountPath: /etc/env-volume
          name: config
          readOnly: true
      imagePullSecrets:
      - name: cloud.docker.com-pull
      volumes:
      - name: config
        secret:
          defaultMode: 420
          items:
          - key: www.sh
            mode: 256
            path: env.sh
          secretName: env-secret

Docker 映像基于node.js 服务器映像

/healthz是网络服务器中的一个文件,它返回ok 我认为活性探测将确保服务器在切换到新版本之前已启动并准备就绪。

提前致谢!

4

1 回答 1

4

Pod 生命周期中,它定义为:

Liveness 在初始延迟之前的默认状态是 Success。

为了确保您不会遇到问题,最好ReadinessProbe也为您的 Pod 配置 并考虑.spec.minReadySeconds为您的部署进​​行配置。

您将在部署文档中找到详细信息

于 2017-02-15T07:19:54.347 回答