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