gpt4 book ai didi

如果我关闭其中一个主节点,Kubernetes 节点将获得状态 "NotReady"

转载 作者:行者123 更新时间:2023-12-02 12:11:26 27 4
gpt4 key购买 nike

我在 CentOS7 上的 VM cloude 中有一个由 3 个主节点和 2 个节点组成的 Kubernetes 集群:

[root@kbn-mst-02 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kbn-mst-01 Ready master 15d v1.18.3
kbn-mst-02 Ready master 14d v1.18.3
kbn-mst-03 Ready master 14d v1.18.3
kbn-wn-01 Ready <none> 25h v1.18.5
kbn-wn-02 Ready <none> 150m v1.18.5
如果我关闭 kbn-mst-03 (212.46.30.7),那么 kbn-wn-01 和 kbn-wn-02 将获得状态 NotReady :
[root@kbn-mst-02 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kbn-mst-01 Ready master 15d v1.18.3
kbn-mst-02 Ready master 14d v1.18.3
kbn-mst-03 NotReady master 14d v1.18.3
kbn-wn-01 NotReady <none> 25h v1.18.5
kbn-wn-02 NotReady <none> 154m v1.18.5
kbn-wn-02 上的日志显示与 212.46.30.7 的连接丢失:
Jul  3 09:28:10 kbn-wn-02 kubelet: E0703 09:28:10.295233   12339 kubelet_node_status.go:402] Error updating node status, will retry: error getting node "kbn-wn-02": Get https://212.46.30.7:6443/api/v1/nodes/kbn-wn-02?resourceVersion=0&timeout=10s: context deadline exceede
关闭其他主节点不会改变节点的状态。
为什么 kbn-wn-02硬绑定(bind)到 kbn-mst-03 (212.46.30.7)我该如何改变它?

最佳答案

目前你的工作节点只知道 kbn-mst-03主节点,当该主节点关闭时,工作节点上的 kubelet 无法将工作节点的健康状态和指标发送到主节点 kbn-mst-03 and hence you see worker nodes as未就绪`。这也是为什么关闭其他master并不会改变节点状态的原因,因为它们根本不被工作节点的kubelet知道和联系。
您应该在主节点前面使用负载均衡器,并在创建工作节点时使用负载均衡器端点。然后,如果一个主节点关闭,其他主节点将能够处理请求,因为负载均衡器将停止向故障主节点发送流量并将流量路由到其他主节点。
如何将硬绑定(bind)更改为一个主节点并转而使用负载均衡器端点,这取决于您用于设置 kubernetes 集群的工具。如果您使用的是 kubeadm,那么您可以在 kubeadm init 中指定负载均衡器端点在主节点中并在 kubeadm join 中使用该端点在工作节点中。
来自 kubeadm 文档 here

--control-plane-endpoint can be used to set the shared endpoint for all control-plane nodes.

--control-plane-endpoint allows both IP addresses and DNS names that can map to IP addresses. Please contact your network administrator toevaluate possible solutions with respect to such mapping.

Here is an example mapping:

192.168.0.102 cluster-endpoint


Where 192.168.0.102 is the IP address of this node and cluster-endpoint is a custom DNS name that maps tothis IP. This will allow you to pass--control-plane-endpoint=cluster-endpoint to kubeadm init and pass the same DNS name to kubeadm join. Later you can modify cluster-endpointto point to the address of your load-balancer in an high availabilityscenario.

关于如果我关闭其中一个主节点,Kubernetes 节点将获得状态 "NotReady",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62711615/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com