一、概述
手工搭建 Kubernetes 叢集是一件很繁瑣的事情,為了簡化這些操作,就産生了很多安裝配置工具,如 Kubeadm
,Kubespray,RKE 等元件,我最終選擇了官方的 Kubeadm 主要是不同的 Kubernetes 版本都有一些差異,Kubeadm
更新與支援的會好一些。Kubeadm 是 Kubernetes 官方提供的快速安裝和初始化 Kubernetes
叢集的工具,目前的還處于孵化開發狀态,跟随 Kubernetes 每個新版本的釋出都會同步更新,
強烈建議先看下官方的文檔了解下各個元件與對象的作用。
https://kubernetes.io/docs/concepts/
https://kubernetes.io/docs/setup/independent/install-kubeadm/
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
在建立Kubernetes叢集時,阿裡雲容器服務提供兩種網絡插件:Terway和Flannel。
Flannel:使用的是簡單穩定的社群的Flannel CNI 插件,配合阿裡雲的VPC的高速網絡,能給叢集高性能和穩定的容器網絡體驗,但功能偏簡單,支援的特性少,例如:不支援基于Kubernetes标準的Network Policy。
Terway:是阿裡雲容器服務自研的網絡插件,将阿裡雲的彈性網卡配置設定給容器,支援基于Kubernetes标準的NetworkPolicy來定義容器間的通路政策,支援對單個容器做帶寬的限流。對于不需要使用Network
Policy的使用者,可以選擇Flannel,其他情況建議選擇Terway。
是以,本文主要介紹flannel的簡單使用。
系統
核心
docker
ip
主機名
配置
centos 7.6
3.10.0-957.el7.x86_64
19.03.5
192.168.128.130
k8s-master
2核4G
192.168.128.131
k8s-node01
192.168.128.132
k8s-node02
注意:請確定CPU至少2核,記憶體2G
二、準備工作
如果各個主機啟用了防火牆,需要開放Kubernetes各個元件所需要的端口,可以檢視Installing kubeadm中的”Check required ports”一節。 這裡簡單起見在各節點禁用防火牆:
修改 <code>/etc/fstab</code> 檔案,注釋掉 SWAP 的自動挂載(永久關閉swap,重新開機後生效)
安裝docker
這裡就不再叙述了,請參考連結:
https://www.cnblogs.com/xiao987334176/p/11771657.html
修改主機名
注意:主機名不能帶下劃線,隻能帶中劃線
否則安裝k8s會報錯
三、安裝kubeadm,kubelet,kubectl
在各節點安裝kubeadm,kubelet,kubectl
目前最新版本是:1.18.1
以上,就是master和node都需要操作的部分。
四、初始化Master節點
注意修改apiserver-advertise-address為master節點ip
參數解釋:
這一步很關鍵,由于kubeadm 預設從官網k8s.grc.io下載下傳所需鏡像,國内無法通路,是以需要通過–image-repository指定阿裡雲鏡像倉庫位址
叢集初始化成功後傳回如下資訊:
記錄生成的最後部分内容,此内容需要在其它節點加入Kubernetes叢集時執行。
輸出如下:
注意保持好kubeadm join,後面會用到的。
如果yml中的"Network": "10.244.0.0/16"和kubeadm init xxx --pod-network-cidr不一樣,就需要修改成一樣的。不然可能會使得Node間Cluster IP不通。
由于我上面的kubeadm init xxx --pod-network-cidr就是10.244.0.0/16。是以此yaml檔案就不需要更改了。
檢視yaml需要的鏡像
注意:這些鏡像都是需要通路谷歌才行的。
但是阿裡雲容器鏡像服務ACR裡面是有的,通路連結如下:
注意:必須使用阿裡雲賬号登入才行。
點選管理控制台
點選左側的鏡像搜尋
輸入關鍵字:flannel:v0.12.0-amd64,選擇第二個。
點選複制公網位址
由于我這裡是上海區域,是以域名是:registry.cn-shanghai。如果你選的是其他區域,域名也會不一樣。
下面就是我們需要的版本号。
那麼下載下傳鏡像的完整指令為:
其他鏡像,也都在這裡。
是以,所需要的鏡像下載下傳指令為:
為鏡像打tag,保持和yaml檔案一樣。
注意:這些鏡像,也需要在node節點執行。
加載flannel
等待幾分鐘,確定所有的Pod都處于Running狀态
注意:coredns容器的網段是10.244.0.0/16
設定開機啟動
(僅master)
必須退出一次,再次登入,就可以了
五、node加入叢集
請檢視上文中的準備工作,確定都執行了!!!
修改主機名部分,改為k8s-node01
登入到node節點,確定已經安裝了docker和kubeadm,kubelet,kubectl
登入到master,使用指令檢視
登入到node節點,檢視ip
它會建立一個flannel.1網卡,用來做flannel網絡通信的。
七、使用yml釋出應用
以flaskapp為例子
flaskapp-deployment.yaml
flaskapp-service.yaml
加載yml檔案
檢視pod狀态
等待幾分鐘,確定為Running狀态
ping pod ip
確定能正常ping通,表示flannel網絡正常。
使用master ip+nodeport通路
效果如下:
注意:使用node節點ip+nodeport也可以通路。