01 部署一套單Master的K8s集群

v1.21,kubeadm方式
1、準(zhǔn)備環(huán)境
1.1 服務(wù)器要求:
? 建議最小硬件配置:2核CPU、4G內(nèi)存、40G硬盤
? 服務(wù)器最好可以訪問外網(wǎng),會(huì)有從網(wǎng)上拉取鏡像需求,如果服務(wù)器不能上網(wǎng),需要提前下載對應(yīng)鏡像并導(dǎo)入節(jié)點(diǎn)
1.2 軟件環(huán)境:

服務(wù)器規(guī)劃:

1.3 操作系統(tǒng)初始化配置【所有節(jié)點(diǎn)】
2 安裝Docker/kubeadm/kubelet【所有節(jié)點(diǎn)】
這里使用Docker作為容器引擎,也可以換成別的,例如containerd
2.1 安裝Docker
配置鏡像下載加速器:
2.2 添加阿里云YUM軟件源
2.3 安裝kubeadm,kubelet和kubectl
由于版本更新頻繁,這里指定版本號(hào)部署:
3. 部署Kubernetes Master
master節(jié)點(diǎn)執(zhí)行
? --apiserver-advertise-address 集群通告地址,配置上master節(jié)點(diǎn)的IP
? --image-repository 由于默認(rèn)拉取鏡像地址k8s.gcr.io國內(nèi)無法訪問,這里指定阿里云鏡像倉庫地址
? --kubernetes-version K8s版本,與上面安裝的一致
? --service-cidr 集群內(nèi)部虛擬網(wǎng)絡(luò),Pod統(tǒng)一訪問入口
? --pod-network-cidr Pod網(wǎng)絡(luò),與下面部署的CNI網(wǎng)絡(luò)組件yaml中保持一致
或者 使用配置文件引導(dǎo):
初始化完成后,最后會(huì)輸出一個(gè)join命令,先記住,下面用。
拷貝kubectl使用的連接k8s認(rèn)證文件到默認(rèn)路徑:
查看工作節(jié)點(diǎn):

編輯
注:由于網(wǎng)絡(luò)插件還沒有部署,還沒有準(zhǔn)備就緒 NotReady
參考資料:
https://kubernetes.io/zh/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#initializing-your-control-plane-node

4. 加入Kubernetes Node
在node節(jié)點(diǎn)執(zhí)行
向集群添加新節(jié)點(diǎn),執(zhí)行在kubeadm init輸出的kubeadm join命令:
默認(rèn)token有效期為24小時(shí),當(dāng)過期之后,該token就不可用了。這時(shí)就需要重新創(chuàng)建token,可以直接使用命令快捷生成:
參考資料:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-join/

5. 部署容器網(wǎng)絡(luò)(CNI)
Calico是一個(gè)純?nèi)龑拥臄?shù)據(jù)中心網(wǎng)絡(luò)方案,是目前Kubernetes主流的網(wǎng)絡(luò)方案。
下載YAML:
下載完后還需要修改里面定義Pod網(wǎng)絡(luò)(CALICO_IPV4POOL_CIDR),與前面kubeadm init的 --pod-network-cidr指定的一樣。
修改完后文件后,部署:
等Calico Pod都Running,節(jié)點(diǎn)也會(huì)準(zhǔn)備就緒。
CoreDNS問題處理:

在所有節(jié)點(diǎn)執(zhí)行:
過一會(huì)兒,CoreDNS Pod會(huì)自動(dòng)恢復(fù)正常。
注:以后所有yaml文件都只在Master節(jié)點(diǎn)執(zhí)行。
安裝目錄:/etc/kubernetes/
組件配置文件目錄:/etc/kubernetes/manifests/
參考資料:https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
控制Master節(jié)點(diǎn)是否可調(diào)度

6. 測試kubernetes集群
在Kubernetes集群中創(chuàng)建一個(gè)pod,驗(yàn)證是否正常運(yùn)行:

訪問地址:http://NodeIP:Port