インフラ系SEの技術メモ

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

(Kubernetes)PodがrestartしすぎてYou have reached your pull rate limitになっていた

Podがリスタートしまくりで・・・

Podが異常終了しているので見に行くと以下のような状態でした。

# kubectl get pod -n kubernetes-dashboard
NAME                                         READY   STATUS    RESTARTS          AGE
dashboard-metrics-scraper-xx-77bs4   1/1     Running   0                 24h
kubernetes-dashboard-xx-nlzqh        1/1     Running   364 (5m21s ago)   23h

で、その状況を調査すると以下のようにコンテナイメージのPullでこけていました。

Events:
  Type     Reason     Age                     From     Message
  ----     ------     ----                    ----     -------
  Warning  Unhealthy  27m (x1072 over 23h)    kubelet  Liveness probe failed: Get "https://172.16.156.X:8443/": dial tcp 172.16.156.X:8443: connect: connection refused
  Warning  Failed     12m (x57 over 18h)      kubelet  Failed to pull image "kubernetesui/dashboard:v2.4.0": rpc error: code = Unknown desc = toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
  Normal   Pulling    7m46s (x420 over 23h)   kubelet  Pulling image "kubernetesui/dashboard:v2.4.0"
  Warning  BackOff    2m41s (x4890 over 23h)  kubelet  Back-off restarting failed container

対応策

というわけでimagePullPolicyでAlwaysになっていた部分をNeverに変更。

    spec:
      containers:
      - args:
        - --insecure-port=9090
        - --namespace=kubernetes-dashboard
        image: kubernetesui/dashboard:v2.4.0
        imagePullPolicy: Never

そうすると安定的に動きました。