本文是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)

推薦的硬體配置

Rancher 2.0部署過程中常見問題分析與解決

支援的docker版本

1。12。6

1。13。1

17。03。02

防火牆請允許透過已下埠

Rancher 2.0部署過程中常見問題分析與解決

常見問題與排查思路

環境資訊殘留

目前部署中,大部分問題都是因為由於部署環境的作業系統,或多次部署,升級後殘留的的資訊造成的。

部署前或部署時,請使用以下命令將環境的各類資訊清理乾淨:

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部署時會出現如下問題:

Rancher 2.0部署過程中常見問題分析與解決

參考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 資訊

Rancher 2.0部署過程中常見問題分析與解決

比如我這個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。(後期會最佳化此項)

Rancher 2.0部署過程中常見問題分析與解決

][6]

部署時主機not found問題

出現這個問題是因為宿主機的主機名不符合kubernetes的標準主機名要求也不符合標準的linux主機名,主機名內不能有下劃線。

Rancher 2.0部署過程中常見問題分析與解決

獲取元件健康狀態forbidden問題

Rancher 2.0部署過程中常見問題分析與解決

大部分原因是因為部署多次,證書殘留的導致的,解決辦法,按照環境資訊殘留裡面的方法把環境清空下,在重新新增。

web頁面kubectl閃退問題

這個主要根作業系統版本和瀏覽器的版本有關係,請使用上推薦使用作業系統中的作業系統,瀏覽器使用Chrome

非worker節點仍然被排程pod問題

目前rancher2。0非worker節點,仍然會被排程pod過去,您可以選擇手動將它們從kube-scheduler踢除,命令如下:

在獲取節點在kubernetes叢集的名字

開啟web頁面kubectl

Rancher 2.0部署過程中常見問題分析與解決

然後執行

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問題

Rancher 2.0部署過程中常見問題分析與解決

這個問題通常是,在部署時網路元件在初始化,在配置,等待段時間就好了。或在對應節點檢視kubelet日誌的docker logs kubelet。

叢集unavailable

Rancher 2.0部署過程中常見問題分析與解決

通常此問題,是因為rancher-server根kubernetes中的kube-apiserver 6443埠連線有問題,建議檢查防火牆和檢視kube-api-server的日誌。

總結

1、部署時能嚴格按照官方給出的作業系統版本和docker版本部署,可以避免掉很多問題。

2、多次部署,升級,環境一定要按照環境資訊殘留章節的命令,將環境清理乾淨。

3、如果遇到問題,建議docker logs 檢視rancher-agent,rancher-server的日誌。

微訊號:RancherLabs