Как выселить или удалить поды из Kubernetes с помощью клиента golang - PullRequest
1 голос
/ 08 июля 2020

Я хочу удалить все поды с узла Kubernetes с помощью пакета client- go. Аналогично kubectl drain <Node>. Возможно игнорирование модулей пространства имен kube-system.

Я получил список модулей с узла:

func evictNodePods(nodeInstance string, client *kubernetes.Clientset) {

    pods, err := client.CoreV1().Pods("").List(metav1.ListOptions{
        FieldSelector: "spec.nodeName=" + nodeInstance,
    })

    if err != nil {
        log.Fatal(err)
    }
    for _, i := range pods.Items {
        if i.Namespace == "kube-system" {
            continue
        } else {
            //evict
        }
    }
}

Но я не понимаю, как отправить запрос POST для выселения модули на данном экземпляре узла

1 Ответ

2 голосов
/ 09 июля 2020

Чтобы удалить модуль:

err := client.CoreV1().Pods(i.Namespace).Delete(i.Name, metav1.DeleteOptions{})
if err != nil {
  log.Fatal(err)
}

Если вы обновляете client-go до последних версий, вам также необходимо добавить context в качестве параметра.

err := client.CoreV1().Pods(i.Namespace).Delete(context.TODO(), i.Name, metav1.DeleteOptions{})
if err != nil {
  log.Fatal(err)
}
...