Сбой проверки готовности Джанго - PullRequest
0 голосов
/ 03 июля 2019

Я внедряю зонды RollingUpdate и Readiness / Liveness в развертывание Django.

Я создал конечную точку /healthz, которая просто возвращает OK и 200 в качестве кода ответа.

Конечная точка вручнуюработает как положено.Однако, когда kubernetes пытается достичь этой конечной точки, время ожидания истекает.Peridocialy.

Readiness probe failed: Get http://10.40.2.14:8080/v1/healthz/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)

Но из журнала доступа Django я ясно вижу, что он действительно периодически запрашивает эту конечную точку, и он перезагружает байты данных и 200 в качестве ответа.

[api-prod-64bdff8d4-lcbtf api-prod] [pid: 14|app: 0|req: 34/86] 10.40.2.1 () {30 vars in 368 bytes} [Wed Jul  3 12:10:18 2019] GET /v1/healthz/ => generated 15 bytes in 3 msecs (HTTP/1.1 200) 5 headers in 149 bytes (1 switches on core 0)
[api-prod-64bdff8d4-lcbtf api-prod] [pid: 13|app: 0|req: 11/87] 10.40.2.1 () {30 vars in 368 bytes} [Wed Jul  3 12:10:52 2019] GET /v1/healthz/ => generated 15 bytes in 2 msecs (HTTP/1.1 200) 5 headers in 149 bytes (1 switches on core 0)

Это мой файл yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: api-prod
  labels:
    app: api-prod
spec:
  replicas: 1
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 1
  template:
    metadata:
      labels:
        app: api-prod
    spec:    
      # Minikube Local Pull Secrets
      imagePullSecrets: 
        - name: gcr-json-key

      containers:
      - name: api-prod
        image: gcr.io/nsw-production-environment/api-prod
        imagePullPolicy: IfNotPresent     
        readinessProbe:
          httpGet:
             path: /v1/healthz/
             port: 8080
          initialDelaySeconds: 10
          periodSeconds: 60
          successThreshold: 1
        livenessProbe:
          httpGet:
             path: /v1/healthz/
             port: 8080
          initialDelaySeconds: 10
          periodSeconds: 60
          successThreshold: 1     
        env:
            # [START cloudsql_secrets]
            - name: DATABASE_USER
              valueFrom:
                secretKeyRef:
                  name: cloudsql-prod
                  key: username
            - name: DATABASE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: cloudsql-prod
                  key: password
            # [END cloudsql_secrets]
        ports:
        - containerPort: 8080

      # [START proxy_container]
      - image: gcr.io/cloudsql-docker/gce-proxy:1.05
        name: cloudsql-proxy
        command: ["/cloud_sql_proxy", "--dir=/cloudsql",
                  "-instances=redacted:somewhere:somedb=tcp:5432",
                  "-credential_file=/secrets/cloudsql/credentials.json"]
        volumeMounts:
          - name: cloudsql-oauth-credentials
            mountPath: /secrets/cloudsql
            readOnly: true
          - name: ssl-certs
            mountPath: /etc/ssl/certs
          - name: cloudsql
            mountPath: /cloudsql
      # [END proxy_container] 



      # [START volumes]
      volumes:
        - name: cloudsql-oauth-credentials
          secret:
            secretName: cloudsql-oauth-credentials
        - name: ssl-certs
          hostPath:
            path: /etc/ssl/certs
        - name: cloudsql
          emptyDir:
      # [END volumes]        
# [END kubernetes_deployment]

---

apiVersion: v1
kind: Service
metadata:
  name: api-prod
  labels:
    app: api-prod
spec:
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 8080
  selector:
    app: api-prod
# [END service]

Куда поступил запрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...