K8S( Kubernetes)基础组件及高可用实现方式
一、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的地址。
############Master 高可用的两种方式################
1,Master 的节点堆叠方式,也是Kubenetes的默认方式
2,独立部署etcd集群方式
#Master高可用集群(堆叠式etcd数据存储服务)
#堆叠式集群拓扑
独立部署etcd集群方式:
本文来自博客园,作者:一念6,转载请注明原文链接:https://www.cnblogs.com/zeng666/p/16622621.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!