1. 程式人生 > 其它 >原生Kubernetes雲平臺部署

原生Kubernetes雲平臺部署

案例——原生Kubernetes雲平臺部署

一、案例目標

(1)瞭解Kubernetes容器雲平臺的架構。

(2)瞭解Kubernetes容器雲平臺的基本原理。

(3)掌握使用Kubeadm部署Kubernetes叢集。

二、案例分析

1.規劃節點

主機名

節點

master

master節點

node

node節點

2.基礎準備

所有節點安裝好CentOS_7.5.1804系統,保持網路暢通。

三、案例實施

(1)配置Yum源

所有節點將提供的壓縮包K8S.tar.gz上傳至/root目錄並解壓。

tar -zxvf K8S.tar.gz

所有節點配置本地Yum源。

(2)升級系統核心

所有節點升級系統核心。

# yum upgrade -y

(3)配置主機對映

所有節點,修改/etc/hosts檔案

(4)配置防火牆及SELinux

所有節點配置防火牆及SELinux。

(5)關閉Swap

Kubernetes的想法是將例項緊密包裝到儘可能接近100%。所有的部署應該與CPU和記憶體限制固定在一起。 所以如果排程程式傳送一個Pod到一臺機器,它不應該使用交換。設計者不想交換,因為它會減慢速度。所以關閉Swap主要是為了效能考慮。

所有節點關閉Swap。

(6)配置時間同步

所有節點安裝chrony服務。

yum install -y chrony

master節點修改/etc/chrony.conf檔案,註釋預設NTP伺服器,指定上游公共NTP伺服器,並允許其他節點同步時間。

master節點重啟chronyd服務並設為開機啟動開啟網路時間同步功能。

node節點修改/etc/chrony.conf檔案,指定內網master節點為上游NTP伺服器,重啟服務並設為開機啟動。

所有節點執行chronyc sources命令,查詢結果中如果存在以“^*”開頭的行,即說明已經同步成功。

(7)配置路由轉發

RHEL/CentOS7上的一些使用者報告了由於iptables被繞過而導致流量路由不正確的問題,所以需要在各節點開啟路由轉發。

所有節點建立/etc/sysctl.d/k8s.conf檔案,新增如下內容。

(8)配置IPVS

由於IPVS已經加入到了核心的主幹,所以為kube-proxy開啟IPVS的前提需要載入以下的核心模組。

在所有節點執行以下操作。

上面指令碼建立了/etc/sysconfig/modules/ipvs.modules檔案,保證在節點重啟後能自動載入所需模組。使用lsmod | grep -e ip_vs -e nf_conntrack_ipv4命令檢視是否已經正確載入所需的核心模組。

所有節點安裝ipset軟體包。

yum install ipset ipvsadm -y

(9)安裝Docker

Kubernetes預設的容器執行時仍然是Docker,使用的是Kubelet中內建dockershim CRI實現。需要注意的是,由於在Kubernetes1.14的版本中,支援的版本有 1.13.1、 17.03、17.06、17.09、18.06和 18.09,所以這裡統一使用Docker 18.09。

所有節點配置Docker Yum源並安裝Docker,啟動Docker引擎並設定開機自啟,步驟參考Docker安裝流程。

2. 安裝Kubernetes叢集

(1)配置Kubernetes Yum源

所有節點配置Kubernetes源。Kubernetes源可以採用下面網路Yum源,也可以採用上述配置的本地Yum源。

(2)安裝工具

Kubelet負責與其他節點叢集通訊,並進行本節點Pod和容器生命週期的管理。Kubeadm是Kubernetes的自動化部署工具,降低了部署難度,提高效率。Kubectl是Kubernetes叢集管理工具。

所有節點安裝Kubernetes工具並啟動Kubelet。

yum install -y kubelet-1.14.1 kubeadm-1.14.1 kubectl-1.14.1

systemctl enable kubelet && systemctl start kubelet

// 此時啟動不成功正常,後面初始化的時候會變成功

(3)初始化Kubernetes叢集

登入master節點,初始化Kubernetes叢集。

