首页 > 解决方案 > 在 Azure Kubernetes 中创建后端容器时出错

问题描述

在尝试在 Kubernetes 集群 (AKS) 中部署我的 Web 应用程序时,我看到我的后端 pod 没有出现,它们继续进入下面的 RESTART 详细信息:

C:\Work\k8> kubectl 获取 pod

NAME                                                            READY   STATUS             RESTARTS   AGE
backend-mypod-backend-766b54f6dd-85v6v                         0/1     CrashLoopBackOff    549        35h
backend-mypod-backend-766b54f6dd-j4fm9                         0/1     CrashLoopBackOff    551        35h
backend-mypod-backend-766b54f6dd-vckbn                              0/1     CrashLoopBackOff    549        35h 

当我执行描述 Pod 时,我在下面看到所有后端 Pod 的错误:

Warning  Unhealthy  26m (x5 over 28m)     kubelet, aks-agentpool-33316079-vmss000000  Liveness probe failed: Get http://10.39.67.9:8800/api/healthtest: dial tcp 10.39.67.9:8800: connect: connection refused
  Warning  Unhealthy  8m10s (x65 over 28m)  kubelet, aks-agentpool-33316079-vmss000000  Readiness probe failed: Get http://10.39.67.9:8800/api/healthtest: dial tcp 10.39.67.9:8800: connect: connection refused
  Warning  BackOff    3m10s (x59 over 19m)  kubelet, aks-agentpool-33316079-vmss000000  Back-off restarting failed container

下面是部署 yaml 中我们设置 livnessProbe 和 readinessProbe 的部分:

    readinessProbe:
      httpGet:
        path: /api/healthtest
        port: {{ .Values.deployment.internalPort }}
    livenessProbe:
      httpGet:
        path: /api/healthtest
        port: {{ .Values.deployment.internalPort }}
      failureThreshold: 3
      periodSeconds: 20

10.39.67.97 - 这是负载均衡器的 IP 8800 - 这是部署的内部端口

有人可以帮我解决我在这里缺少的东西吗,我认为这是我正在努力解决的配置问题。

谢谢

标签: kubernetesyamlcontinuous-deploymentkubernetes-ingressazure-aks

解决方案


您可以尝试startupProbe代替readinessProbe吗?似乎readinessProbe在服务器启动之前失败了。当服务器启动时间比平时多时,就会发生这种情况。

startupProbe:启动探针对于容器需要很长时间才能投入使用的 Pod 非常有用。您可以配置一个单独的配置来在容器启动时探测容器,而不是设置一个长的活动间隔,从而允许比活动间隔允许的时间更长的时间。参考

使用的好处startupProbe是其他两个readinessProbelivenessProbe不会执行,直到startupProbe成功。

startupProbe:
  httpGet:
    path: /api/healthtest
    port: {{ .Values.deployment.internalPort }}
  failureThreshold: 30
  periodSeconds: 10
livenessProbe:
  httpGet:
    path: /api/healthtest
    port: {{ .Values.deployment.internalPort }}
  failureThreshold: 3
  periodSeconds: 20


推荐阅读