2 回答
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)
}
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,
}
}
- 2 回答
- 0 關(guān)注
- 390 瀏覽
添加回答
舉報(bào)
