【发布时间】:2018-08-10 18:41:56
【问题描述】:
在实现 k8s 部署自动化的过程中,我正在启动应该自动设置为主节点或简单节点的节点。
这是通过在 k8s 中加入节点并拥有一个仅在具有特定主机名的节点上运行的守护程序集(仅主节点)来实现的,该节点会污染节点,将其标记为主节点并设置 /etc/kubernetes 的内容。
我的问题是,在进行污染和标记之前,从集群的角度来看,节点是一个简单的节点,因此它会在其上启动调度程序想要或看起来合适的任何东西。
这是不可取的,主要是因为它还添加了 kube2iam,它应该只在工作节点上运行。这反过来又会阻止附加到主服务器的 IAM 角色,这会破坏其他事情。
是否有可能强制集群驱逐不应该在 master 上的 pod?
编辑
目前我在脚本末尾执行此操作:
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
但我正在寻找更好的东西。
【问题讨论】:
标签: kubernetes