【k8s】k8s master 节点上组件leader持有者进程
image.png
用kubeadmin 安装的具体3个master节点的k8s集群(master01 master02 master03),可能出现 kube-scheduler 、kube-controller-manager 、etcd 这三个组件的leader 持有者进程分别在不同的master节点吗?
可能会出现kube-scheduler、kube-controller-manager和etcd这三个组件的leader持有者进程分别在不同的master节点上。
因为在Kubernetes中,这些组件的leader选举是动态的,并且会随着时间和集群状态的变化而变化。
如果一个节点符合选举条件,它就有可能被选为leader,并且如果其他节点也符合选举条件,它们也可能会被选为leader。
因此,你的集群中的leader持有者进程可能会在不同的master节点上进行切换。
如在某一时刻,kube-scheduler件leader 持有者进程在master01 、kube-controller-manager件leader 持有者进程在mater02 、etcd 组件leader 持有者进程在master03 ?
是的,这是完全可能的。
在Kubernetes中,kube-scheduler、kube-controller-manager和etcd这三个组件的leader选举是独立的,它们之间没有任何依赖关系。
因此,在某个时刻,kube-scheduler的leader持有者进程可以在master01节点上,kube-controller-manager的leader持有者进程可以在master02节点上,etcd的leader持有者进程可以在master03节点上。
这取决于每个节点是否符合选举条件,以及它们之间的竞争和切换。
如果是这种情况,那么这3个master节点,谁是此时k8s集群真正的主节点?
在Kubernetes中,没有真正的主节点的概念,因为所有的master节点都是平等的,它们共同管理着整个集群。
每个master节点上都运行着kube-scheduler、kube-controller-manager和etcd这三个组件,它们共同协作来管理集群的状态和决策。
如果这三个组件的leader持有者进程分别在不同的master节点上,那么每个节点都会承担一部分管理职责,并且它们之间会进行协调和通信,以确保集群的正常运行。
因此,您不需要关注哪个节点是真正的主节点,而是需要关注整个集群的状态和健康情况。
# kubectl describe endpoints -n kube-system kube-scheduler
Name: kube-scheduler
Namespace: kube-system
Labels: component=kube-scheduler
k8s-app=kube-scheduler
Annotations: control-plane.alpha.kubernetes.io/leader:
{"holderIdentity":"k8s-master02_216f9c60-02b5-4e8c-ada1-e4a4f307fc94","leaseDurationSeconds":15,"acquireTime":"2022-12-05T17:22:54Z","renew...
Subsets:
Addresses: 192.168.32.118,192.168.32.120,192.168.32.184
NotReadyAddresses: <none>
Ports:
Name Port Protocol
---- ---- --------
http-metrics 10251 TCP
Events: <none>
# kubectl describe endpoints -n kube-system kube-controller-manager
Name: kube-controller-manager
Namespace: kube-system
Labels: component=kube-controller-manager
k8s-app=kube-controller-manager
service.kubernetes.io/headless=
Annotations: control-plane.alpha.kubernetes.io/leader:
{"holderIdentity":"k8s-master02_7a9bfa6b-fde8-4f08-aab0-377c686cc9c9","leaseDurationSeconds":15,"acquireTime":"2023-05-06T10:14:30Z","renew...
Subsets:
Addresses: 192.168.32.118,192.168.32.120,192.168.32.184
NotReadyAddresses: <none>
Ports:
Name Port Protocol
---- ---- --------
http-metrics 10252 TCP
Events: <none>
# kubectl get leases -n kube-system
NAME HOLDER AGE
kube-controller-manager k8s-master02_7a9bfa6b-fde8-4f08-aab0-377c686cc9c9 441d
kube-scheduler k8s-master02_216f9c60-02b5-4e8c-ada1-e4a4f307fc94 441d
# etcdctl endpoint status -w table
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
| 192.168.32.118:2379 | 6e09d29c207ffc94 | 3.4.3 | 75 MB | false | false | 31 | 275734053 | 275734053 | |
| 192.168.32.184:2379 | b04d0e2fbb23fcb9 | 3.4.3 | 75 MB | false | false | 31 | 275734053 | 275734053 | |
| 192.168.32.120:2379 | 711b911203cfba91 | 3.4.3 | 75 MB | true | false | 31 | 275734053 | 275734053 | |
+-------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
image.png
参考
Kubernetes集群如何查看scheduler/controller manager谁是leader
https://www.cnblogs.com/apink/p/15684012.html
容器与云原生 / 云原生
https://www.cnblogs.com/liconglong/category/1783881.html