インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(Kubernetes)DashboardのPodがlivenessProbeでErrorになる件

延々再起動

KubernetesDashboard用のPodを見ると以下のように書かれていて起動に失敗している模様。

Events:
  Type     Reason     Age                    From               Message
  ----     ------     ----                   ----               -------
  Normal   Scheduled  46m                    default-scheduler  Successfully assigned kubernetes-dashboard/kubernetes-dashboard-xx to xx
  Normal   Pulled     43m (x4 over 46m)      kubelet            Container image "kubernetesui/dashboard:v2.4.0" already present on machine
  Normal   Created    43m (x4 over 46m)      kubelet            Created container kubernetes-dashboard
  Normal   Started    43m (x4 over 46m)      kubelet            Started container kubernetes-dashboard
  Normal   Killing    43m (x3 over 45m)      kubelet            Container kubernetes-dashboard failed liveness probe, will be restarted
  Warning  BackOff    6m18s (x131 over 41m)  kubelet            Back-off restarting failed container
  Warning  Unhealthy  71s (x53 over 45m)     kubelet            Liveness probe failed: Get "https://172.16.156.11:8443/": dial tcp 172.16.156.11:8443: connect: connection refused

ただ、logを見ても問題なく動いている。

# kubectl logs kubernetes-dashboard-XX -n kubernetes-dashboard -f
2022/01/28 08:08:42 Starting overwatch
2022/01/28 08:08:42 Using namespace: kubernetes-dashboard
2022/01/28 08:08:42 Using in-cluster config to connect to apiserver
2022/01/28 08:08:42 Using secret token for csrf signing
2022/01/28 08:08:42 Initializing csrf token from kubernetes-dashboard-csrf secret
2022/01/28 08:08:42 Successful initial request to the apiserver, version: v1.23.2
2022/01/28 08:08:42 Generating JWE encryption key
2022/01/28 08:08:42 New synchronizer has been registered: kubernetes-dashboard-key-holder-kubernetes-dashboard. Starting
2022/01/28 08:08:42 Starting secret synchronizer for kubernetes-dashboard-key-holder in namespace kubernetes-dashboard
2022/01/28 08:08:42 Initializing JWE encryption key from synchronized object
2022/01/28 08:08:42 Creating in-cluster Sidecar client
2022/01/28 08:08:42 Successful request to sidecar
2022/01/28 08:08:42 Serving insecurely on HTTP port: 9090

とりあえず消した

このチェックがおかしいのである・・ということで消してみました。

        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /
            port: 8443
            scheme: HTTPS
          initialDelaySeconds: 60
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 60

本当に前提になっているのであれば、ダッシュボードが見えないはず。
・・
で、結論としては問題なくダッシュボードが見える。

というわけで、検知が厳しいのかも?と思いました。

ちなみに同Probeを動かしていると以下のエラーがOSから出ていたのでCalico系の問題のようです。ややこしや・・

Jan 28 02:50:56 xx journal: W0128 08:50:56.832694       1 driver-call.go:149] FlexVolume: driver call failed: executable: /usr/libexec/kubernetes/kubelet-plugins/volume/exec/nodeagent~uds/uds, args: [init], error: fork/exec /usr/libexec/kubernetes/kubelet-plugins/volume/exec/nodeagent~uds/uds: no such file or directory, output: ""