Kubernetes高可用方案
文章目录
- 一、etcd高可用
- 二、kube-apiserver高可用
- 三、kube-controller-manager与kube-scheduler高可用
- 四、CoreDNS高可用
- Etcd高可用
- kube-apiserver高可用
- kube-controller-manager与kube-scheduler高可用
- CoreDNS高可用
一、etcd高可用
1、尽量单台机器部署etcd(4Cx8G),不与其他应用复用;
2、etcd是一个数据库对磁盘要求比较高,建议数据目录使用ssd;
3、集群模式,至少使用3个或者5个节点
二、kube-apiserver高可用
kube-apiserver高可用就很简单了,kube-apiserver是属于master节点上的组件,kube-apiserver 挂了就可以理解为master故障,master节点扮演着总控中心的角色,通过不断与node工作节点上的kubelet和kube-proxy进行通信来维护整个集群的工作状态。如果master节点故障,将无法使用kubect工具或者api做任何集群管理;
master节点上有kube-apiserver、kube-controller-manager和kube-scheduler,其中kube-controller-manager和kube-scheduler组件自身通过选择机制已经实现了高可用,所以master高可用主要针对kube-apiserver组件,而该组件是以HTTP API提供服务,因此对他高可用于Web服务器类似,增加负载均衡器对其负载即可,并且可水平扩容
具体步骤可参考:https://blog.csdn.net/qq_44930876/article/details/126686599第八部分
三、kube-controller-manager与kube-scheduler高可用
kubernetes已经帮我们实现了kube-controller-manager与kube-scheduler的高可用,我们只需要部署多个kube-controller-manager与kube-scheduler实例即可,这些实例都会像api注册并选举,选举出一个实例做leader来接受请求并处理,其他实例作为备用角色;
kube-controller-manager与kube-scheduler高可用默认已经配置了
--leader-elect=true
四、CoreDNS高可用
coredns并不是master上的一个组件,它是以pod形式进行运行在k8s集群中的,它用svc像集群中的服务提供dns解析,这个dns基本上都会用到,如果coredns出现故障,则会导致业务收到影响,为了避免这个故障,应调整coredns的副本数量,调整为2个或者更多;