CKAD認(rèn)證中部署k8s并配置Calico插件
預(yù)設(shè)網(wǎng)絡(luò)
Calico(https://github.com/projectcalico/calico) 是針對(duì)容器、虛擬機(jī)和裸機(jī)工作負(fù)載的開(kāi)源網(wǎng)絡(luò)和安全解決方案,它提供了 pod 之間的網(wǎng)絡(luò)連接和網(wǎng)絡(luò)安全策略實(shí)施。
讀者可參考 https://kubernetes.io/zh/docs/concepts/cluster-administration/networking/ 這里不做過(guò)多的說(shuō)明。
執(zhí)行 ip addr 命令,找到 ens4,把里面提到的 ip 記錄下來(lái)。
ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc mq state UP group default qlen 1000
link/ether 42:01:0a:aa:00:02 brd ff:ff:ff:ff:ff:ff
inet 10.170.0.2/32 scope global dynamic ens4
valid_lft 2645sec preferred_lft 2645sec
inet6 fe80::4001:aff:feaa:2/64 scope link
valid_lft forever preferred_lft forever則 ip 是 10.170.0.2。
然后修改 /etc/hosts 文件,加上一行(替換這個(gè)ip為你的):
10.170.0.2 k8smaster
后面我們?cè)L問(wèn)集群,使用 k8smaster,而且不是使用 ip 直接訪問(wèn)。
kubeadm 安裝 k8s
執(zhí)行 kubectl version 查看 k8s 版本,GitVersion:"v1.21.0" 表示的即為 k8s 版本,因?yàn)楣ぞ甙姹靖?k8s 版本一致。
創(chuàng)建一個(gè) kubeadm-config.yaml 文件,我們使用 kubeadm init 時(shí),通過(guò)此配置文件出初始化 k8s master。
文件內(nèi)容為:
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubenetesVersion: 1.21.0
controlPlaneEndpoint: "k8smaster:6443"
networking:
podSubnet: 192.168.0.0/16注意,: 后面必須帶一個(gè)空格。表示key: value。
例如 image: nginx:letest ,不帶空格的 : 會(huì)連在一起。
然后初始化 master:
kubeadm init --config=kubeadm-config.yaml --upload-certs --v=5 | tee kubeadm-init.out
這個(gè)語(yǔ)句可以省略為 kubeadm init --config=kubeadm-config.yaml --upload-certs。
--v=5 可以輸出更多信息信息,tee xxx 可以讓信息輸出到一個(gè)文件中,方便收集日志或者后續(xù)檢查。
執(zhí)行初始化命令后,終端或查看 kubeadm-init.out 文件,有以下內(nèi)容:
To start using your cluster, you need to run the following as a regular user: mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config Alternatively, if you are the root user, you can run: export KUBECONFIG=/etc/kubernetes/admin.conf You should now deploy a pod network to the cluster. Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/ You can now join any number of the control-plane node running the following command on each as root: kubeadm join k8smaster:6443 --token 45td1j.xqdscm4k06a4edi2 \ --discovery-token-ca-cert-hash sha256:aeb772c57a35a283716b65d16744a71250bcc25d624010ccb89090021ca0f428 \ --control-plane --certificate-key d76287ccc4701db9d34e0c9302fa285be2e9241fc43c94217d6beb419cdf3c52 Please note that the certificate-key gives access to cluster sensitive data, keep it secret! As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use "kubeadm init phase upload-certs --upload-certs" to reload certs afterward. Then you can join any number of worker nodes by running the following on each as root: kubeadm join k8smaster:6443 --token 45td1j.xqdscm4k06a4edi2 \ --discovery-token-ca-cert-hash sha256:aeb772c57a35a283716b65d16744a71250bcc25d624010ccb89090021ca0f428
按照提示,我們執(zhí)行:
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
然后:
export KUBECONFIG=/etc/kubernetes/admin.conf
筆者注:KUBECONFIG 環(huán)境變量在下次登錄或新建終端窗口會(huì)失效,打開(kāi) 用戶目錄的.bashrc 文件,在最后面加上 export KUBECONFIG=/etc/kubernetes/admin.conf ,可保證下次登錄或切換終端,依然可用。
筆者注:因?yàn)樯婕暗蕉嘤脩簦匀绻袚Q用戶,就不能使用 kubeadm/kubectl/kubelet 命令了,如果讀者切換了用戶,則可以執(zhí)行上面 make -p $HOME/.kube到 export xxx 這兩部分的命令,這樣別的用戶也可以執(zhí)行命令操作節(jié)點(diǎn)。
輸入 kubeadm config print init-default 可以查看到 master 是初始化的配置。
配置 calico
然后下下載 calico 的 yaml 文件。
wget https://docs.projectcalico.org/manifests/calico.yaml
然后我們需要留意 yaml 文件中的 CALICO_IPV4POOL_CIDR 的值,讀者直接打開(kāi) https://docs.projectcalico.org/manifests/calico.yaml 或者使用 less calico.yaml 在終端上閱讀文件。
找到 CALICO_IPV4POOL_CIDR 例如:
# - name: CALICO_IPV4POOL_CIDR
# value: "192.168.0.0/16"這個(gè)表示 ip4 池,如果 ip 不存在,則會(huì)自動(dòng)創(chuàng)建,創(chuàng)建 的 pod 的網(wǎng)絡(luò) ip 會(huì)在這個(gè)范圍。默認(rèn)是 192.168.0.0 我們不需要改,如果你需要定制,則可以刪除 # ,然后改動(dòng) ip。
然后我們啟用 calico 網(wǎng)絡(luò)插件:
kubectl apply -f calico.yaml
自動(dòng)補(bǔ)全工具
kubectl 命令和可選參數(shù)非常多,每次都要敲長(zhǎng)長(zhǎng)的命令,任意出錯(cuò),我們可以利用 bash-completion 為我們快速完成命令的輸入。
sudo apt-get install bash-completion -y
source <(kubectl completion bash) echo "source <(kubectl completion bash)" >> $HOME/.bash
我們可以測(cè)試一下。
輸入 kubectl des ,然后按一下 TAB 鍵,會(huì)發(fā)現(xiàn)內(nèi)容自動(dòng)補(bǔ)全。
輸入完整的 kubectl descibe nodes 可以查到 node 狀態(tài),后面的小節(jié)再聊聊 descibe nodes 的含義。
狀態(tài)描述
執(zhí)行 kubectl descibe nodes 命令,我們可以看到節(jié)點(diǎn)詳細(xì)的信息,其中有個(gè) Conitions 字段,描述了所有正在運(yùn)行中(Running) 的節(jié)點(diǎn)的狀態(tài),它有 5 個(gè)類型:
Ready
Node 是否能夠接收 pod ,如果可以則
Status為 True;如果節(jié)點(diǎn)不健康,不能接收 pod,則 為 False。正常情況下為 True。DiskPressure
表示節(jié)點(diǎn)的空閑空間不足以用于添加新 Pod,如果為 True則說(shuō)明不正常。
MemoryPressure
表示節(jié)點(diǎn)存在內(nèi)存壓力,即節(jié)點(diǎn)內(nèi)存可用量低,如果為 True 則說(shuō)明不正常。
PIDPressure
表示節(jié)點(diǎn)存在進(jìn)程壓力,即節(jié)點(diǎn)上進(jìn)程過(guò)多;如果為 True 則說(shuō)明不正常。
NetworkUnavailable
表示節(jié)點(diǎn)網(wǎng)絡(luò)配置不正確;如果為 True,則說(shuō)明不正常。
使用 json 表示:
"conditions": [
{
"type": "Ready",
"status": "True",
"reason": "KubeletReady",
"message": "kubelet is posting ready status",
"lastHeartbeatTime": "2019-06-05T18:38:35Z",
"lastTransitionTime": "2019-06-05T11:41:27Z"
}
]到此這篇關(guān)于CKAD認(rèn)證中部署k8s并配置Calico插件的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS 出現(xiàn)no space left on device錯(cuò)誤解決辦法
這篇文章主要介紹了CentOS 出現(xiàn)no space left on device錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2017-04-04
Kubernetes?controller?manager運(yùn)行機(jī)制源碼解析
這篇文章主要為大家介紹了Kubernetes?controller?manager運(yùn)行機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Kubernetes中Deployment的升級(jí)與回滾
這篇文章介紹了Kubernetes中Deployment的升級(jí)與回滾?,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Docker與K8s關(guān)系介紹不會(huì)Docker也可以使用K8s
想學(xué)K8s,必須得先學(xué)會(huì)Docker嗎?這是很多網(wǎng)友在開(kāi)始有想法想要學(xué)?K8s的時(shí)候都會(huì)冒出來(lái)的想法,要回答這個(gè)問(wèn)題,我們需要先搞清楚?Docker?和?K8s?他們的角色是什么,相互之間是什么關(guān)系2022-06-06
Kubernetes(K8S)容器集群管理環(huán)境完整部署詳細(xì)教程-上篇
本系列文章主要介紹了Kubernetes(K8S)容器集群管理環(huán)境完整部署的詳細(xì)教程,分為上中下三篇文章,此為上篇,需要的朋友可以參考下2022-01-01
k8s集群部署時(shí)etcd容器不停重啟問(wèn)題以及處理詳解
一次在k8s集群中創(chuàng)建實(shí)例發(fā)現(xiàn)etcd集群狀態(tài)出現(xiàn)連接失敗狀況,導(dǎo)致創(chuàng)建實(shí)例失敗,下面這篇文章主要給大家介紹了關(guān)于k8s集群部署時(shí)etcd容器不停重啟問(wèn)題以及處理的相關(guān)資料,需要的朋友可以參考下2023-01-01
Dashboard管理Kubernetes集群與API訪問(wèn)配置
這篇文章介紹了Dashboard管理Kubernetes集群與API訪問(wèn)配置的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04

