離線安裝集羣
參考 https://github.com/easzlab/kubeasz/blob/master/docs/setup/offline_install.mdhtml
離線文件準備
在一臺可以訪問互聯網的服務器上執行:node
- 下載工具腳本easzup,舉例使用kubeasz版本2.2
export release=2.2.1 curl -C- -fLO --retry 3 https://github.com/easzlab/kubeasz/releases/download/${release}/easzup chmod +x ./easzup
- 使用工具腳本下載
默認下載最新推薦k8s/docker等版本,使用命令./easzup
查看工具腳本的幫助信息linux
# 舉例使用 k8s 版本 v1.18.2,docker 19.03.5 ./easzup -D -d 19.03.5 -k v1.18.2 # 下載離線系統軟件包 ./easzup -P
執行成功後,全部文件均已整理好放入目錄/etc/ansible ,只要把該目錄總體複製到任何離線的機器上,便可開始安裝集羣,離線文件包括:
/etc/ansible
包含 kubeasz 版本爲 ${release} 的發佈代碼/etc/ansible/bin
包含 k8s/etcd/docker/cni 等二進制文件/etc/ansible/down
包含集羣安裝時須要的離線容器鏡像/etc/ansible/down/packages
包含集羣安裝時須要的系統基礎軟件
離線文件不包括:git
- 管理端 ansible 安裝,但可使用 kubeasz 容器運行 ansible 腳本
- 其餘更多 kubernetes 插件鏡像
離線安裝
上述下載完成後,把/etc/ansible
整個目錄複製到目標離線服務器相同目錄,而後在離線服務器上運行:github
- 離線安裝 docker,檢查本地文件,正常會提示全部文件已經下載完成
./easzup -D
- 啓動 kubeasz 容器
./easzup -S
- 設置參數容許離線安裝
sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/chrony/defaults/main.yml sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/ex-lb/defaults/main.yml sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/kube-node/defaults/main.yml sed -i 's/^INSTALL_SOURCE.*$/INSTALL_SOURCE: "offline"/g' /etc/ansible/roles/prepare/defaults/main.yml
在kubeasz容器內執行k8s的安裝docker
docker exec -it kubeasz easzctl start-aio
若是須要配置1主多從的集羣json
#配置ssh登陸node節點 ssh-copy-id root@192.168.11.11 #進入kubeasz容器中執行添加節點命令 docker exec -it kubeasz bash #執行添加節點命令 easzctl add-node 192.168.11.11
若是當前linux內核版本在4.4如下,kube-proxy的ipvs可能會有問題,致使dns沒法解析vim
解決問題bash
一、升級系統內核版本服務器
升級 Kubernetes 集羣各個節點的 CentOS 系統內核版本:
## 載入公鑰 $ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org ## 安裝 ELRepo 最新版本 $ yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm ## 列出可使用的 kernel 包版本 $ yum list available --disablerepo=* --enablerepo=elrepo-kernel ## 安裝指定的 kernel 版本: $ yum install -y kernel-lt-4.4.231-1.el7.elrepo --enablerepo=elrepo-kernel ## 設置開機重新內核啓動 $ grub2-set-default "CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)" ## 查看內核啓動項 $ grub2-editenv list saved_entry=CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core) 重啓系統使內核生效: $ reboot 啓動完成查看內核版本是否更新: $ uname -r 4.4.231-1.el7.elrepo.x86_64
參考:http://www.mydlq.club/article/78/
部署NFS服務,添加爲k8s默認storageclass
nfs服務端安裝
使用 yum 安裝 NFS 安裝包。 $ sudo yum install nfs-utils 注意 只安裝 nfs-utils 便可,rpcbind 屬於它的依賴,也會安裝上。 服務端配置 設置 NFS 服務開機啓動 $ sudo systemctl enable rpcbind $ sudo systemctl enable nfs 啓動 NFS 服務 $ sudo systemctl start rpcbind $ sudo systemctl start nfs 防火牆須要打開 rpc-bind 和 nfs 的服務 $ sudo firewall-cmd --zone=public --permanent --add-service={rpc-bind,mountd,nfs} success $ sudo firewall-cmd --reload success 配置共享目錄 服務啓動以後,咱們在服務端配置一個共享目錄 $ sudo mkdir /data $ sudo chmod 755 /data 根據這個目錄,相應配置導出目錄 $ sudo vi /etc/exports 添加以下配置 /data/ 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash) /data: 共享目錄位置。 192.168.0.0/24: 客戶端 IP 範圍,* 表明全部,即沒有限制。 rw: 權限設置,可讀可寫。 sync: 同步共享目錄。 no_root_squash: 可使用 root 受權。 no_all_squash: 可使用普通用戶受權。 :wq 保存設置以後,重啓 NFS 服務。 $ sudo systemctl restart nfs 能夠檢查一下本地的共享目錄 $ showmount -e localhost Export list for localhost: /data 192.168.0.0/24 這樣,服務端就配置好了,接下來配置客戶端,鏈接服務端,使用共享目錄。
爲k8s添加動態PV
#編輯自定義配置文件: $ vim /etc/ansible/roles/cluster-storage/defaults/main.yml # 好比建立nfs provisioner storage: nfs: enabled: "yes" server: "192.168.1.8" server_path: "/data/nfs" storage_class: "nfs-dynamic-class" provisioner_name: "nfs-provisioner-01" #建立 nfs provisioner $ docker exec -it kubeasz bash $ ansible-playbook /etc/ansible/roles/cluster-storage/cluster-storage.yml $ kubectl patch storageclass nfs-dynamic-class -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' # 執行成功後驗證 $ kubectl get pod --all-namespaces |grep nfs-prov kube-system nfs-provisioner-01-6b7fbbf9d4-bh8lh 1/1 Running 0 1d 注意 k8s集羣可使用多個nfs provisioner,重複上述步驟一、2:修改使用不一樣的nfs server nfs_storage_class nfs_provisioner_name後執行建立便可。
開始部署Kubesphere 3.0.0測試版本
參考:https://github.com/kubesphere/ks-installer
準備工做
集羣現有的可用內存至少在 10G
以上。 若是是執行的 allinone
安裝,那麼執行 free -g
能夠看下可用資源
$ free -g total used free shared buff/cache available Mem: 16 4 10 0 3 2 Swap: 0 0 0
部署 KubeSphere
最小化快速部署
kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v3.0.0-alpha.2/deploy/kubesphere-installer.yaml kubectl apply -f https://raw.githubusercontent.com/kubesphere/ks-installer/v3.0.0-alpha.2/deploy/cluster-configuration.yaml # 查看部署進度及日誌 $ kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
部署完成後可執行以下命令查看控制檯的服務端口,使用 IP:consolePort(default: 30880)
訪問 KubeSphere UI 界面,默認的集羣管理員帳號爲 admin/P@88w0rd
。
kubectl get svc/ks-console -n kubesphere-system
以上爲最小化部署,如需開啓更多功能,請參考以下步驟配置相關依賴:
安裝可插拔功能組件
- 編輯 ClusterConfiguration 開啓可插拔的功能組件:
#編輯k8s的clusterconfig,將未開啓的日誌收集、告警監控、devops等功能按需開啓(對應enable設置爲true) kubectl edit cc ks-installer -n kubesphere-system
按功能需求編輯配置文件以後,退出等待生效便可,如長時間未生效請使用以下命令查看相關日誌:
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f