共計 3129 個字符,預計需要花費 8 分鐘才能閱讀完成。
本篇文章給大家分享的是有關 Rancher 2.0 部署過程中常見問題分析與解決方法,丸趣 TV 小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著丸趣 TV 小編一起來看看吧。
Rancher 2.0 部署與使用過程中常見的問題及其解決方法,多數問題整理收集自 Rancher 官方技術交流群內用戶的提問與反饋。環境需求
推薦使用的操作系統
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/rke/issues/93
需要您進行以下操作:
確保您的 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。(后期會優化此項)
部署時主機 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/kubernetes/issues/4869#issuecomment-195696990
解決方法:
執行
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 的日志。
以上就是 Rancher 2.0 部署過程中常見問題分析與解決方法,丸趣 TV 小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注丸趣 TV 行業資訊頻道。