在寻求使k8s部署自动化的过程中,我正在启动应该自动设置为主节点或简单节点的节点。
这是通过在k8s中加入节点并具有仅在具有特定主机名的节点(仅主节点)上运行的守护程序来完成的,该节点污点了该节点,将其标记为主节点并设置了/ etc / kubernetes的内容。
我的问题是,在进行污点和标记之前,从集群的角度来看,该节点是一个简单的节点,因此它将在调度程序希望或看起来合适的任何对象上启动。
这是不希望的,主要是因为它还添加了kube2iam,它只能在工作节点上运行。反过来,这会阻止附加到主服务器的IAM角色,从而破坏其他功能。
是否有可能迫使集群将原本不应该位于主机上的吊舱逐出?
EDIT
当前,我正在脚本末尾执行此操作:
K8S_NAME=$(kubectl get nodes -l kubernetes.io/hostname=$(hostname) --no-headers --output=custom-columns=NAME:.metadata.name)
kubectl get pods --all-namespaces --field-selector spec.nodeName=$K8S_NAME --no-headers | gawk '{print "-n "$1" "$2}' | xargs -n 3 kubectl delete pod
但是我正在寻找更好的东西。
答案 0 :(得分:1)
您可以运行kubectl drain
命令并使用所有其他选项指定节点名称,这将更加简单。