• 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",需要详细介绍

  • 相关阅读:
    【Java】异常、线程
    VR全景展示的功能有哪些?你了解多少?
    毕业论文中word的使用1-代码域标公式
    (1) 初识QT5
    spring5.3 十一:spring启动过程源码分析
    Spring学习第3篇:Spring容器的基本使用
    使用itextPDF实现PDF电子公章工具类
    OnePose: 无CAD模型的one-shot物体姿态估计(CVPR 2022)
    RTP/RTCP 协议讲解
    代码随想录算法训练营第67天:图论5[1]
  • 原文地址:https://blog.csdn.net/qq_34562093/article/details/126456274