繁体   English   中英

Kubernetes 的高可用性领导者租赁

[英]Kubernetes' High Availability Leader Lease

我有一个关于 Kubernetes 对 kube-controller-manager 和 kube-scheduler 的领导者/追随者租用管理的问题:据我所知,Kubernetes 在kube-system命名空间中将当前领导者作为端点进行kube-system

您可以通过以下方式获得领导者

$ kubectl get endpoints -n kube-system

NAME                      ENDPOINTS                   AGE
kube-controller-manager   <none>                      20m
kube-scheduler            <none>                      20m

然后例如

$ kubectl describe endpoints kube-scheduler -n kube-system

Name:         kube-scheduler
Namespace:    kube-system
Annotations:  control-plane.alpha.kubernetes.io/leader={"holderIdentity":"controller-0", ...}

当前的leader是control-plane.alpha.kubernetes.io/leader注解的holderIdentity

我的问题:

租赁管理像收购租赁,更新租约,生存时间等在实施leaderelection.go上Kubernetes端点上。 是否有特定原因没有直接在 Etcd 上使用“开箱即用”的 Etcd 原语(如 Etcd 的比较和交换操作以及对象上的生存时间)实现租约管理?

编辑

  • 添加 Etcd 比较和交换
  • 添加 Etcd 生存时间

几个原因:

  1. Etcd 可能在 Kubernetes 网络的外部运行,这意味着网络延迟
  2. Etcd 可能很忙/正在加载,因此速度很慢
  3. etcd 集群的节点很可能比 Kubernetes master 少,因此可靠性较低

出于安全原因,只有 API 服务器才能访问 etcd。 请记住,如果按照惯例将 etcd 用于领导者租用,那么使用领导者选举的自定义控制器和操作员也需要访问 etcd,鉴于存储在 etcd 中的数据的重要性,这是不可取的。

参考: https : //kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#securing-etcd-clusters

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM