インフラ系SEの技術メモ

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

(Kubernetes)DaemonSetで稼働しているPodを削除せずに一時停止状態にしたい

消すと怖いし

kube-proxyのように重要なPodが落ちたときの挙動を確認しようとしていた時に

# kubectl get ds -n kube-system
NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
calico-node   1         1         1       1            1           kubernetes.io/os=linux   44d
kube-proxy    1         1         1       1            1           kubernetes.io/os=linux   44d

消してしまうとなにかあると怖い・・・。

でもScaleで0とかできないしな~と思っていましたが、いい案がありました。

postStartを入れる

こんな感じでPOSTSTARTを入れました。

    spec:
      containers:
...
        lifecycle:
          postStart:
            exec:
              command:
              - sh
              - -c
              - sleep 60
        name: kube-proxy

すると、Podを削除しても

]# kubectl get pod -n kube-system
NAME                                                                  READY   STATUS              RESTARTS       AGE
kube-proxy-6h5l6                                                      0/1     ContainerCreating   0              25s

すぐに上がってこないという。やったね。