本文是Rancher 2。0部署與使用過程中常見的問題及其解決方法,多數問題整理收集自Rancher官方技術交流群內使用者的提問與反饋。歡迎掃描文末二維碼,新增Rancher小助手為好友,加群獲得更多技術支援。
本文主要內容為:
1、部署Rancher 2。0的環境需求
推薦使用的作業系統
推薦的硬體配置
支援的docker版本
防火牆需要允許透過的埠
2、部署過程中的常見問題及排查思路
環境資訊殘留
openssh版本過低問題
nodeport埠只有一臺機器能訪問
部署使用calico網路部署環境失敗問題
部署時主機not found問題
web頁面kubectl閃退問題
非worker節點仍然被排程pod問題
it is a not share mount 問題
networkredy=false 問題
叢集 unavailable
環境需求
推薦使用的作業系統
Ubuntu 16。04 (64-bit)
Red Hat Enterprise Linux 7。5 (64-bit)
RancherOS 1。3。0 (64-bit)
推薦的硬體配置
支援的docker版本
1。12。6
1。13。1
17。03。02
防火牆請允許透過已下埠
常見問題與排查思路
環境資訊殘留
目前部署中,大部分問題都是因為由於部署環境的作業系統,或多次部署,升級後殘留的的資訊造成的。
部署前或部署時,請使用以下命令將環境的各類資訊清理乾淨:
df -h|grep kubelet |awk -F % ‘{print $2}’|xargs umount
rm /var/lib/kubelet/* -rf
rm /etc/kubernetes/* -rf
rm /var/lib/rancher/* -rf
rm /var/lib/etcd/* -rf
rm /var/lib/cni/* -rf
iptables -F && iptables -t nat –F
ip link del flannel。1
docker ps -a|awk ‘{print $1}’|xargs docker rm -f
docker volume ls|awk ‘{print $2}’|xargs docker volume rm
openssh版本過低問題
centos或rhel系統並且版本低於7。4的,因為預設的openssh和openssl和紅帽系ssh預設將AllowTcpForwarding 關閉了,rke部署時會出現如下問題:
參考issue:
https://github。com/rancher/rk。。。
需要您進行以下操作:
確保您的openssh版本大於等於7。x
修改sshd配置開啟重啟sshd
預設centos和rhel不能使用root使用者進行ssh tunnel,所以需要使用一個普通使用者
並將這個使用者加入docker這個Group,useradd –G docker yourusername
nodeport埠只有一臺機器能訪問
只能訪問一臺宿主機的nodeport,並且還是pod所在那臺機器,出現這種問題很大原因是因為跨叢集網路有問題,或本地防火牆問題。排查思路如下:
1、在宿主機本機telnet localhost:nodeort看看是否能通,本機能通,在叢集內互相telnet測試,如果不能通根部署環境網路有很大關係,建議聯絡網路管理員進行排查。
如果本機telnet也不能通,進行如下測試。
2、首先我們需要或取對應的pod 資訊
比如我這個test-6b4cdf4ccb-7pzt6在rancher-kf-worker01節點上,它的ip為10。42。3。23
3、先在pod所在的宿主機上然後在另外幾個節點去ping這個ip,看看能否ping通,在canal網路模式下,請檢查防火牆埠8472/UDP是否開放。檢視每天機器上是否有嘗試使用每臺機器的flannel。1網絡卡,用的話,用flannel。1上的ip互相ping,看看是否能通,因為flannel網路和canal網路是透過flannel。1網絡卡互相建立vxlan遂道的。建議操作在關閉防火牆的情況下測試。
部署使用calico網路部署環境失敗問題
部署rancher2。0時網路型別為calico時,如果cloud provider預設不填會選用公有云的,導致部署失敗,所以這裡我們需要手動填寫為none。(後期會最佳化此項)
][6]
部署時主機not found問題
出現這個問題是因為宿主機的主機名不符合kubernetes的標準主機名要求也不符合標準的linux主機名,主機名內不能有下劃線。
獲取元件健康狀態forbidden問題
大部分原因是因為部署多次,證書殘留的導致的,解決辦法,按照環境資訊殘留裡面的方法把環境清空下,在重新新增。
web頁面kubectl閃退問題
這個主要根作業系統版本和瀏覽器的版本有關係,請使用上推薦使用作業系統中的作業系統,瀏覽器使用Chrome
非worker節點仍然被排程pod問題
目前rancher2。0非worker節點,仍然會被排程pod過去,您可以選擇手動將它們從kube-scheduler踢除,命令如下:
在獲取節點在kubernetes叢集的名字
開啟web頁面kubectl
然後執行
kubectl taint node rancher-kf-control01 node-role。kubernetes。io/rancher-kf-control01=“”:NoSchedule
kubectl taint node rancher-kf-control02 node-role。kubernetes。io/rancher-kf-control02=“”:NoSchedule
kubectl taint node rancher-kf-control03 node-role。kubernetes。io/rancher-kf-control03=“”:NoSchedule
it is a not share mount問題
部署時遇到share mount問題時,報錯提示如下:
FATA[0180] [workerPlane] Failed to bring up Worker Plane: Failed to start [kubelet] container on host [192。168。10。51]: Error response from daemon: linux mounts: Path /var/lib/kubelet is mounted on / but it is not a shared mount。
這個問題原因主要是kubelet容器化部署,需要手動設定docker的MuntFLAGS為空
https://github。com/kubernetes。。。
解決方法:
執行
mount ——make-shared /
或配置docker。server
MountFlags=shared
重啟docker。service
NetworkRedy=false問題
這個問題通常是,在部署時網路元件在初始化,在配置,等待段時間就好了。或在對應節點檢視kubelet日誌的docker logs kubelet。
叢集unavailable
通常此問題,是因為rancher-server根kubernetes中的kube-apiserver 6443埠連線有問題,建議檢查防火牆和檢視kube-api-server的日誌。
總結
1、部署時能嚴格按照官方給出的作業系統版本和docker版本部署,可以避免掉很多問題。
2、多次部署,升級,環境一定要按照環境資訊殘留章節的命令,將環境清理乾淨。
3、如果遇到問題,建議docker logs 檢視rancher-agent,rancher-server的日誌。
微訊號:RancherLabs