《容器云平台的集群高可用安装部署及配置.docx》由会员分享,可在线阅读,更多相关《容器云平台的集群高可用安装部署及配置.docx(44页珍藏版)》请在第壹文秘上搜索。
1、1容器云平台的集群高可用安装部署KUbemeteS(筒称k8s)凭借着其优良的架构灵活的扩展能力,丰富的应用编排模型,成为了容器编排领域的事实标准,也是各大企业进行容器云平台建设的首选技术.无论是在公有云环境使用还是在私有云环境使用,k8s然群的生产商可用是一个不能回避的话超,本章节阐述k8s容涔云平台的高可用部署方式,其核心思想是让k8smaster节点中的各类组件(etcdkube-apiserverkubecontroller-managerkube-scheduler)具备品可用性,不存在组件的单点故障。学习木章节,学员可以掌握k8s环境下如何让各组件组成集群以达到而可用的效果,为k8
2、s在生产的高可用部署实践提供参考和指导。1.1 k8s集群高可用部署说明1.1.1 环境准备要实现k8s亲群的高可用,集群至少需要3节点.本章节以下面的3节点为例进行部署说明.主机名:k8s-l;IP:172.16.90.39主机名:k8s-2;#:172.16.90.40主机名:k8s-3;IP:172,16.90.413节点均为CentOS7麋作系统,建议升级内核到4.4以上,因为CentOS7自带的3.10内核存在一些bug,会导致Docker,Kubernetes运行不稳定,特别是高版本的Docker.Kubernetes(参考节点上需要做如下配百.SSh免密登录,将k8s-l的SSh
3、公钥分发到另外两个节点,ssh-copy-idrootk8s-2各节点上关闭防火墙,Systemctlstopfirewalld&systemctldisablefirewalld各节点上关闭SE1.inux,Setenforce0&sed-i,sSE1.INUX=.SE1.1NUX=disabled/etcseli-nuxconfig1.1.2 部署策略及高可用原理以下部署的KUberneteS版本为1.14.2,etcd的版本为3.3.13。Kubernetes的节点角色分为master和node两种,node节点默认已经有高可用了,因为pod会分配到各个node上,如果有node挂了,k
4、8s就会将node置为NotReady,随后到其他健康的node上新建pod保证副本数为预期状态.因此要实现Kubernetes集群的高可用,实际上是要实现master节点的高可用。master节点上运行了如下组件:etcdkube-apiserverkube-schedulerkube-controller-manager其中,etcd采用以上3节点实现商可用,etcd会保证所有的节点都会保存数据,并保证数据的一致性和正确性,在正常运行的状态下,集群中会有一个leader,其余的节点都是followers.通常情况下,如果是foil。Wer节点宕机,如果剩余可用节点数集超过半数,不影响集群正
5、常工作.如果是leader节点宕机,那么foil。Wer就收不到心跳而超时,发起竞选获得投票,成为新的leader,继续为集舞提供服务.kube-apiserver.kube-scheduler?Qkube-contr。Iler-manager三个组件均以多实例模式运行.kube-apiserver是无状态的,一般可以采用以下两种方式实现高可用:(1)通过配置haproy或ngin等负载均衡器进行代理访问kube-apiserver,从而保证kube-apiserver服务的高可用性,Mproxy或nginx等负或均衡器自身使用keepalived绑定一个vip实现高可用;(2)在每个mast
6、er和node节点配在一个nginx,后端对接多个kube-apiserver实例,nginx对多个kube-apiserver实例做健康检肯和负载均衡,kubelet,kube-proxy,controller-manager,scheduler组件通过本地的nginx访问kube-apiserver,从而实现kube-apiserver的高可用.本堂节以第二种方式为例来介绍k8s集群的高可用部署.kube-scheduler和kube-ContrOller-manager1是有状态的服务,多个实例会通过向apiserver中的endpoint加锁的方式来选举产生一个Ieader实例,其它实
7、例处于阻塞模式,当Ieader挂了后,会重新选举产生新的leader,从而保证服务的可用性.因此这两个组件采用多实例部署即可实现高可用.1.2 etcd蛆件的高可用部署1.2.1 创建CA自签名根证书Kubernetes系统各组件需要使用509证书对通信进行加密和认证.本章节在部署各组件前,需要创建CA自签名根证书,用来给后续创建的其他组件证书迸行签发.0创建相应的工作目录mkdir-poptk8sbi&mkdir-poptk8scrt0安装CfSSI工具wgt-Ooptk8sbicfsslhttps:/pkg.cfssl.Org/R1.2/cfssl_linux-amd64Wget-Oopt
8、k8sticfssljshttps:/pkg.cfssl.org/R1.2cfssljsJinux-amd64n添加执行权限及配置PATHChmod+xoptk8sbl*echo,PATH=optk8sbinSPATHrt.bashrcsourcert,basrc#创建根证书配置文件catca-cong.jsoca-csr.jsoetcd-csr.jsg=ca-cong.jso-profIe=Rubernetesetcd-csr.jsoICfssljson-bareetcd该命令会生成3个文件etcd.pem(etcd使用的证书)etcd-key.pem(etcd的私钥)etcd.csr(et
9、cd的证书签名请求文件)将etcd.pem及etcd-key.pem拷贝到所有节点的etcetcdcert目录下,若没有该目录需创建.1.2.3创建etcd的systemdunit文件catetcd-k8s-l.svce0F(Unit)Descripion三EtcdServerAfter=network,targetAfter=ntwork-oli.targ9tWantS=network-OnSne.targetDocumetatio=httpsgithub.corcorosServiceType=tifyWockigDirectory=datak8stcddataExcStart=optk8
10、sbnetcddata-iir=datak8se-tcetcdcftetcdpom-poor-koy-te三0(cetcdoeftetc-kGy.pm-pr-trustd-ca-to=tck8sce11ca.pm-poor-dient-cert-ahcfint-cert-autfisten-peer-urts=ttps:/172.16.90.39:2300WTnrtiakOdwtiSo-PoOf-Vrhttp517216.90392380W一向ten-cfenJ-IJrIjhnps17216.90.392379,http:/127.0.0.1:2379Wae11ise-cfent-r1s三h!tp17216.90.39;2379-ifitiaHAjstef-tok(U6tod-cbster-OWM*CkjSter=k&s-l=ttpc172.16.90J923OX3-2=ttp:/172.1690.40:2330.k8s-