入剖析 Kubernetes-2 Kubernetes集群搭建與實踐

1 Kubernetes一鍵部署利器:kubeadm

1.1 kubeadm命令

簡單總結(jié)可以通過兩條命令完成k8s集群的部署:

# 創(chuàng)建一個Master節(jié)點$ kubeadm init# 將一個Node節(jié)點加入到當(dāng)前集群中$ kubeadmjoin

1.2 kubeadm init工作流程

在機器上手動安裝 kubeadm、kubelet 和 kubectl這三個二進制文件。

把 kubelet 直接運行在宿主機上,然后使用容器部署其他的 Kubernetes 組件。(除了跟容器運行時打交道外,kubelet 在配置容器網(wǎng)絡(luò)、管理容器數(shù)據(jù)卷時,都需要直接操作宿主機,在容器內(nèi)實現(xiàn)困難)

kubeadm 首先要做的,是一系列的檢查工作,以確定這臺機器可以用來部署 Kubernetes。這一步檢查,我們稱為“Preflight Checks”。

在通過了 Preflight Checks 之后,kubeadm 要為你做的,是生成 Kubernetes 對外提供服務(wù)所需的各種證書和對應(yīng)的目錄。

證書目錄:

/etc/kubernetes/pki/ca.{crt,key}

證書生成后,kubeadm 接下來會為其他組件生成訪問 kube-apiserver 所需的配置文件。

配置文件路徑:

/etc/kubernetes/xxx.conf

kubeadm 會為 Master 組件生成 Pod 配置文件。包括kube-apiserver、kube-controller-manager、kube-scheduler,而它們都會被使用 Pod 的方式部署起來。

這時,Kubernetes 集群尚不存在, kubeadm 不會直接執(zhí)行docker run來啟動這些容器,在Kubernetes 中,有一種特殊的容器啟動方法叫做“Static Pod”。它允許你把要部署的Pod 的 YAML 文件放在一個指定的目錄里。這樣,當(dāng)這臺機器上的 kubelet 啟動時,它會自動檢查這個目錄,加載所有的 Pod YAML 文件,然后在這臺機器上啟動它們。

在 kubeadm 中,Master 組件的 YAML 文件會被生成在?/etc/kubernetes/manifests?路徑下。

kubeadm 還會再生成一個 Etcd 的 Pod YAML 文件,用來通過同樣的Static Pod 的方式啟動 Etcd。

kubeadm 會為集群生成一個 bootstrap token,在后面,只要持有這個token,任何一個安裝了 kubelet 和 kubadm 的節(jié)點,都可以通過 kubeadm join 加入到這個集群當(dāng)中。

kubeadm生成cluster-info(包括ca.crt 等 Master 節(jié)點的重要信息)的ConfigMap保存在Etcd中。

kubeadm安裝默認(rèn)插件( kube-proxy 和 DNS),它們分別用來提供整個集群的服務(wù)發(fā)現(xiàn)和 DNS 功能,創(chuàng)建兩個對應(yīng)鏡像的Pod即可。

1.3 kubeadm join 的工作流程

kubeadm 至少需要發(fā)起一次“不安全模式”的訪問到 kube-apiserver,從而拿到保存在 ConfigMap 中的 cluster-info(它保存了 APIServer 的授權(quán)信息)。只要有了 cluster-info 里的 kube-apiserver 的地址、端口、證書,kubelet 就可以以“安全模式”連接到 apiserver 上,這樣一個新的節(jié)點就部署完成了。

1.4 配置 kubeadm 的部署參數(shù)

kubeadm init --config kubeadm.yaml

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容