kubernetes中的crashloopbackoff错误中的法兰绒豆荚



使用法兰绒作为kubernetes中的CNI,我正在尝试实现一个网络以供POD传播到Pod Communication在不同的Vagrant VM上传播。我正在使用此https://raw.githubusercontent.com/coreos/coreos/flannel/v0.9.0/documentation/kube-flannel.yml来创建法兰绒吊舱。但是Kube-Flannel Pods出现在CrashloopBackoff错误中,并且不启动。

[root@flnode-04 ~]# kubectl get pods -o wide --all-namespaces
NAMESPACE         NAME                      READY     STATUS             RESTARTS   AGE       IP              NODE
diamanti-system   collectd-v0.5-flnode-04   1/1       Running            0          3h        192.168.30.14   flnode-04
diamanti-system   collectd-v0.5-flnode-05   1/1       Running            0          3h        192.168.30.15   flnode-05
diamanti-system   collectd-v0.5-flnode-06   1/1       Running            0          3h        192.168.30.16   flnode-06
diamanti-system   provisioner-d4kvf         1/1       Running            0          3h        192.168.30.16   flnode-06
kube-system       kube-flannel-ds-2kqpv     0/1       CrashLoopBackOff   1          18m       192.168.30.14   flnode-04
kube-system       kube-flannel-ds-xgqdm     0/1       CrashLoopBackOff   1          18m       192.168.30.16   flnode-06
kube-system       kube-flannel-ds-z59jz     0/1       CrashLoopBackOff   1          18m       192.168.30.15   flnode-05

这是一个Pod

的日志
[root@flnode-04 ~]# kubectl logs kube-flannel-ds-2kqpv --namespace=kube-system 
I0327 10:28:44.103425       1 main.go:483] Using interface with name mgmt0 and address 192.168.30.14
I0327 10:28:44.105609       1 main.go:500] Defaulting external address to interface address (192.168.30.14)
I0327 10:28:44.138132       1 kube.go:130] Waiting 10m0s for node controller to sync
I0327 10:28:44.138213       1 kube.go:283] Starting kube subnet manager
I0327 10:28:45.138509       1 kube.go:137] Node controller sync successful
I0327 10:28:45.138588       1 main.go:235] Created subnet manager: Kubernetes Subnet Manager - flnode-04
I0327 10:28:45.138596       1 main.go:238] Installing signal handlers
I0327 10:28:45.138690       1 main.go:348] Found network config - Backend type: vxlan
I0327 10:28:45.138767       1 vxlan.go:119] VXLAN config: VNI=1 Port=0 GBP=false DirectRouting=false
panic: assignment to entry in nil map
goroutine 1 [running]:
github.com/coreos/flannel/subnet/kube.(*kubeSubnetManager).AcquireLease(0xc420010cd0, 0x7f5314399bd0, 0xc420347880, 0xc4202213e0, 0x6, 0xf54, 0xc4202213e0)
    /go/src/github.com/coreos/flannel/subnet/kube/kube.go:239 +0x1f7
github.com/coreos/flannel/backend/vxlan.(*VXLANBackend).RegisterNetwork(0xc4200b3480, 0x7f5314399bd0, 0xc420347880, 0xc420010c30, 0xc4200b3480, 0x0, 0x0, 0x4d0181)
    /go/src/github.com/coreos/flannel/backend/vxlan/vxlan.go:141 +0x44e
main.main()
    /go/src/github.com/coreos/flannel/main.go:278 +0x8ae

法兰绒豆荚进入crashloopbackoff的原因到底是什么?

是什么?

我能够通过运行命令

来解决问题
kubectl annotate node appserv9 flannel.alpha.coreos.com/public-ip=10.10.10.10 --overwrite=true

错误的原因:代码中的零映射(无键可用(

您给出的IP并不重要,但是此命令必须在所有节点上单独运行,以便上述错误不必分配给 nil map。

如果用kubeadm init --pod-network-cidr network/mask部署群集,则此network/mask应匹配kube-flannel.yaml

中的configmap

我的configmap看起来像:

kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  data:
  ...
    net-conf.json: |
      {
        "Network": "10.244.0.0/16",
        "Backend": {
          "Type": "vxlan"
        }
      }

因此network/mask应等于10.244.0.0/16

最新更新