【问题标题】:Error in creating backend containers in Azure Kubernetes在 Azure Kubernetes 中创建后端容器时出错
【发布时间】:2021-04-30 22:22:41
【问题描述】:

在尝试在 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 - 这是部署的内部端口

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

谢谢

【问题讨论】:

    标签: kubernetes yaml continuous-deployment kubernetes-ingress azure-aks


    【解决方案1】:

    你可以试试startupProbe 而不是readinessProbe 吗?似乎readinessProbe 在服务器启动之前失败了。当服务器启动时间比平时长时,就会发生这种情况。

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

    使用startupProbe的好处是其他两个readinessProbelivenessProbestartupProbe成功之前不会执行。

    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
    
    

    【讨论】:

    • 感谢 Emon 试一试,是否最好包括所有 3 个探针
    • 是的,您可以使用所有这些。实际上这取决于您的需要。
    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 2023-04-02
    • 2018-01-19
    • 2020-08-29
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多