二進制k8s部署后的一些問題解決
問題一:虛擬機掛起之后重開,發現etcd集群其中一個節點起不來(k8s-1)
用這個命令在k8s-1啟動,怎么樣都起不來:supervisorctl start etcd-server-7-128
用一個正常起了etcd的服務器(k8s-2)運行命令:
ETCDCTL_API=3 /opt/apps/etcd/etcdctl --cacert=/opt/apps/etcd/certs/ca.pem --cert=/opt/apps/etcd/certs/etcd-peer.pem --key=/opt/apps/etcd/certs/etcd-peer-key.pem --endpoints="https://10.4.7.128:2379,https://10.4.7.129:2379,https://10.4.7.130:2379" endpoint health
說的128連接不了
查看128報錯信息:
etcd起不來,apiserver都起不了了
W1201 13:41:22.278707 8011 clientconn.go:1251] grpc: addrConn.createTransport failed to connect to {10.4.7.130:2379 0 <nil>}. Err :connection error: desc = "transport: Error while dialing dial tcp 10.4.7.130:2379: connect: net
work is unreachable". Reconnecting...
問題解決:檢查回環接口是否正常監聽127.0.0.1
etcd啟動文件有個監聽127.0.0.1的配置: /opt/apps/etcd/etcd-server-startup.sh
查看該機器的回環網口,確實沒有監聽127.0.0.1
檢查下 ifcfg-lo,ip地址有設置成127.0.0.1 。 重啟網絡就可以了:systemctl restart network
問題二: kubectl get nodes 返回 No resources found.
查看報錯日志:/data/logs/kubernetes/kube-kubelet/kubelet.stdout.log
說這個k8s-node 用戶沒有權限
問題解決:想起部署文章有個這樣的用戶授權
重新運行下就好了:
kubectl create -f k8s-node.yaml
kubectl get clusterrolebinding k8s-node
至於為啥沒有了這些信息。因為我后來把etcd節點從兩個增加到三個了,其中增加第3個節點的時候報錯,網上說要刪除這個data-dir目錄才能添加上,etcd是利用data-dir來進行數據的持久化保存的。之后要搞個etcd備份腳本才行,不然東西一多,數據壞了啥都沒有
別人給的etcd持久化備份腳本(先留着)

1 cat bk_etcd.sh 2 #!/bin/bash 3 set -e 4 exec >> /opt/backup_week/backup_etcd.log 5 6 Date=`date +%Y-%m-%d-%H-%M` 7 EtcdEndpoints="localhost:2379" 8 EtcdCmd="/opt/etcd/etcdctl" 9 BackupDir="/opt/backup_week" 10 BackupFile="etcd.db.$Date" 11 12 echo "`date` backup etcd..." 13 14 export ETCDCTL_API=3 15 $EtcdCmd --endpoints $EtcdEndpoints snapshot save $BackupDir/$BackupFile 16 17 echo "`date` backup done!"
問題三:kubectl get pods -o wide 返回pod狀態為:ImagePullBackOff
查看pod的日志:kubectl describe pod nginx-ds-68x2r
問題排查及解決:
1、首先檢查下docker的配置文件 /etc/docker/daemon.json是否有把私有倉庫地址添加進來 ——》 沒問題
2、curl 和 telnet harbor倉庫地址是否可以 ——》 沒問題
3、看看docker 是否有nginx這個鏡像 ——》 發現沒有
docker images
4、嘗試重新拉取nginx鏡像 ——》報錯
docker pull harbor.odljy.com/public/nginx:latest (前面應該要先運行下docker login 看看是否有登錄權限)
5、最后重啟docker和harbor服務就解決了,估計網絡有問題(之前有交代過虛擬機有關過機,還有掛起操作重起,估計影響到吧。。。)
然后跑pod的node要是能成功的話,本地應該是有nginx鏡像的
get pod 也有返回了,不再是ImagePullBackOff 狀態
參考文檔:
http://dockone.io/article/10055
http://dockone.io/article/2247