Kubernetes Master Node 优雅滚动替换方案
Kubernetes Master Node部署的都是 控制平面 Control
组件,并不需要处理数据平面 Data
的 南北项、东西项
流量,因此,核心就是在Kubernetes Master各个应用组件的高可用、优雅变更
上
并且Kubernetes Master各个组件,自身设计上,就可以做到存储计算分离
、多实例
实现高可用。
因此,Kubernetes Master Node 扩容
、缩容
、读写分离
、优雅替换版本
等操作流程是一样的。
常规上线Master部署方式
etcd
数据库的高可用性 :etcd
采用3个节点组建集群实现高可用kubernetes master
组件的高可用性 :kube-controller-mansger
和kube-scheduler
组件自身选主
机制已经实现了高可用;kube-apiserver
组件,增加负载均衡器
对其负载均衡即可,并且可水平扩容
etcd 扩容缩容
etcd 可以支持在线动态扩容,无须重启etcd集群
etcd 扩容
etcd集群一般采用3台机器组建集群,作为集群高可用,集群所在的机房也要高可用,通常3台机器分布在两个机房,但假如遇到机房层面的故障,可能会导致etcd集群不能正常工作,基于以上原因,我们需要扩容需要是 2的倍数
进行扩容,包括在集群在多region、多az下是该可用
- etcd 新机器初始化(SSD、kernel优化)等
- 拷贝之前的etcd证书到新机器
- 启动etcd服务 :性能调优之 ETCD
- 通过
etcdctl Member add xxx
方式添加新节点 - 通过
etcdctl Member list
方式添加新节点是否生效(从follow->slave),可提供服务
etcd 缩容
etcd扩容后,希望下线那个节点
- 通过
etcdctl Member remove xxx
方式去掉此节点 - 通过
etcdctl Member list
确认此节点,下线成功
kubernetes master 组件
kubernetes master 扩容
- 拷贝之前的各类证书(apiserver server 证书、etcd client 证书等)到新机器
- 静态pod 启动实例
- 添加apiserver endpoint addr 到 nginx(vip) lb上
kubernetes master 缩容
- 将apiserver endpoint addr 从 nginx lb中去掉
- 查看apiserver流量,并停止静态pod
- 下线集群
「如果这篇文章对你有用,请随意打赏」
FEATURED TAGS
agent
apiserver
application
bandwidth-limit
cgo
cgroupfs
ci/cd
client-go
cloudnative
cncf
cni
community
container
container-network-interface
containerd
controller
coredns
crd
custom-controller
deployment
docker
docker-build
docker-image
drop
ebpf
ecology
egress
etcd
gitee
github
gitlab
golang
governance
hpa
http2
image
ingress
iptables
jobs
kata
kata-runtime
kernel
kind
kubelet
kubenetes
kubernetes
library
linux-os
logging
loki
metrics
monitor
namespace
network
network-troubleshooting
node
nodeport
pingmesh
pod
prestop
prometheus
proxyless
pvc
rollingupdate
schedule
scheduler
serverless
sidecar
sigtrem
systemd
throttling
timeout
tools
traceroute