【问题标题】:Worker nodes not available工作节点不可用
【发布时间】:2018-01-19 23:28:42
【问题描述】:

我已经在 Virtual Box 中设置并安装了带有两个 ubuntu 映像的 IBM Cloud 私有 CE。我可以 ssh 进入这两个图像,并从那里 ssh 进入其他图像。 ICp 仪表板仅显示一个活动节点,我预计会有两个。

我明确地运行了命令(从主节点上的 root 用户):

docker run -e LICENSE=accept --net=host \
  -v "$(pwd)":/installer/cluster \
  ibmcom/cfc-installer install -l \
  192.168.27.101

这条命令的结果似乎是成功添加了worker节点:

PLAY RECAP *********************************************************************
192.168.27.101             : ok=45   changed=11   unreachable=0    failed=0

但是工作节点仍然没有显示在仪表板中。

我应该检查什么以确保工作节点可以为主节点工作?

【问题讨论】:

    标签: ibm-cloud-private


    【解决方案1】:

    如果您使用 Vagrant 来配置 IBM Cloud Private,我强烈建议您尝试https://github.com/IBM/deploy-ibm-cloud-private

    该项目将使用 Vagrantfile 配置主服务器/代理服务器,然后使用 LXD在映像中配置 2 个工作人员。与运行两个完整的 Virtual Box 映像(1 个用于主/代理,1 个用于工作器)相比,使用此配置,您将在笔记本电脑上获得更好的密度和性能。

    【讨论】:

      【解决方案2】:

      您可以通过以下步骤检查您的工作节点:

      1. 检查集群节点状态 kubectl get nodes查看新添加的worker节点的状态

      2. 如果是NotReady,检查kubelet日志是否有关于kubelet无法正常运行的错误信息:

        • ICp 2.1 systemctl status kubelet
        • ICp 1.2 docker ps -a|grep kubelet 获取 kubelet_containerid, docker logs kubelet_containerid

      【讨论】:

      • 谢谢@rebecca-guo。我运行了命令(ICp 2.1beta),一切似乎都很好。 kubelet.service - Kubelet 服务已加载:已加载(/etc/systemd/system/kubelet.service;已启用;供应商预设:已启用) 活动:自 2017 年 9 月 14 日星期四 18:11:20 UTC 起活动(运行); 50 分钟前 Docs: ... Main PID: 1173 (hyperkube) Tasks: 21 Memory: 145.8M CPU: 3min 788ms CGroup: /system.slice/kubelet.service ├─1173 /opt/kubernetes/hyperkube kubelet --feature-gates Accelerators=true --allow-privileged=true --docker-disable-shared-p └─1603 journalctl -k -f
      • 如果你在工作节点上运行docker ps -a,你会得到什么,你能看到任何退出的容器吗?如果是,你能进入容器看看是否有任何错误消息吗?
      • 感谢丽贝卡的提示!玩了一会儿后,我注意到这个容器(ibmcom/calico-node)一直在退出。日志说: time="2017-09-14T21:39:35Z" level=info msg="NODENAME environment not specified - check HOSTNAME" 并且 Calico 节点 'icpworker1' 已经在使用 IPv4 地址 10.0.3.15:
      • 如果icpworker1是你的新工作节点尝试添加,请检查你的/etc/hosts文件中是否有127.0.1.1 localhost,请删除它
      • 谢谢丽贝卡。我认为那里有一个 127.0.0.1 映射。删除它,一切都很好!
      【解决方案3】:

      运行这个让 kubectl 工作

      ln -sf /opt/kubernetes/hyperkube /usr/local/bin/kubectl 
      

      如果在主节点上的设置中有任何失败的 pod,请运行以下命令来识别失败的 pod。

      运行此命令以获取在环境中运行的 pod 详细信息 kubectl -n kube-system 获取 pods -o 宽

      用于重启任何失败的 icp pod

      txt="0/";ns="kube-system";type="pods"; kubectl -n $ns get $type | grep "$txt" | awk '{ print $1 }' | xargs kubectl -n $ns delete $type
      

      现在运行 kubectl 集群信息

      kubectl 获取节点

      然后检查kubectl的集群信息命令

      Check kubectl version is giving you https://localhost:8080  or https://masternodeip:8001
      

      kubectl 集群信息

      你得到输出了吗

      如果没有.. 那么

      login to https://masternodeip:8443 using admin login
      

      然后通过单击面板上的 admin 复制配置 clientcli 设置 将其粘贴到您的主节点中。

      并运行 kubectl 集群信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-16
        • 2018-10-18
        相关资源
        最近更新 更多