我有2个VM节点。两者都通过主机名(通过/ etc / hosts)或通过ip地址相互看到。其中一个已经配备了kubeadm作为主人。另一个作为工作节点。按照说明(http://kubernetes.io/docs/getting-started-guides/kubeadm/),我添加了weave-net。 pod的列表如下所示:
vagrant@vm-master:~$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system etcd-vm-master 1/1 Running 0 3m
kube-system kube-apiserver-vm-master 1/1 Running 0 5m
kube-system kube-controller-manager-vm-master 1/1 Running 0 4m
kube-system kube-discovery-982812725-x2j8y 1/1 Running 0 4m
kube-system kube-dns-2247936740-5pu0l 3/3 Running 0 4m
kube-system kube-proxy-amd64-ail86 1/1 Running 0 4m
kube-system kube-proxy-amd64-oxxnc 1/1 Running 0 2m
kube-system kube-scheduler-vm-master 1/1 Running 0 4m
kube-system kubernetes-dashboard-1655269645-0swts 1/1 Running 0 4m
kube-system weave-net-7euqt 2/2 Running 0 4m
kube-system weave-net-baao6 1/2 CrashLoopBackOff 2 2m
连接的每个工作节点都会出现CrashLoopBackOff。我花了几个时间玩网络接口,但似乎网络很好。我找到了类似的问题,答案建议查看日志,没有跟进。所以,这是日志:
vagrant@vm-master:~$ kubectl logs weave-net-baao6 -c weave --namespace=kube-system
2016-10-05 10:48:01.350290 I | error contacting APIServer: Get https://100.64.0.1:443/api/v1/nodes: dial tcp 100.64.0.1:443: getsockopt: connection refused; trying with blank env vars
2016-10-05 10:48:01.351122 I | error contacting APIServer: Get http://localhost:8080/api: dial tcp [::1]:8080: getsockopt: connection refused
Failed to get peers
我做错了什么?从那里去哪里?
答案 0 :(得分:8)
我也遇到了同样的问题。似乎weaver想要连接到Kubernetes Cluster IP地址,这是虚拟的。只需运行此命令即可找到集群ip:
kubectl get svc
。它应该给你这样的东西:
$ kubectl get svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 100.64.0.1 <none> 443/TCP 2d
Weaver选择此IP并尝试连接到它,但工作节点对此一无所知。简单的路线将解决这个问题。在所有工作节点上,执行:
route add 100.64.0.1 gw <your real master IP>
答案 1 :(得分:2)
这也发生在单节点设置中。我尝试了一些重新应用配置和娱乐的方法,但目前最稳定的方法是执行完全拆卸(如文档中所述)并再次启动群集。
我使用这些脚本重新启动集群:
down.sh
#!/bin/bash
systemctl stop kubelet;
docker rm -f -v $(docker ps -q);
find /var/lib/kubelet | xargs -n 1 findmnt -n -t tmpfs -o TARGET -T | uniq | xargs -r umount -v;
rm -r -f /etc/kubernetes /var/lib/kubelet /var/lib/etcd;
up.sh
#!/bin/bash
systemctl start kubelet
kubeadm init
# kubectl taint nodes --all dedicated- # single node!
kubectl create -f https://git.io/weave-kube
编辑:如果这是一个编织相关的问题,我也会尝试其他Pod网络,如Calico,
答案 2 :(得分:2)
最常见的原因可能是:
- 存在防火墙(例如,在CentOS上firewalld
)
- 网络配置(例如VirtualBox上的默认NAT接口)
目前kubeadm
仍然是alpha版,这是许多alpha测试人员已经报告过的问题之一。我们正在考虑通过记录最常见的问题来解决这个问题,这样的文档将准备好接近测试版。
正确存在a VirtualBox+Vargant+Ansible for Ubunutu and CentOS reference implementation,为防火墙,SELinux和VirtualBox NAT问题提供解决方案。
答案 3 :(得分:0)
/ usr / local / bin / weave重置
对我来说是修复程序-希望它有用-是的,请确保将selinux设置为禁用 并且firewalld没有运行(在redhat / centos上)发行版
kube-system weave-net-2vlvj 2/2正在运行3 11d
kube-system weave-net-42k6p 1/2运行3 11d
kube-system weave-net-wvsk5 2/2正在运行3 11d