kubernetes

【k8s】k8s master 节点上组件leader持有者进程

2023-05-19  本文已影响0人  Bogon
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

上一篇 下一篇

猜你喜欢

热点阅读