Rancher 2.0部署过程中常见问题分析与解决

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


防火墙请允许通过已下端口


Protocol


Port range


Purpose


tcp


22


ssh server


tcp


80


Rancher Server/ingress


tcp


443


Rancher Server/ingress


tcp


6443


kubernetes api server


tcp


2379-2380


etcd server client api


tcp


10250-10256


kubernetes components


tcp


30000-32767


nodeport services


udp


8472


canal

常见问题与排查思路

环境信息残留

目前部署中,大部分问题都是因为由于部署环境的操作系统,或多次部署,升级后残留的的信息造成的。

部署前或部署时,请使用以下命令将环境的各类信息清理干净:

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

需要您进行以下操作:

1. 确保您的openssh版本大于等于7.x

2. 修改sshd配置打开重启sshd

3. 默认centos和rhel不能使用root用户进行ssh tunnel,所以需要使用一个普通用户

4. 并将这个用户加入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的日志。

原文地址:http://blog.51cto.com/12462495/2119381

时间: 2024-10-10 01:13:53

Rancher 2.0部署过程中常见问题分析与解决的相关文章

Maven部署过程中的ClassCastException问题

引言: Maven功能强大,但是又有些复杂,难以捉摸和使用.在本人开发中碰到了一个ClassCastException的问题,通过这个问题的解决,加深了对于maven依赖管理中scope的理解. 1. 问题的引入 部署环境tomcat 7, 开发中使用的框架spring,spring data,hibernate之类的,基于Maven部署过程中,会出现以下异常信息: SEVERE: Exception starting filter Spring OpenEntityManagerInViewF

zabbix3.0安装过程中出现的问题

1.   zabbix3.0 安装过程中修改完php.ini的文件重新启动php-fpm没有效果 可以到phpinfo里面看php.ini的默认位置 或者php-fpm启动的时候指定配置文件(-c  file) 2.连接mysql的过程中遇到can't connect to local MySQL server through socket "/tmp/mysql.sock" 如图 更改php.ini配置文件中的 pdo_mysql.default_socket= mysqli.def

CUDA程序编译过程中产生警告的解决方法

有时候经常使用别人用Tabhost+其它的实现demo.单纯利用Tabhost该如何使用呢? 下面看例子: public class MainActivity extends TabActivity { public TabHost tabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取对象 tabHost = getTabH

Unity5.x 项目升级过程中常见问题解决方案总结

最近整理Unity4.x 项目升级Unity5.0 过程中出现的各种常见问题,与大家共享. 1:Unity4.x 项目中3D模型其材质丢失,成为"白模"?      解决方案:手工重新赋值材质贴图. 2:Unity4.x 项目中的NavMesh 升级报错?     "NavMesh asset format has changed. Please rebake the NavMesh data." ?     解决方案:按照字面含义,重新对静态物体进行烘焙即可. 3

ADFS部署过程中设置network service对证书的读取权限

今儿在部署客户正式环境的ADFS时候遇到一问题,在配置完基于声明的身份验证后通过url访问居然报错了,这干过N回的事怎么会出错了呢,百思不得其解 网页报错如下 系统日志报错如下, 回想过程中的每一步,突然想到这回好像没对证书做什么操作,因为证书是客户买的由他们IT人员导入好了的,我就直接在绑定的时候选择下就行了,所以少了一步操作.通过管理工具点开证书右击所有任务-管理私钥-添加NetWork Service,再次访问就没问题了. 下图取自勇哥的博客

AppScan8.0使用过程中问题记录

一.AppScan安装时出现错误1603. 是因为之前安装过,没有卸载干净导致报错.解决方法如下: 1.控制面板→程序和功能→选中程序卸载. 2.删除AppScan安装路径以及下面的所有内容. 3.在系统[开始]->[运行(R)...]中,运行命令regedit来删除全部注册键(如果存在的话),以及下列的子 键: A.HKEY_LOCAL_MACHINE\SOFTWARE\IBM\ Rational AppScan B.HKEY_CURRENT_USER\Software\IBM\ Ration

Android Studio使用过程中常见问题及解决方案

熟悉Android的童鞋应该对Android Studio都不陌生.Android编程有两个常用的开发环境,分别是Android Studio和Eclipse,之前使用比较多的是Eclipse,而现在呢,由于Android Studio的优越性,越来越多的人转而使用它了. 随着Android Studio使用人数的增加,使用过程中的问题也日益凸显,本文小编就整理了一些Windows系统下使用Android Studio的常见问题及解决方案,大家可以围观围观,遇到类似问题,不妨可以试试小编下面分享

SAP HANA项目过程中优化分析以及可行性验证

在项目开发过程中,经常会遇到HANA模型运行效率的问题: 以我们项目为例,HANA平台要求模型运行时间不能超过10秒,但是在大数量和计算逻辑复杂的情况下(例如:ERP中的BKPF和BSEG量表的年数据总量超过20亿条),HANA模型的运行时间基本上都在1分钟以上.在不关联其它表,单单是几个板块的BKPF和BSEG表UNION ALL,运行时间都超过1分钟.鉴于这种情况,项目组对HANA模型是否存在优化空间,进行了分析和探讨,也请教了HANA平台的专家对HANA的优化给出可行性建议. 最终的分析结

编译recovery及过程中的部分错误解决

你必须使用32位或64位Ubuntu系统,关于如何建立编译环境和同步源码的指导,请自己查找有关指导的文章. 1, 安装所需要的包 2, 建立编译的环境,并同步CWM所需的源码,CyanogenMod源码中附带CWM源码 CWM 5 - Gingerbread CWM 6 - Jellybean 3, 下面我们进入真正的编译阶段,确保你已经使用“repo sync ”命令同步了最新的源码 进入源码的目录 放出以下命令:      make -j4 otatools 3.5, 如果你的机型不被CM1