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

本文是Rancher 2.0部署與使用過程當中常見的問題及其解決方法,多數問題整理收集自Rancher官方技術交流羣內用戶的提問與反饋。歡迎掃描文末二維碼,添加Rancher小助手爲好友,加羣得到更多技術支持。node


本文主要內容爲:linux

一、部署Rancher 2.0的環境需求
推薦使用的操做系統
推薦的硬件配置
支持的docker版本
防火牆須要容許經過的端口git

二、部署過程當中的常見問題及排查思路
環境信息殘留
openssh版本太低問題
nodeport端口只有一臺機器能訪問
部署使用calico網絡部署環境失敗問題
部署時主機not found問題
web頁面kubectl閃退問題
非worker節點仍然被調度pod問題
it is a not share mount 問題
networkredy=false 問題
集羣 unavailablegithub

環境需求

推薦使用的操做系統web

Ubuntu 16.04 (64-bit)
Red Hat Enterprise Linux 7.5 (64-bit)
RancherOS 1.3.0 (64-bit)docker

推薦的硬件配置centos

圖片描述

支持的docker版本api

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...

須要您進行如下操做:

  1. 確保您的openssh版本大於等於7.x
  2. 修改sshd配置打開重啓sshd
  3. 默認centos和rhel不能使用root用戶進行ssh tunnel,因此須要使用一個普通用戶
  4. 並將這個用戶加入docker這個Group,useradd –G docker yourusername

nodeport端口只有一臺機器能訪問

只能訪問一臺宿主機的nodeport,而且仍是pod所在那臺機器,出現這種問題很大緣由是由於跨集羣網絡有問題,或本地防火牆問題。排查思路以下:

一、在宿主機本機telnet localhost:nodeort看看是否能通,本機能通,在集羣內互相telnet測試,若是不能通根部署環境網絡有很大關係,建議聯繫網絡管理員進行排查。

若是本機telnet也不能通,進行以下測試。

二、首先咱們須要或取對應的pod 信息

圖片描述

好比我這個test-6b4cdf4ccb-7pzt6在rancher-kf-worker01節點上,它的ip爲10.42.3.23

三、先在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的日誌。

總結
一、部署時能嚴格按照官方給出的操做系統版本和docker版本部署,能夠避免掉不少問題。

二、屢次部署,升級,環境必定要按照環境信息殘留章節的命令,將環境清理乾淨。

三、若是遇到問題,建議docker logs 查看rancher-agent,rancher-server的日誌。

相關文章
相關標籤/搜索