k8s之选主机制

1、在 Kubernetes的 kube-controller-manager,kube-scheduler以及底层实现 controller-rumtime 都支持高可用中的leader选举,本文以kube-controller-manager (底层的实现是 client-go) 中的leader选举机制为例进行介绍。

--leader-elect    Default: true        在执行主循环之前,启动领导选举(Leader Election)客户端,并尝试获得领导者身份;
--leader-elect-resource-lock    Default: "leases"     锁定的资源对象的类型,支持的选项为 leases、endpoints和 configmaps;
--leader-elect-resource-name    Default: "kube-controller-manager"    执行锁操作的资源对象名称;
--leader-elect-resource-namespace    Default: "kube-system"    执行锁操作的资源对象的名字空间;
--leader-elect-lease-duration   Default: 15s  领导者节点在被其他候选节点替代之前可以停止的最长时长;
--leader-elect-renew-deadline    Default: 10s    当前leader在被剥夺领导权前可多次尝试续约leader身份,相邻两次尝试之间的间歇时长;
--leader-elect-retry-period    Default: 2s    候选节点尝试获得领导者身份时,客户端在相邻两次尝试之间要等待的时长。


一般通过Annotations(control-plane.alpha.kubernetes.io/leader)来标识被选举为leader;

2、controller-runtime也是基于client-go实现,只是简单地对client-go的封装,源码目录    "sigs.k8s.io/controller-runtime/pkg/leaderelection"

3、kube-controller-manage也是基于client-go实现,client-go源码目录"k8s.io/client-go/tools/leaderelection",需要详细介绍

你可能感兴趣的:(K8S,k8s,选主机制,client-go)