Kubernetes高可用架构
Kubenetes 2个高可用核心 apiserver、etcd
- etcd:集群数据中心,需要保持高可用,用于存放集群的配置信息、状态信息及Pod等信息。如果数据丢失集群将无法恢复。
- kube-apiserver:集群核心,需要保持高可用,集群API接口,集群各组件通信的中枢。
- kube-scheduler:Pod调度器,默认kubeadm安装时-leader-elect参数以及设置为true,保证master集群中只有一个kube-scheduler处于活动状态(内部自动选举)。
- kube-controller-manager:资源对象自动化控制器,当资源对象状态与期望不同时,controller manager会努力让集群恢复期望状态,例如:当一个Pod死掉,controller manager会努力新建一个Pod来恢复对应资源期望的状态。默认kubeadm安装情况下-leader-elect参数已经设置为true,保证master集群中只有一个controller-manager处于活动状态。
- kubelet:agent node注册到apiserver,并且定期汇报状态。
- kube-proxy:负责service vip到endpoint pod的流量路由及负载均衡,老版本主要通过设置iptables规则来实现,1.9版本开始基于kube-proxy-lvs来实现。
Join Cluster
当master节点部署成功后,会在屏幕显示出node节点Join到cluster中的 token和ca证书的hash值。如果当时没记可以通过以下步骤来获取:
# kubeadm token create --print-join-command kubeadm join 172.16.65.180:6443 --token se1mdt.qo8fgqz8qz82yiee --discovery-token-ca-cert-hash sha256:d8be590e432beb1529c831ea43800a22a5e9ff5bf9faac27d8003dd52904057f
获取token:
# kubeadm token create 0p9ma2.9gb0cpl4tr2sbmza
获取ca hash:
# openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -pubkey | openssl rsa -pubin -outform DER 2>/dev/null | sha256sum | cut -d' ' -f1 d8be590e432beb1529c831ea43800a22a5e9ff5bf9faac27d8003dd52904057f
参考文档:
https://www.kubernetes.org.cn/3536.html
https://www.kubernetes.org.cn/3808.html
https://www.kubernetes.org.cn/tags/kubeadm