目錄
- 介紹
- 部署結(jié)構(gòu)
- 操作步驟
- 環(huán)境準(zhǔn)備
- 部署包下載
- 總結(jié)
介紹
通過ansible腳本+shell實(shí)現(xiàn)自動(dòng)化部署k8s基礎(chǔ)集群(v1.25.0)
部署結(jié)構(gòu)
1. 通過二進(jìn)制部署包鏡像安裝k8s集群、目錄etcd節(jié)點(diǎn)只支持1-3個(gè)節(jié)點(diǎn)、最多三個(gè)etcd節(jié)點(diǎn)
2. 因k8s版本相對(duì)較新、需要升級(jí)內(nèi)核來(lái)支持后臺(tái)程序、當(dāng)前版本只支持Cento7,內(nèi)核版本(5.19.4-1.el7.elrepo.x86_64)
3. 采用k8s二進(jìn)制安裝,通過system進(jìn)行管理,采用本地yum倉(cāng)庫(kù),版本是:1.25.0
4. 部署節(jié)點(diǎn)安裝docker的yum源是基于Centos7.5/7.6,版本是:19.03.14
5. 部署節(jié)點(diǎn)安裝ansible時(shí),使用離線安裝,版本:2.9.27
操作步驟
環(huán)境準(zhǔn)備
作用 | IP地址 | 操作系統(tǒng) | 配置 |
---|---|---|---|
k8s-master01 | 192.168.1.13 | CentOS7 | 最低配置2C2G |
ansible | 192.168.1.140 | CentOS7 | 最低配置1C1G |
- node節(jié)點(diǎn)可以填寫多個(gè),根據(jù)實(shí)際情況確認(rèn),但是不能超出單master節(jié)點(diǎn)的限制
- master節(jié)點(diǎn)至少是三個(gè)少一個(gè)都不是高可用版本
- 高可用部署時(shí)需要為keepalived提前確認(rèn)好vip的信息
備注
- 單獨(dú)找一臺(tái)機(jī)器用于部署ansible服務(wù),升級(jí)內(nèi)核時(shí)需要重啟服務(wù)器
- 部署節(jié)點(diǎn)部署重啟,否則會(huì)導(dǎo)致執(zhí)行報(bào)錯(cuò)
- 但是需要確保機(jī)器資源充足,且相關(guān)的端口不會(huì)沖突(38081【yum】、38082【registry】)
- 相關(guān)的網(wǎng)絡(luò)關(guān)系需要提前確認(rèn)
解壓部署包
#上傳部署包(xshell) yum -y install lrzsz rz install_k8s_binary_20220905.tar.gz #解壓 tar -xvf install_k8s_binary_20220905.tar.gz -C /opt
修改host文件
#部署機(jī)器,初始腳本、安裝包鏡像 [deploy_server] 192.168.1.11 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="Ansible" #apiserver、controller、scheduler、通過下面的install_kubelet_enable來(lái)確認(rèn)是否在master節(jié)點(diǎn)上安裝kubelet、proxy服務(wù) [kubernetes_master] 192.168.1.12 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-master01" #kubelet、proxy,可任意添加節(jié)點(diǎn)數(shù),只要不超出k8s本身的限制即可 [kubernetes_node] #192.168.1.13 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-node01" #單節(jié)點(diǎn)或者三節(jié)點(diǎn)其他的暫時(shí)不支持,通過腳本解析主機(jī)信息,目前只支持1-3個(gè)節(jié)點(diǎn) [etcd] 192.168.1.12 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 ETCD_NAME="k8s-master01" #不填寫,則不安裝鏡像倉(cāng)庫(kù)、目前尚未完成(待完善) [docker_repositry] #192.168.1.136 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-node01" #雙節(jié)點(diǎn) [haproxy_keepalived] #192.168.1.12 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-haproxy" #192.168.1.12 ansible_user="root" ansible_ssh_pass="1" ansible_ssh_port=22 hostname="k8s-haproxy" [nodes:children] kubernetes_master kubernetes_node haproxy_keepalived etcd [all:vars] #interface="ens33" #部署機(jī)器的網(wǎng)卡名稱 master_vip="192.168.1.120" #高可用 #布爾值 true or false install_kubelet_enable="true" #master節(jié)點(diǎn)是否安裝kubelet、kube-proxy network_enable="false" #聯(lián)網(wǎng)狀態(tài)下,加載網(wǎng)絡(luò)yum倉(cāng)庫(kù) Basic_enable="true" #安裝基礎(chǔ)軟件包 clear_cert_data="false" #清理上一次生成的證書及清理cfssl的安裝包 #k8s 組件服務(wù) dashboard_enable="false" #安裝dashboard服務(wù) prometheus_enable="false" #安裝Prometheus服務(wù),尚未完成 ingress_enable="false" #安裝ingress服務(wù),尚未完成
初始化環(huán)境
[root@registry]# cd /opt/install_k8s_binary [root@registry install_k8s_binary]# sh Run.sh 1) 初始化環(huán)境(ansible)) 2) 安裝k8s集群(v1.25.0)(二進(jìn)制) ---------------------------------------------------------------------------- 請(qǐng)輸入對(duì)應(yīng)的數(shù)字編號(hào):1 請(qǐng)輸入部署機(jī)的地址(192.168.1.11): #部署機(jī)的地址,通過腳本獲取的地址,確認(rèn)無(wú)誤后直接回車即可
執(zhí)行結(jié)果
安裝docker服務(wù)安裝ansible服務(wù),修改ansible.cfg配置準(zhǔn)備離線yum倉(cāng)庫(kù)掛載點(diǎn)是:部署包的下的yum目錄準(zhǔn)備離線registry倉(cāng)庫(kù),相關(guān)掛載點(diǎn)是:/var/images/
安裝k8s集群
登錄部署機(jī)器上執(zhí)行Run.sh腳本
執(zhí)行結(jié)果如下:
登錄master的節(jié)點(diǎn)
因本地虛擬機(jī)限制,目前使用單節(jié)點(diǎn)測(cè)試部署,一主一從的也測(cè)試可行高可用版本尚未測(cè)試,虛擬機(jī)測(cè)試電腦容易死機(jī)