Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 4.66 KB

TroubleShooting-CN.md

File metadata and controls

63 lines (47 loc) · 4.66 KB

常见故障排错方法

  1. 前端Web UI的日志如果还不能判断出具体问题所在,可以在部署机上输入命令 docker logs -f deploy-main 来获取更详细的日志

  2. docker、harbor、etcd、k8s这四个角色是缺一不可的,不能缺少组件,如果需要高可用,则Loadbalance角色必选。

  3. 节点主机内存不能太低,建议最少4G配置,否则kubeadm部署过程中master节点可能会卡死在等待kubelet服务启动的过程中而导致最终部署失败。

  4. Breeze部署工具底层是调用ansible执行playbook脚本,所以对宿主机环境而言,python的版本兼容性是相关联的,如果在部署中看见了Failed to import docker-py - No module named 'requests.packages.urllib3'. Try pip install docker-py这样的信息,请修正您宿主机的python依赖问题后再进行部署。 参考方法如下:

yum remove -y python-docker-py
pip install urllib3==1.21.1
pip install docker-py

解决后的验证条件是能正常运行下面命令不出错:

python
import docker
  1. Breeze暂不支持非root账号的环境部署,因此请确保您部署机到各个服务器节点是直接root ssh免密的。

  2. 部署好之后,dashboard的端口是30300,但是谷歌浏览器是不可以访问的,火狐可以,这个是浏览器安全设置问题,和部署没有关系。

  3. 如果机器性能不是特别强,建议第一次部署时不勾选Prometheus角色,等k8s集群部署并运行就绪后单独勾选Prometheus角色进行部署以免失败。

  4. 在部署机上,一定不要忘记执行“(1)对部署机取消SELINUX设定及放开防火墙”,否则会导致selinux的限制而无法创建数据库文件cluster.db,页面提示“unable to open database file”。

  5. 不要这样去关闭防火墙 systemctl stop firewalld 或 systemctl disable firewalld,我们的部署过程中已经做了正确的防火墙规则设定,服务是必须开启的,只是设定为可信任模式,也就是放开所有访问策略,如果你需要设定严格的防火墙规则,请自行学习研究清楚firewall-cmd的用法。

详细注解: iptables与firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,或者说,它们只是一种服务。iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。对于RHEL/CentOS 7系列,我们推荐的做法就是删掉iptables服务启用firewalld服务,注意不是删掉iptables命令。然后用命令firewall-cmd --set-default-zone=trusted来“关闭”防火墙。这样docker和kubernetes运行时才不会出故障。 docker最终还是要调用iptables命令的,它不在乎你的系统底层究竟是iptables服务还是firewalld服务,总之要么转换成netfilter模块执行要么转换成nftables模块执行。我们的部署程序,在安装docker的环节中,已经为您的主机做了这样的设置。也就是防火墙服务是active的,但是policy是trusted,这样是最佳方法。当然如果您实际生产环境不允许过于宽松的防火墙,可以手动再去使用firewall-cmd命令控制严格的具体ACL条目。

  1. 所有被部署的服务器在部署工作开始之前请使用命令:

    hostnamectl set-hostname 主机名 
    

    确保环境合规。

  2. 如果部署机经常用来做不同版本的部署,则需要在部署新版本前做清理,命令如下:

更新docker-compose.yaml文件之前:

docker-compose stop
docker-compose rm -f
docker volume rm $(docker volume ls |grep playbook |awk '{print $2}')

下载新的docker-compose.yaml文件并执行:

docker compose up -d
  1. 重置组件相关注意事项 (1)重置所有组件不可以一次性勾选所有组件并点击重置,因为重置动作依赖于docker,因此应按照以下顺序进行组件的重置: prometheus、kubernetes、etcd、loadbalancer、harbor 可以一并勾选 docker 上述组件重置完毕后再勾选进行重置

(2)重置开始后,UI并不能动态刷新日志,需要人工手动刷新日志页面,待看见所有的重置都正常完成才表示重置过程结束

(3)重置过程并不能多次执行,例如第一次重置正常,那么组件已经被删除,再做重置就会报错了

(4)在宿主机某些软件设置不规范导致了K8S的安装失败,比如内存配置过低,提高了内存后重新部署,建议只需重置etcd和kubernetes组件再重新部署这两个组件即可。其它组件无需重新部署。