版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1容器云平臺的集群高可用安裝部署Kubernetes(簡稱k8s)憑借著其優(yōu)良的架構(gòu),靈活的擴(kuò)展能力,豐富的應(yīng)用編排模型,成為了容器編排領(lǐng)域的事實(shí)標(biāo)準(zhǔn),也是各大企業(yè)進(jìn)行容器云平臺建設(shè)的首選技術(shù)。無論是在公有云環(huán)境使用還是在私有云環(huán)境使用,k8s集群的生產(chǎn)高可用是一個不能回避的話題。本章節(jié)闡述了k8s容器云平臺的高可用部署方式,其核心思想是讓k8smaster節(jié)點(diǎn)中的各類組件(etcd/kube-apiserver/kube-controller-man-ager/kube-scheduler)具備高可用性,不存在組件的單點(diǎn)故障。學(xué)習(xí)本章節(jié),學(xué)員可以掌握k8s環(huán)境下如何讓各組件組成集群以達(dá)到高可用的效果,為k8s在生產(chǎn)的高可用部署實(shí)踐提供參考和指導(dǎo)。1.1k8s集群高可用部署說明1.1.1環(huán)境準(zhǔn)備要實(shí)現(xiàn)k8s集群的高可用,集群至少需要3節(jié)點(diǎn)。本章節(jié)以下面的3節(jié)點(diǎn)為例進(jìn)行部署說明。主機(jī)名:k8s-1;IP:9主機(jī)名:k8s-2;IP:0主機(jī)名:k8s-3;IP:13節(jié)點(diǎn)均為CentOS7操作系統(tǒng),建議升級內(nèi)核到4.4以上,因?yàn)镃entOS7自帶的3.10內(nèi)核存在一些bug,會導(dǎo)致Docker,Kubernetes運(yùn)行不穩(wěn)定,特別是高版本的Docker、Kubernetes(參考/kubernetes/kubernetes/issues/61937)。節(jié)點(diǎn)上需要做如下配置。ssh免密登錄,將k8s-1的ssh公鑰分發(fā)到另外兩個節(jié)點(diǎn),ssh-copy-idroot@k8s-2各節(jié)點(diǎn)上關(guān)閉防火墻,systemctlstopfirewalld&&systemctldisablefirewalld各節(jié)點(diǎn)上關(guān)閉SELinux,setenforce0&&sed-i's/^SELINUX=.*/SELINUX=disabled/'/etc/seli-nux/config1.1.2部署策略及高可用原理以下部署的Kubernetes版本為1.14.2,etcd的版本為3.3.13。Kubernetes的節(jié)點(diǎn)角色分為master和node兩種,node節(jié)點(diǎn)默認(rèn)已經(jīng)有高可用了,因?yàn)閜od會分配到各個node上,如果有node掛了,k8s就會將node置為NotReady,隨后到其他健康的node上新建pod,保證副本數(shù)為預(yù)期狀態(tài)。因此要實(shí)現(xiàn)Kubernetes集群的高可用,實(shí)際上是要實(shí)現(xiàn)master節(jié)點(diǎn)的高可用。master節(jié)點(diǎn)上運(yùn)行了如下組件:etcdkube-apiserverkube-schedulerkube-controller-manager其中,etcd采用以上3節(jié)點(diǎn)實(shí)現(xiàn)高可用,etcd會保證所有的節(jié)點(diǎn)都會保存數(shù)據(jù),并保證數(shù)據(jù)的一致性和正確性,在正常運(yùn)行的狀態(tài)下,集群中會有一個leader,其余的節(jié)點(diǎn)都是followers。通常情況下,如果是follower節(jié)點(diǎn)宕機(jī),如果剩余可用節(jié)點(diǎn)數(shù)量超過半數(shù),不影響集群正常工作。如果是leader節(jié)點(diǎn)宕機(jī),那么follower就收不到心跳而超時(shí),發(fā)起競選獲得投票,成為新的leader,繼續(xù)為集群提供服務(wù)。kube-apiserver、kube-scheduler和kube-controller-manager三個組件均以多實(shí)例模式運(yùn)行。kube-apiserver是無狀態(tài)的,一般可以采用以下兩種方式實(shí)現(xiàn)高可用:(1)通過配置haproxy或nginx等負(fù)載均衡器進(jìn)行代理訪問kube-apiserver,從而保證kube-apiserver服務(wù)的高可用性,haproxy或nginx等負(fù)載均衡器自身使用keepalived綁定一個vip實(shí)現(xiàn)高可用;(2)在每個master和node節(jié)點(diǎn)配置一個nginx,后端對接多個kube-apiserver實(shí)例,nginx對多個kube-apiserver實(shí)例做健康檢查和負(fù)載均衡,kubelet、kube-proxy、controller-manager、scheduler組件通過本地的nginx訪問kube-apiserver,從而實(shí)現(xiàn)kube-apiserver的高可用。本章節(jié)以第二種方式為例來介紹k8s集群的高可用部署。kube-scheduler和kube-controller-manager是有狀態(tài)的服務(wù),多個實(shí)例會通過向apiserver中的endpoint加鎖的方式來選舉產(chǎn)生一個leader實(shí)例,其它實(shí)例處于阻塞模式,當(dāng)leader掛了后,會重新選舉產(chǎn)生新的leader,從而保證服務(wù)的可用性。因此這兩個組件采用多實(shí)例部署即可實(shí)現(xiàn)高可用。1.2
etcd組件的高可用部署1.2.1創(chuàng)建CA自簽名根證書Kubernetes系統(tǒng)各組件需要使用x509證書對通信進(jìn)行加密和認(rèn)證。本章節(jié)在部署各組件前,需要創(chuàng)建CA自簽名根證書,用來給后續(xù)創(chuàng)建的其他組件證書進(jìn)行簽發(fā)。會生成3個文件ca.pemca-key.pemca.csr將CA證書(ca.pem)、CA私鑰(ca-key.pem)及CA配置文件(ca-config.json)拷貝到所有節(jié)點(diǎn)的/etc/k8s/cert目錄下,若沒有該目錄需創(chuàng)建1.2.2下載etcd及創(chuàng)建etcd證書私鑰在/etcd-io/etcd/releases下載etcd的安裝包。這里下載3.3.13版本的etcd。將解壓得到的文件夾中的二進(jìn)制可執(zhí)行文件etcd及etcdctl拷貝到三個節(jié)點(diǎn)的/opt/k8s/bin目錄下,并賦予執(zhí)行權(quán)限。使用前一步創(chuàng)建的CA證書,來簽發(fā)etcd集群各節(jié)點(diǎn)使用的x509證書,用于加密客戶端與etcd集群、etcd集群之間的數(shù)據(jù)通信。該命令會生成3個文件etcd.pem(etcd使用的證書)etcd-key.pem(etcd的私鑰)etcd.csr(etcd的證書簽名請求文件)將etcd.pem及etcd-key.pem拷貝到所有節(jié)點(diǎn)的/etc/etcd/cert/目錄下,若沒有該目錄需創(chuàng)建。1.2.3創(chuàng)建etcd的systemdunit文件注意,以上文件是k8s-1節(jié)點(diǎn)上使用的etcdservice文件,另外兩個節(jié)點(diǎn)需要把以上文件中的紅色部分替換為自身節(jié)點(diǎn)的主機(jī)名或IP。按照以上內(nèi)容創(chuàng)建好3個節(jié)點(diǎn)的etcdservice文件后,將文件拷貝并重命名為相應(yīng)節(jié)點(diǎn)的/etc/systemd/system/etcd.service文件。1.2.4各節(jié)點(diǎn)啟動etcd服務(wù)分別登錄到各節(jié)點(diǎn),執(zhí)行如下命令。1.2.5驗(yàn)證服務(wù)狀態(tài)分別在各節(jié)點(diǎn)執(zhí)行如下命令,endpoints中的IP需要替換為實(shí)際節(jié)點(diǎn)的IP。若集群服務(wù)狀態(tài)正常,則會分別輸出如下結(jié)果:查看集群當(dāng)前的leader。輸出如下,顯示第3個節(jié)點(diǎn)為leader。1.3kube-apiserver組件的高可用部署1.3.1各節(jié)點(diǎn)部署nginx代理通過在各節(jié)點(diǎn)部署nginx,讓k8s組件通過本地nginx訪問kube-apiserver,實(shí)現(xiàn)kube-apiserver的高可用。如果有yum源可以使用(如公網(wǎng)yum源),nginx可以使用yum安裝,較為方便。也可以下載源碼進(jìn)行編譯安裝,這里以源碼編譯安裝進(jìn)行說明。然后將nginx可執(zhí)行文件拷貝到3個節(jié)點(diǎn)上,并配置systemdunit文件來管理nginx服務(wù)。然后將上面編譯生成的nginx-prefix/sbin/nginx可執(zhí)行文件分別拷貝到3個節(jié)點(diǎn)的/opt/k8s/kube-ng-inx/sbin/下,并重命名為kube-nginx,并賦予可執(zhí)行權(quán)限。將該配置文件分別拷貝到3個節(jié)點(diǎn)的/opt/k8s/kube-nginx/conf/目錄下。然后將該文件拷貝到3個節(jié)點(diǎn)的/etc/systemd/system/目錄下1.3.2下載kubernetes-server文件包解壓后得到文件夾kubernetes,將kubernetes/server/bin/下面的所有可執(zhí)行文件分別拷貝到3個節(jié)點(diǎn)的/opt/k8s/bin/目錄下,并賦予可執(zhí)行權(quán)限。1.3.3創(chuàng)建kubernetes證書和私鑰該命令會生成3個文件kubernetes.pem(kubernetes使用的證書)kubernetes-key.pem(kubernetes的私鑰)kubernetes.csr(kubernetes的證書簽名請求文件)將kubernetes.pem及kubernetes-key.pem拷貝到所有節(jié)點(diǎn)的/etc/kubernetes/cert/目錄下,若沒有該目錄需創(chuàng)建。1.3.4創(chuàng)建EncryptionConfig文件將encryption-config.yaml拷貝到所有節(jié)點(diǎn)的/etc/kubernetes/目錄下。1.3.5創(chuàng)建Policy文件將audit-policy.yaml文件拷貝到所有節(jié)點(diǎn)的/etc/kubernetes/目錄下。1.3.6創(chuàng)建kube-apiserversystemdunit文件注意,以上文件是k8s-1節(jié)點(diǎn)上使用的kube-apiserver.service文件,另外兩個節(jié)點(diǎn)需要把以上文件中的紅色部分替換為自身節(jié)點(diǎn)的IP。按照以上內(nèi)容創(chuàng)建好3個節(jié)點(diǎn)的kube-apiserverservice文件后,將文件分別拷貝到3個對應(yīng)節(jié)點(diǎn)上,并重命名為/etc/systemd/system/kube-apiserver.service文件。1.3.7啟動kube-apiserver服務(wù)在3個節(jié)點(diǎn)上啟動kube-apiserver服務(wù)。分別在3個節(jié)點(diǎn)上執(zhí)行如下操作。1.3.8驗(yàn)證服務(wù)狀態(tài)1.3.9查看集群信息任意節(jié)點(diǎn)執(zhí)行kubectlcluster-info可查看集群信息。1.4kube-controller-manager組件的高可用部署1.4.1創(chuàng)建kube-controller-manager證書和私鑰創(chuàng)建kube-controller-manager服務(wù)使用的證書和私鑰,用于跟kube-apiserver的安全端口通信。該命令會生成3個文件kube-controller-manager.pem(kube-controller-manager使用的證書)kube-controller-manager-key.pem(kube-controller-manager的私鑰)kube-controller-manager.csr(kube-controller-manager的證書簽名請求文件)將kube-controller-manager.pem及kube-controller-manager-key.pem拷貝到所有節(jié)點(diǎn)的/etc/kubernetes/cert/目錄下。1.4.2創(chuàng)建kube-controller-manager使用的kubeconfig文件kube-controller-manager使用kubeconfig文件訪問kube-apiserver。以上命令會在當(dāng)前目錄下生成kube-controller-manager.kubeconfig文件,并進(jìn)行相關(guān)配置。執(zhí)行完成后,將該文件拷貝到3個節(jié)點(diǎn)的/etc/kubernetes/目錄下。1.4.3創(chuàng)建kube-controller-managersystemdunit文件注意,以上文件是k8s-1節(jié)點(diǎn)上使用的kube-controller-manager.service文件,另外兩個節(jié)點(diǎn)需要把以上文件中的紅色部分替換為自身節(jié)點(diǎn)的IP。按照以上內(nèi)容創(chuàng)建好3個節(jié)點(diǎn)的kube-controller-managerservice文件后,將對應(yīng)文件分別拷貝到3個對應(yīng)節(jié)點(diǎn)上,并命名為/etc/systemd/system/kube-controller-manager.service1.4.4啟動kube-controller-manager服務(wù)在3個節(jié)點(diǎn)上啟動kube-controller-manager服務(wù)。分別在3個節(jié)點(diǎn)上執(zhí)行如下操作。1.4.5驗(yàn)證服務(wù)狀態(tài)會顯示集群的leader信息1.5kube-scheduler組件的高可用部署1.5.1創(chuàng)建kube-scheduler證書和私鑰創(chuàng)建kube-scheduler服務(wù)使用的證書和私鑰,用于跟kube-apiserver的安全端口通信。該命令會生成3個文件kube-scheduler.pem(kube-scheduler使用的證書)kube-scheduler-key.pem(kube-scheduler的私鑰)kube-scheduler.csr(kube-scheduler的證書簽名請求文件)將kube-scheduler.pem及kube-scheduler-key.pem拷貝到所有節(jié)點(diǎn)的/etc/kubernetes/cert/目錄下。1.5.2創(chuàng)建kube-scheduler使用的kubeconfig文件kube-scheduler使用kubeconfig文件訪問kube-apiserver。以上命令會在當(dāng)前目錄下生成kube-scheduler.kubeconfig文件,并進(jìn)行相關(guān)配置。執(zhí)行完成后,將該文件拷貝到3個節(jié)點(diǎn)的/etc/kubernetes/目錄下。1.5.3創(chuàng)建kube-scheduler配置文件注意,以上文件是k8s-1節(jié)點(diǎn)上使用的kube-scheduler配置文件,另外兩個節(jié)點(diǎn)上的配置文件需要把以上文件中的紅色部分替換為自身節(jié)點(diǎn)的IP。按照以上內(nèi)容創(chuàng)建好3個節(jié)點(diǎn)的kube-scheduler配置文件后,將文件分別拷貝為3個對應(yīng)節(jié)點(diǎn)的/etc/kubernetes/kube-scheduler.yaml文件。1.5.4創(chuàng)建kube-schedulersystemdunit文件注意,以上文件是k8s-1節(jié)點(diǎn)上使用的kube-scheduler.service文件,另外兩個節(jié)點(diǎn)需要把以上文件中的紅色部分替換為自身節(jié)點(diǎn)的IP。按照以上內(nèi)容創(chuàng)建好3個節(jié)點(diǎn)的kube-schedulerservice文件后,將對應(yīng)文件分別拷貝到3個對應(yīng)節(jié)點(diǎn)上,并命名為/etc/systemd/system/kube-scheduler.service文件。1.5.5啟動kube-scheduler服務(wù)在3個節(jié)點(diǎn)上啟動kube-scheduler服務(wù)。分別在3個節(jié)點(diǎn)上執(zhí)行如下操作。1.5.6驗(yàn)證服務(wù)狀態(tài)會顯示集群的leader信息1.6本章小結(jié)本章介紹了k8s容器云平臺集群的高可用安裝部署步驟。k8s集群高可用的關(guān)鍵在于master節(jié)點(diǎn)各組件的高可用,最重要的是kube-apiserver組件的高可用實(shí)現(xiàn)。本章內(nèi)容將k8s各組件采用systemd服務(wù)進(jìn)行管理,并以k8s各節(jié)點(diǎn)部署nginx反向代理來訪問多個apiserver實(shí)例的方式來說明了apiserver的高可用實(shí)現(xiàn)方式。
對于集群的其他組件,例如master節(jié)點(diǎn)上的kube-controller-manager及kube-scheduler也是多實(shí)例部署,配置訪問本地的nginx代理來訪問apiserver,并通過選舉的方式實(shí)現(xiàn)組件單活高可用。對于node節(jié)點(diǎn)上的組件,kubelet及kube-proxy在部署時(shí),也需要通過本地的nginx代理來訪問apiserver,從而保證apiserver的高可用。通過本章節(jié)的學(xué)習(xí),可以幫助讀者了解k8s集群的高可用實(shí)現(xiàn)方式及各組件的配置原理,為學(xué)習(xí)k8s及實(shí)踐提供參考指導(dǎo)。2基于Docker網(wǎng)絡(luò)基礎(chǔ)和實(shí)現(xiàn)原理通過上面的學(xué)習(xí),我們掌握了從無到有的配置一個適合于個人學(xué)習(xí)、實(shí)踐的高可用的容器云平臺的方式。
但對于企業(yè)級的容器云平臺來說,我們考慮的內(nèi)容要更多,這里基于紅帽的OpenShift企業(yè)級容器云平臺,來介紹對于一個企業(yè)級的容器云平臺來說,該考慮哪些多層次的高可用性設(shè)計(jì),使平臺不存在單點(diǎn)故障,保證客戶業(yè)務(wù)的安全和穩(wěn)定:1)容器的故障恢復(fù)當(dāng)服務(wù)器宕機(jī)時(shí),平臺系統(tǒng)會自動在其它服務(wù)器上重新啟動容器并為其分配資源,從而達(dá)到秒級啟動,恢復(fù)業(yè)務(wù)。保障業(yè)務(wù)不掉線,高可靠運(yùn)行。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理智能化系統(tǒng)設(shè)計(jì)與實(shí)施推廣
- 移動通信網(wǎng)絡(luò)優(yōu)化與管理手冊
- 旅游企業(yè)在線旅游服務(wù)平臺開發(fā)方案
- 快遞配送流程優(yōu)化實(shí)踐
- 可穿戴設(shè)備研發(fā)及生產(chǎn)合作協(xié)議
- 農(nóng)產(chǎn)品質(zhì)量保證合同
- 汽車維修業(yè)智能維修管理系統(tǒng)建設(shè)
- 農(nóng)業(yè)智能化裝備與設(shè)施研發(fā)方案
- 醫(yī)療器械生產(chǎn)加工合作協(xié)議
- 樹苗栽培承包合同
- 研究生英語閱讀教程(基礎(chǔ)級)第三版-課后習(xí)題答案
- 【高等數(shù)學(xué)練習(xí)題】皖西學(xué)院專升本自考真題匯總(附答案解析)
- 文件袋、檔案袋密封條模板
- 校本課程《典籍里的中國》教案
- 四年級上冊信息技術(shù)教案-9演示文稿巧編輯 |人教版
- 2022年人力資源管理各專業(yè)領(lǐng)域必備知識技能
- 租賃(出租)物品清單表
- 提高聚氯乙烯卷材地面一次驗(yàn)收合格率
- 甲型H1N1流感防治應(yīng)急演練方案(1)
- LU和QR分解法解線性方程組
- 漏油器外殼的落料、拉深、沖孔級進(jìn)模的設(shè)計(jì)【畢業(yè)論文絕對精品】
評論
0/150
提交評論