切换Web pod时,Kubernetes卷展栏会出现503错误

时间:2017-02-15 04:22:49

标签: kubernetes kubernetes-health-check

我正在运行此命令:

kubectl set image deployment/www-deployment VERSION_www=newImage

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

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

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

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

这是网络服务器的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 server image

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

Pod lifecycle内定义:

  

初始延迟之前的默认活动状态是成功。

为确保您不会遇到问题,请更好地为您的Pod配置ReadinessProbe,并考虑为部署配置.spec.minReadySeconds

您可以在Deployment文档

中找到详细信息