Docker EE环境下安装UCP失败:节点docker-ee-test未就绪
我之前部署UCP 3.0.1的时候也碰到过一模一样的节点未就绪卡住的问题,结合你给出的容器状态和日志信息,咱们可以从这几个方向一步步排查解决:
1. 先确认节点的网络基础配置
首先得检查你安装命令里指定的--host-address 192.168.140.131是不是节点上真实可访问的IP——别是回环地址或者其他容器没法访问的IP。在节点主机上先ping一下这个IP,确保能通:
ping 192.168.140.131
另外,一定要检查节点的防火墙/安全组,把UCP和K8s需要的端口都放开:
- K8s API端口:6443
- Swarm管理端口:2376
- UCP组件端口:12381-12387
- K8s节点间通信端口:10250、10251、10252
2. 重点排查ucp-kubelet容器
从你的容器列表能看到,ucp-kubelet虽然处于Up状态,但没有标注(healthy)——这大概率是节点未就绪的核心原因。先看看它的日志,找具体错误:
docker logs bde445bbe390
常见的kubelet异常原因包括:
/var/lib/docker或/var/lib/kubelet目录权限不对,或者磁盘空间不足,先检查这两个目录的权限和剩余空间:ls -ld /var/lib/docker /var/lib/kubelet df -h /var/lib/docker- kubelet连不上K8s API服务器(也就是
ucp-kube-apiserver),可以进到kubelet容器里测试连接:docker exec -it bde445bbe390 curl https://192.168.140.131:6443/healthz
如果连接失败,再去看ucp-kube-apiserver的日志,排查证书或者配置问题。
3. 查看ucp-agent和ucp-reconcile的详细日志
ucp-reconcile只提示节点未就绪,得看更底层的ucp-agent日志,确认它能不能正常注册节点:
docker logs 94b731b8326b
再看看ucp-reconcile的完整日志,有没有藏在“Node not ready”后面的具体错误,比如节点标签缺失、污点问题,或者Docker EE版本和UCP不兼容(UCP 3.0.1要求Docker EE 17.06及以上版本,先确认你的Docker版本符合要求):
docker logs fd1db7b339da
4. 用kubectl直接检查节点状态
如果UCP的K8s API已经能访问,咱们可以用UCP自带的kubectl工具查看节点的详细状态:
docker run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.1 kubectl get nodes
要是看到节点状态是NotReady,就用describe命令看具体原因——比如磁盘压力、内存不足、PID资源不够之类的:
docker run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.1 kubectl describe node docker-ee-test
5. 重置后重新安装UCP
如果上面的排查都没解决问题,那就先彻底清理现有UCP组件,再重新安装:
docker container run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.1 uninstall --interactive
清理完成后,检查节点上有没有残留的UCP容器和数据卷(用docker ps -a和docker volume ls确认),然后重新执行安装命令,注意检查--pod-cidr 10.0.0.0/16会不会和节点的现有网络冲突。
内容的提问来源于stack exchange,提问作者DenCowboy

