我正在做本教程创建 kubernetes 集群Ubuntu 16.04
(我使用的是 18.04,但目前还没有关于该版本的教程)。我完成了前三个步骤,一切顺利。我现在正尝试初始化集群,其中包含主节点,但有点卡住了。
当我运行master.yml
剧本时
ansible-playbook -i hosts ~/kube-cluster/master.yml
我得到以下输出:
$ ansible-playbook -i hosts master.yml
/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.24.1) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
PLAY [master] *********************************************************************************
TASK [Gathering Facts] ************************************************************************
ok: [master]
TASK [initialize the cluster] *****************************************************************
changed: [master]
TASK [create .kube directory] *****************************************************************
[WARNING]: Module remote_tmp /home/ubuntu/.ansible/tmp did not exist and was created with a
mode of 0700, this may cause issues when running as another user. To avoid this, create the
remote_tmp dir with the correct permissions manually
changed: [master]
TASK [copy admin.conf to user's kube config] **************************************************
changed: [master]
TASK [install Pod network] ********************************************************************
changed: [master]
PLAY RECAP ************************************************************************************
master : ok=5 changed=4 unreachable=0 failed=0
与教程相比,唯一不同的是有关/home/ubuntu/.ansible/tmp
目录权限的警告。当我通过 ssh 进入主节点服务器并运行
kubectl get nodes
我得到以下结果:
NAME STATUS ROLES AGE VERSION
ip-address NotReady master 16m v1.12.2
而不是期望的
NAME STATUS ROLES AGE VERSION
master Ready master 16m v1.12.2
我尝试tmp
在服务器上使用 ubuntu 用户创建目录,以便解决警告。不幸的是,这不会改变主节点未准备好或其 IP 地址为 的任何情况NAME
。
问题:我该如何解决这个问题?如何正确初始化集群,以便主节点配置正确并准备就绪?
答案1
我研究了您的问题,并使用 Vagrant 运行节点创建了相同的问题实例。
回购这里,如果你想尝试使用 vagrant 来协调节点设置
和你一样,我也遇到了你描述的问题。事实证明,Flannel 在 ubuntu bionic 上存在一些 coredns 问题。Flannel 干扰 coredns 设置并导致其处于待处理状态。
你可以使用它来检查 Pod 状态
ubuntu@ubuntu-bionic:~$ kubectl get pods --namespace=kube-system
NAME READY STATUS RESTARTS AGE
coredns-576cbf47c7-hlvdj 0/1 Pending 0 52m
coredns-576cbf47c7-xmljj 0/1 Pending 0 52m
etcd-ubuntu-bionic 1/1 Running 0 52m
kube-apiserver-ubuntu-bionic 1/1 Running 0 52m
kube-controller-manager-ubuntu-bionic 1/1 Running 0 52m
kube-proxy-gvqk4 1/1 Running 0 52m
kube-scheduler-ubuntu-bionic 1/1 Running 0 51m
kubernetes-dashboard-77fd78f978-5flj8 0/1 Pending 0 4m30s
经过几次搜索,我找到了一个修复链接这里在他们的问题页面上。
安装不同的 CNI,他们在那里使用编织。
kubectl 应用-f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl 版本 | base64 | tr -d '\n')"
更多细节这里来自文档
从那里开始,您的容器应该启动,并且 coredns pods 应该运行。
ubuntu@ubuntu-bionic:~$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-576cbf47c7-jrlbb 1/1 Running 0 11m
coredns-576cbf47c7-nfjq8 1/1 Running 0 11m
etcd-ubuntu-bionic 1/1 Running 0 10m
kube-apiserver-ubuntu-bionic 1/1 Running 0 10m
kube-controller-manager-ubuntu-bionic 1/1 Running 0 10m
kube-proxy-nrbpx 1/1 Running 0 11m
kube-scheduler-ubuntu-bionic 1/1 Running 0 10m
weave-net-459mw 2/2 Running 0 10m
最后
ubuntu@ubuntu-bionic:~$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu-bionic Ready master 14m v1.12.2