亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 client-go 重啟 StatefulSet 的特定 Pod?

如何使用 client-go 重啟 StatefulSet 的特定 Pod?

Go
汪汪一只貓 2023-08-14 17:35:31
我的做法是:func restartPod(meta metav1.ObjectMeta, kubeClient kubernetes.Interface) error {    err := kubeClient.CoreV1().Pods(meta.Namespace).Delete(meta.Name, deleteInForeground())    if err != nil {        return err    }    //time.Sleep(2 * time.Second)    return wait.PollImmediate(5*time.Second, 5*time.Minute, func() (done bool, err error) {        pod, err := kubeClient.CoreV1().Pods(meta.Namespace).Get(meta.Name, metav1.GetOptions{})        if err != nil {            return false, nil        }        return pod.Status.Phase == v1.PodRunning && pod.Status.ContainerStatuses[0].Ready, nil    })}它不起作用,因為 pod 的刪除是非阻塞的,意味著它不會等待 pod 被刪除。因此Getpod 方法返回處于運行狀態的 pod。如果我sleep在 pod 刪除后使用幾秒鐘,那么它就可以正常工作。有沒有更好的方法來做到這一點而不使用sleep?
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

在每個對象的元數據中,名為 的字段中都有 UUID?uid。您可以進行比較并等待,直到 Pod 就緒具有不同的 UUID。

查看完整回答
反對 回復 2023-08-14
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

import corev1 "k8s.io/api/core/v1"


// RestartPod deletes a pod marked by a given label

// it then waits for a given timeout for the pod to resume running state

func RestartPod(c *client.ClientSet, label string, timeout time.Duration) error {

    pod, err := GetPodByLabel(label)

    if err != nil {

        return err

    }

    podUid := pod.UID

    err = c.Pods(pod.Namespace).Delete(context.Background(), pod.Name, metav1.DeleteOptions{})

    if err != nil {

        return err

    }


    return wait.PollImmediate(5*time.Second, timeout, func() (done bool, err error) {

        pod, err := GetPodByLabel(label)

        if pod.UID != podUid && err != nil {

            return false, nil

        }

        return pod.Status.Phase == corev1.PodRunning && pod.Status.ContainerStatuses[0].Ready, nil

    })

}


查看完整回答
反對 回復 2023-08-14
  • 2 回答
  • 0 關注
  • 243 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號