首页 > 解决方案 > 如何保持 kubernetes pod 的状态相同或自动恢复

问题描述

我正在使用 kubernetes(v1.15.2) 管理我的 skywalking-ui(v6.5.0) 应用程序,最近我发现一些应用程序无法访问但 pod 仍在运行,我不确定应用程序是否正常工作,没有错误在 pod 的日志中输出。但 pod 状态图标给出提示:the pod is in pending state

在此处输入图像描述

为什么不同地方状态不一样?现在服务down了,如何避免这种情况或者让服务自动恢复?这是吊舱信息:

$ kubectl describe pod ws-red-envelope-service-575dc8f4fb-mg72g
Name:           ws-red-envelope-service-575dc8f4fb-mg72g
Namespace:      dabai-fat
Priority:       0
Node:           azshara-k8s01/172.19.104.231
Start Time:     Sat, 29 Feb 2020 23:07:43 +0800
Labels:         k8s-app=ws-red-envelope-service
                pod-template-hash=575dc8f4fb
Annotations:    <none>
Status:         Running
IP:             172.30.224.4
IPs:            <none>
Controlled By:  ReplicaSet/ws-red-envelope-service-575dc8f4fb
Containers:
  ws-red-envelope-service:
    Container ID:   docker://d1459b7edc1c02f1558b773f89711eeb63c12c9f180a8a426a3dc31d081b2a88
    Image:          registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_fat/ws-red-envelope:v0.0.1
    Image ID:       docker-pullable://registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_fat/ws-red-envelope@sha256:448c47db9d1366c9e50984054812ebed9cbcc718e206d20600e6c8ac02a35625
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Sat, 29 Feb 2020 23:07:45 +0800
    Ready:          True
    Restart Count:  0
    Environment:
      APOLLO_META:  <set to the key 'apollo.meta' of config map 'fat-config'>  Optional: false
      ENV:          <set to the key 'env' of config map 'fat-config'>          Optional: false
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-xnrwt (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   True
  PodScheduled      True
Volumes:
  default-token-xnrwt:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-xnrwt
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 360s
                 node.kubernetes.io/unreachable:NoExecute for 360s
Events:
  Type    Reason     Age   From                    Message
  ----    ------     ----  ----                    -------
  Normal  Scheduled  12h   default-scheduler       Successfully assigned dabai-fat/ws-red-envelope-service-575dc8f4fb-mg72g to azshara-k8s01
  Normal  Pulled     12h   kubelet, azshara-k8s01  Container image "registry.cn-hangzhou.aliyuncs.com/dabai_app_k8s/dabai_fat/ws-red-envelope:v0.0.1" already present on machine
  Normal  Created    12h   kubelet, azshara-k8s01  Created container ws-red-envelope-service
  Normal  Started    12h   kubelet, azshara-k8s01  Started container ws-red-envelope-service

标签: kubernetes

解决方案


所以你可以在输出中更清楚地看到这一点。pod 正在运行,但 Ready 标志为 false,这意味着容器已启动但未通过 Readiness Probe。


推荐阅读