根据我对 Kubernetes 的了解,如果 master(s) 死了,worker 应该仍然能够正常工作(https://stackoverflow.com/a/39173007/281469),尽管不会发生新的调度。
但是,我发现当 master 也可以调度 worker pod 时,情况并非如此。以一个 2 节点集群为例,其中一个节点是主节点,另一个节点是工作节点,并且主节点已移除污点:
如果我关闭 master 并docker exec
进入 worker 上的一个容器,我可以看到:
nc -zv ip-of-pod 80
成功,但是
nc -zv ip-of-service 80
一半的时间失败。Kubernetes 版本为 v1.15.10,kube-proxy 使用 iptables 模式。
我猜测由于工作节点上的 kube-proxy 无法连接到 apiserver,它不会从 iptables 规则中删除主节点。
问题:
- kube-proxy 不会停止路由到主节点上的 pod 是预期的行为,还是有什么“坏的”?
- 是否有任何变通办法可用于这种设置以允许工作节点仍然正常运行?
我意识到最好的办法是分离 CP 节点,但这对于我目前正在做的事情是不可行的。