本文是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...
须要您进行如下操做:
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的日志。