您好,登錄后才能下訂單哦!
這篇文章主要講解了“Kubernetes集群環(huán)境常見(jiàn)的問(wèn)題及解決方法”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Kubernetes集群環(huán)境常見(jiàn)的問(wèn)題及解決方法”吧!
1、Kubernetes集群環(huán)境下各個(gè)node鏡像不能自動(dòng)拉取
一般情況下遇到這種情況下,比較笨的辦法是可以通過(guò)人肉的方式登錄到每個(gè)節(jié)點(diǎn)通過(guò)docker login docker pull的形式獲取鏡像,想象下,如果成百上千個(gè)節(jié)點(diǎn)......
一般出現(xiàn)此類問(wèn)題在私有倉(cāng)庫(kù)和云廠商分別解決方法如下。
專有鏡像的集群,比如一些個(gè)人或者公司搭建私有倉(cāng)庫(kù),以下是解決該問(wèn)題步驟
docker login [server]針對(duì)要使用的每組憑據(jù)運(yùn)行。這將更新$HOME/.docker/config.json;
$HOME/.docker/config.json在編輯器中查看,以確保它僅包含您要使用的憑據(jù);
將當(dāng)前節(jié)點(diǎn).docker/config.json復(fù)制到其它節(jié)點(diǎn),命令如下;
for n in $nodes; do scp ~/.docker/config.json root@$n:/var/lib/kubelet/config.json; done
4. 創(chuàng)建pod測(cè)試?yán)$R像;
kubectl apply -f - <<EOFapiVersion: v1kind: Podmetadata: name: private-image-test-1spec: containers: - name: uses-private-image image: your image imagePullPolicy: Always command: [ "echo", "SUCCESS" ]EOFpod/private-image-test-1 created
5. 如果一切正常,執(zhí)行如下命令。
kubectl logs private-image-test-1SUCCESS
對(duì)于Google Kubernetes Engine,GCE以及任何自動(dòng)創(chuàng)建節(jié)點(diǎn)的云提供商,目前建議使用此方法,以下是解決步驟
使用docker命令創(chuàng)建密鑰;
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
2. 在Pod上引用imagePullSecrets;
cat <<EOF > pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: foo
namespace: awesomeapps
spec:
containers:
- name: foo
image: jan/awesomeapp:v1
imagePullSecrets:
- name: myregistrykey
EOF
cat <<EOF >> ./kustomization.yaml
resources:
- pod.yaml
EOF
2、k8s或者docker提示exec format error
[root@k8s-master k8s_spider]# k get podNAME READY STATUS RESTARTS AGEprivate-image-test-1 0/1 CrashLoopBackOff 5 5m5sregistry-deployment 0/1 CrashLoopBackOff 20 80m
[root@k8s-master k8s_spider]# kubectl logs private-image-test-1standard_init_linux.go:211: exec user process caused "exec format error"
遇到這種問(wèn)題一般都是鏡像問(wèn)題,當(dāng)前鏡像不能在當(dāng)前docker環(huán)境中執(zhí)行,比如你的鏡像是基于arm架構(gòu)CPU編譯,把鏡像放到x86下運(yùn)行,自然就會(huì)出現(xiàn)鏡像不兼容導(dǎo)致格式錯(cuò)誤。
3、鏡像下載問(wèn)題
在某些環(huán)境下可能會(huì)出現(xiàn)本臺(tái)機(jī)器不能連接外網(wǎng)或者docker倉(cāng)庫(kù)這個(gè)時(shí)候我們可以通過(guò)如下方式把鏡像導(dǎo)入進(jìn)來(lái):
1. 保存鏡像
docker save -o ./coredns.tar k8s.gcr.io/coredns:1.3.1
2.導(dǎo)出鏡像
docker load --input coredns.tar
用戶也可以使用 docker import 導(dǎo)入export導(dǎo)出一個(gè)容器快照到本地鏡像庫(kù)。這兩者的區(qū)別在于 import 容器快照文件將丟棄所有的歷史記錄和元數(shù)據(jù)信息(即僅保存容器當(dāng)時(shí)的快照狀態(tài)),而鏡像存儲(chǔ)文件將保存完整記錄,體積也要大。此外,從容器快照文件導(dǎo)入時(shí)可以重新指定標(biāo)簽等元數(shù)據(jù)信息。
4、無(wú)法獲取到當(dāng)前節(jié)點(diǎn)、pod 提示6443端口不通,如下所示:
Failed to list *v1.ConfigMap: Get https://192.168..20:6443/api/v1/namespaces/default/configmaps?fieldSelector=metadata.name%3Deoa-group-config&limit=500&resourceVersion=0: dial tcp 192.168.7.240:6443: connect: connection refused
出現(xiàn)此類問(wèn)題,大多是沒(méi)安裝監(jiān)控軟件,某個(gè)節(jié)點(diǎn)出現(xiàn)問(wèn)題,管理員沒(méi)有察覺(jué)導(dǎo)致,比如OS問(wèn)題或者磁盤打滿問(wèn)題導(dǎo)致,可以查看系統(tǒng)是否正常,然后重啟kubelet解決問(wèn)題。
systemctl restart kubelet
5、執(zhí)行apply服務(wù)配置不生效
kubectl apply xxx.yaml會(huì)檢測(cè)當(dāng)前yaml是否有變化,如果修改了服務(wù)中其他配置而沒(méi)有修改yaml,直接apply,那么kubectl會(huì)認(rèn)為沒(méi)有變化,故配置不能生效,這時(shí)要使用kubectl delete/create命令使其生效。
感謝各位的閱讀,以上就是“Kubernetes集群環(huán)境常見(jiàn)的問(wèn)題及解決方法”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Kubernetes集群環(huán)境常見(jiàn)的問(wèn)題及解決方法這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。