[root@master ~]# kubeadm init --apiserver-advertise-address 10.24.2.8 --kubernetes-version="v1.14.1" --pod-network-cidr=10.16.0.0/16 --image-repository=registry.aliyuncs.com/google_containers

kubeadm join 192.168.50.19:6443 --token aewot6.al2s2nwr9qmbjrjf \

--discovery-token-ca-cert-hash sha256:dd424ffb139d14f90a1719b455e88d030b5c48071a4a17841b6f29c646a76148

//本行程式碼需記錄,用於node節點加入叢集。

初始化操作主要經歷了下面15個步驟,每個階段均輸出均使用[步驟名稱]作為開頭:

① [init]:指定版本進行初始化操作。

② [preflight]:初始化前的檢查和下載所需要的Docker映象文。。

③ [kubelet-start]:生成Kubelet的配置檔案/var/lib/kubelet/config.yaml,沒有這個檔案Kubelet無法啟動,所以初始化之前的Kubelet實際上啟動失敗。

④ [certificates]:生成Kubernetes使用的證書,存放在/etc/kubernetes/pki目錄中。

⑤ [kubeconfig]:生成KubeConfig檔案,存放在/etc/kubernetes目錄中,元件之間通訊需要使用對應檔案。

⑥ [control-plane]:使用/etc/kubernetes/manifest目錄下的YAML檔案,安裝Master元件。

⑦ [etcd]:使用/etc/kubernetes/manifest/etcd.yaml安裝Etcd服務。

⑧ [wait-control-plane]:等待control-plan部署的Master元件啟動。

⑨ [apiclient]:檢查Master元件服務狀態。

⑩ [uploadconfig]:更新配置。

11 [kubelet]:使用configMap配置Kubelet。

12 [patchnode]:更新CNI資訊到Node上,通過註釋的方式記錄。

13 [mark-control-plane]:為當前節點打標籤,打了角色Master,和不可排程標籤,這樣預設就不會使用Master節點來執行Pod。

14 [bootstrap-token]:生成的Token需要記錄下來,後面使用kubeadm join命令往叢集中新增節點時會用到。

15 [addons]:安裝附加元件CoreDNS和kube-proxy。

Kubectl預設會在執行的使用者home目錄下面的.kube目錄下尋找config檔案,配置kubectl工具。

檢查叢集狀態。

(4)配置Kubernetes網路

登入Master節點,將提供的kube-flannel.yaml檔案上傳至Master節點root目錄,使用kubectl apply命令安裝網路。

(5)Node節點加入叢集

登入Node節點,使用kubeadm join命令將Node節點加入叢集。

登入Master節點,檢查各節點狀態。

(6)安裝Dashboard

將提供的kubernetes-dashboard.yaml和dashboard-adminuser.yaml檔案上傳至Master節點root目錄,使用kubectl apply命令安裝Dashboard。

[root@master ~]# kubectl apply -f kubernetes-dashboard.yaml

[root@master ~]# kubectl create -f dashboard-adminuser.yaml

檢查所有Pod狀態

[root@master ~]# kubectl get pods --all-namespaces -o wide

通過命令檢查到kubernetes-dashboard被排程到Node節點執行,通過瀏覽器中輸入Node節點地址(Master也可以訪問)https://10.24.2.9:30000,即可訪問Kubernetes Dashboard

單擊“高階”→“接受風險並繼續”按鈕,即可進入Kubernetes Dasboard認證介面

圖7-7-2 Kubernetes Dashboard認證介面

登入Kubernetes Dasboard需要輸入令牌,通過以下命令獲取訪問Dashboard的認證令牌,認證後如圖7-7-3所示。

[root@master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-admin-token | awk '{print $1}')

(7)配置Kuboard

Kuboard是一款免費的Kubernetes圖形化管理工具,其力圖幫助使用者快速在Kubernetes上落地微服務。登入Master節點,使用kuboard.yaml檔案部署Kuboard。

在瀏覽器輸入地址http://192.168.50.21:31000,即可進入Kuboard的認證介面,在Token文字框中輸入令牌後可進入Kuboard控制檯

在Kuboard控制檯中可以檢視到叢集概覽,至此Kubernetes容器雲平臺就部署完成了。