第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

如何使用 golang 客戶端從 Kubernetes 中驅(qū)逐或刪除 Pod

如何使用 golang 客戶端從 Kubernetes 中驅(qū)逐或刪除 Pod

Go
搖曳的薔薇 2022-06-13 16:52:16
我想使用 client-go 包從 Kubernetes 節(jié)點(diǎn)中逐出所有 pod。類似于kubectl drain <Node>。可能會忽略kube-system命名空間 pod。我通過以下方式從節(jié)點(diǎn)獲取了 pod 列表: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        }    }}但我不清楚如何發(fā)送 POST 請求以驅(qū)逐給定節(jié)點(diǎn)實(shí)例上的 pod
查看完整描述

2 回答

?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

要?jiǎng)h除 pod:


err := client.CoreV1().Pods(i.Namespace).Delete(i.Name, metav1.DeleteOptions{})

if err != nil {

  log.Fatal(err)

}

如果您升級client-go到最新版本,您還需要添加上下文作為參數(shù)。


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

if err != nil {

  log.Fatal(err)

}


查看完整回答
反對 回復(fù) 2022-06-13
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

盡管Delete可能大部分時(shí)間都可以工作,但它并不能保證新的 Pod 不會被安排在同一個(gè)節(jié)點(diǎn)上。以下是人們應(yīng)該如何處理這個(gè)問題:


污染節(jié)點(diǎn)并使其不可調(diào)度,以便將該節(jié)點(diǎn)從調(diào)度池中取出。

import (

  "context"


  "k8s.io/client-go/kubernetes"

  meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

)


func CordonNode(client *kubernetes.Clientset, name string) error {

  # Fetch node object

  node, err := client.CoreV1().Nodes().Get(context.TODO(), name, meta_v1.GetOptions{})


  if err != nil {

    return err

  }


  node.Spec.Unschedulable = true


  # Update the node

  _, err = client.CoreV1().Nodes().Update(context.TODO(), node, meta_v1.UpdateOptions{})


  return err

}

現(xiàn)在你有兩個(gè)選擇:

添加NoExecuteon 節(jié)點(diǎn)的 taint,kubelet 會為你從節(jié)點(diǎn)中驅(qū)逐所有工作負(fù)載。但是,容忍這種污點(diǎn)的 pod 仍將繼續(xù)在節(jié)點(diǎn)上運(yùn)行。

import (

  "context"


  "k8s.io/client-go/kubernetes"

  meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

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

)


func TaintNode(client *kubernetes.Clientset, name string) error {

  # Fetch node object

  node, err := client.CoreV1().Nodes().Get(context.TODO(), name, meta_v1.GetOptions{})


  node.Spec.Taints = append(node.Spec.Taints, v1.Taint{

    Key: "someKey"

    Value: "someValue"

    Effect: v1.TaintEffectNoExecute

  })


  # Update the node

  _, err = client.CoreV1().Nodes().Update(context.TODO(), node, meta_v1.UpdateOptions{})


  return err

}


逐個(gè)逐出在該節(jié)點(diǎn)上運(yùn)行的工作負(fù)載 pod。

import (

  "context"


  "k8s.io/client-go/kubernetes"

  meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"

  policy "k8s.io/api/policy/v1beta1"

)


func EvictPod(client *kubernetes.Clientset, name, namespace string) error {

  return client.PolicyV1beta1().Evictions(namespace).Evict(context.TODO(), &policy.Eviction{

        ObjectMeta: meta_v1.ObjectMeta{

            Name:      name,

            Namespace: namespace,

        }

}


查看完整回答
反對 回復(fù) 2022-06-13
  • 2 回答
  • 0 關(guān)注
  • 390 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號