0

展開を実行すると、ダウンタイムが発生します。一定時間 (20 ~ 40 秒) 後にリクエストが失敗する。

preStop が SIGUSR1 を送信し、31 秒間待機してから SIGTERM を送信すると、エントリ コンテナの準備チェックが失敗します。5 秒間隔で試行が 2 回失敗すると、準備状況チェックが失敗するように設定されているため、その期間内にポッドをサービスから削除する必要があります。

ポッドがサービスに追加されたり、サービスから削除されたりするイベントを確認して、原因を突き止めるにはどうすればよいですか?

そして、準備状況チェックに関するイベントは自分自身をチェックしますか?

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
4

1 に答える 1

1

プローブが失敗すると、プローバーは警告イベントを発行します。理由は でUnhealthy、メッセージはxx probe errored: xxxです。

kubectl get eventsこれらのイベントは、またはkubectl describe pods -l app=myapp,version=1.0.0-61--66-6(ポッドをそのラベルでフィルタリング)を使用して見つけることができるはずです。

于 2016-05-03T21:21:45.847 に答える