如何修复第二个节点的weave-net CrashLoopBackOff?

And*_*rew 8 kubernetes weave

我有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
Run Code Online (Sandbox Code Playgroud)

连接的每个工作节点都会出现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
Run Code Online (Sandbox Code Playgroud)

我做错了什么?从哪里去?

Hit*_*_99 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
Run Code Online (Sandbox Code Playgroud)

Weaver获取此IP并尝试连接到它,但工作节点对此一无所知.简单的路线将解决这个问题.在所有工作节点上,执行:

route add 100.64.0.1 gw <your real master IP>
Run Code Online (Sandbox Code Playgroud)

  • 对于某些情况,添加路由是一种有效的解决方案,但是将Weave CIDR传递给带有`--cluster-cidr = 10.32.0.0/12`的`kube-proxy`可以说是更好的选择. (6认同)

Dav*_*man 2

单节点设置也会发生这种情况。我尝试了一些方法,例如重新应用配置和重新创建,但目前最稳定的方法是执行完整的拆卸(如文档中所述)并重新启动集群。

我使用这些脚本重新启动集群:

向下

#!/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;
Run Code Online (Sandbox Code Playgroud)

up.sh

#!/bin/bash

systemctl start kubelet
kubeadm init
# kubectl taint nodes --all dedicated- # single node!
kubectl create -f https://git.io/weave-kube
Run Code Online (Sandbox Code Playgroud)

编辑:如果这是与编织相关的问题,我也会尝试其他 Pod 网络,例如 Calico