K8S基础组件及高可用实现方式

本文详细介绍了Kubernetes(K8S)的主要组件,包括Master节点上的kube-apiserver、kube-controller-manager、kube-scheduler以及etcd,以及Node节点上的Kubelet和Kube-proxy。对于K8S的高可用性,重点讨论了Master节点的高可用实现,特别是如何通过负载均衡和集群化确保kube-apiserver的高可用。总结了各组件的高可用策略,指出除kube-apiserver外,其他组件已自动实现高可用,而kube-apiserver则可通过四层或七层代理实现负载均衡。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、K8S主要组件

Master节点:
kube-apiserver: k8s集群的统一入口,各个组件信息交互都要通过它。以HTTP API提供接口服务,所有对象资源的增删改查和监听操作都交给APIServer处理后再提交给Etcd存储。
kube-controller-manager:处理集群中常规后台任务,维持副本期望数目。一个资源对应一个控制器,而ControllerManager就是负责管理这些控制器的。
kube-scheduler:k8s集群的调度器,根据调度算法为Pod选择Node工作节点。
etcd:分布式键值存储系统,用于保持集群状态,持久化存储k8s集群所有重要信息。可以放在k8s集群内,也可以放在集群外,建议放在集群内方便管理。

Node节点
Kubelet:是Master在Node节点上的Agent,直接与容器引擎交互,管理本机运行容器的生命周期,比如创建容器、挂载数据卷、获取容器和节点状态等。kubelet将每个Pod转换成一组组容器。
Kube-proxy:实现Pod网络代理,维护网络规则,写入规则至IPTABLES、IPVS。负责Pod之间的通信和负载均衡,将指定的流量分发到后端正确的机器上。

二、K8S集群实现高可用

k8s的高可用,主要是实现Master节点的高可用。那么我们看看各个组件是如何解决高可用的。

Kubelet、Kube-proxy:只工作在当前Node节点上,无需高可用。
etcd:etcd如果是放在集群内部的,在kubeadm1.5之后,对于多Master集群,一个Master节点加入集群后将自动实现集群化扩展。所以集群已经自动实现高可用,无需再人工干预。
kube-controller-manager:对于多Master集群,这个组件只会有一个正常工作,其它处于休眠挂起状态。当工作节点发生故障时才会唤醒另一个接管。所以集群已经自动实现高可用,无需再人工干预。
kube-scheduler:与kube-controller-manager情况一样,集群已经自动实现高可用,无需再人工干预。
kube-apiserver:每个Master节点的kube-apiserver都是独立的,没有竞争关系,访问哪个节点效果都是一样的。

综上所述,只有kube-apiserver需要人工解决。解决方案也很简单,既然APIServer以HTTP API提供接口服务,就可以使用常规的四层或七层的代理实现高可用和负载均衡,如使用Nigix、HAProxy等代理服务器。并且可以更进一步,使用vip和keepalive实现,代理服务器的高可用。然后将集群的访问地址从APIServer的地址改为vip的地址。

                                                                                                                2022年五一劳动节于北京

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值