2016-05-02 82 views
0

運行部署時,我得到停機時間。請求在可變的時間量(20-40秒)之後失敗。Kubernetes部署導致停機時間

當preStop發送SIGUSR1時,進入容器的準備就緒檢查失敗,等待31秒,然後發送SIGTERM。在該時間段內,應該將該吊艙從服務中移除,因爲準備就緒檢查設置爲在以5秒的間隔進行兩次失敗嘗試之後失敗。

如何查看正在添加和從服務中刪除的Pod的事件以找出造成這種情況的原因?

圍繞準備就緒的事件檢查自己?

我使用Google Container Engine版本1.2.2並使用GCE的網絡負載平衡器。

服務:

apiVersion: v1 
kind: Service 
metadata: 
    name: myapp 
    labels: 
    app: myapp 
spec: 
    type: LoadBalancer 
    ports: 
    - name: http 
    port: 80 
    targetPort: http 
    protocol: TCP 
    - name: https 
    port: 443 
    targetPort: https 
    protocol: TCP 
    selector: 
    app: myapp 

部署:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: myapp 
spec: 
    replicas: 3 
    strategy: 
    type: RollingUpdate 
    revisionHistoryLimit: 10 
    selector: 
    matchLabels: 
     app: myapp 
    template: 
    metadata: 
     labels: 
     app: myapp 
     version: 1.0.0-61--66-6 
    spec: 
     containers: 
     - name: myapp 
     image: **** 
     resources: 
      limits: 
      cpu: 100m 
      memory: 250Mi 
      requests: 
      cpu: 10m 
      memory: 125Mi 
     ports: 
     - name: http-direct 
      containerPort: 5000 
     livenessProbe: 
      httpGet: 
      path: /status 
      port: 5000 
      initialDelaySeconds: 30 
      timeoutSeconds: 1 
     lifecycle: 
      preStop: 
      exec: 
       # SIGTERM triggers a quick exit; gracefully terminate instead 
       command: ["sleep 31;"] 
     - name: haproxy 
     image: travix/haproxy:1.6.2-r0 
     imagePullPolicy: Always 
     resources: 
      limits: 
      cpu: 100m 
      memory: 100Mi 
      requests: 
      cpu: 10m 
      memory: 25Mi 
     ports: 
     - name: http 
      containerPort: 80 
     - name: https 
      containerPort: 443 
     env: 
     - name: "SSL_CERTIFICATE_NAME" 
      value: "ssl.pem"   
     - name: "OFFLOAD_TO_PORT" 
      value: "5000" 
     - name: "HEALT_CHECK_PATH" 
      value: "/status" 
     volumeMounts: 
     - name: ssl-certificate 
      mountPath: /etc/ssl/private 
     livenessProbe: 
      httpGet: 
      path: /status 
      port: 443 
      scheme: HTTPS 
      initialDelaySeconds: 30 
      timeoutSeconds: 1 
     readinessProbe: 
      httpGet: 
      path: /readiness 
      port: 81 
      initialDelaySeconds: 0 
      timeoutSeconds: 1 
      periodSeconds: 5 
      successThreshold: 1 
      failureThreshold: 2 
     lifecycle: 
      preStop: 
      exec: 
       # SIGTERM triggers a quick exit; gracefully terminate instead 
       command: ["kill -USR1 1; sleep 31; kill 1"] 
     volumes: 
     - name: ssl-certificate 
     secret: 
      secretName: ssl-c324c2a587ee-20160331 

回答

1

當探測器發生故障,探測器將發出以理警告事件作爲Unhealthy和消息xx probe errored: xxx

您應該能夠使用kubectl get eventskubectl describe pods -l app=myapp,version=1.0.0-61--66-6(按其標籤過濾器窗格)查找這些事件。

+0

到目前爲止我注意到的是,我的新豆莢的「準備就緒探測失敗:HTTP探測失敗,狀態碼:503」作爲最後一個事件。我希望接下來會有一些消息表明它很健康並且準備好接收流量。 –