weave cni 没有在 k8s 的节点 cidr 中分配 ip 地址来编织网桥

weave cni is not assigning ip address to weave bridge with in the node cidr in k8s

我正在尝试 bootstrap 使用 weave 作为 cni 插件的 k8s 集群,该插件最初配置时没有 --pod-cidr 和 weave 插件

root@kube1:/etc/systemd/system/kubelet.service.d# kubectl get no
NAME    STATUS   ROLES    AGE   VERSION
kube1   Ready    master   31m   v1.18.2
kube2   Ready    <none>   30m   v1.18.2
kube3   Ready    <none>   31m   v1.18.2
root@kube1:/etc/systemd/system/kubelet.service.d# 

所以我已经使用以下命令完成了清理工作

 kubectl drain kube2 --delete-local-data --force --ignore-daemonsets
 kubectl drain kube3 --delete-local-data --force --ignore-daemonsets
 kubectl drain kube1 --delete-local-data --force --ignore-daemonsets

 kubectl delete no kube1 kube2 kube3

 kubeadm reset

 curl -L git.io/weave -o /usr/local/bin/weave
 chmod a+x /usr/local/bin/weave
 kubeadm reset
 weave reset --force

 rm /opt/cni/bin/weave-*

 iptables -P INPUT ACCEPT
 iptables -P FORWARD ACCEPT
 iptables -P OUTPUT ACCEPT
 iptables -t nat -F
 iptables -t mangle -F
 iptables -F
 iptables -X
 systemctl restart docker

我已确保在所有 3 个节点上删除了编织网桥接口并重新启动了集群

  kubeadm init --apiserver-advertise-address=192.168.56.101 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.100.0.0/16

我已确保节点 cidr 已分配给工作节点 (pod-cidr - 10.244.0.0./16),如下所示

root@kube1:/etc/systemd/system/kubelet.service.d# kubectl get no kube2 -o yaml|grep -i podCIDR|grep -i 24
  podCIDR: 10.244.2.0/24

root@kube1:/etc/systemd/system/kubelet.service.d# kubectl get no kube3 -o yaml|grep -i podCIDR|grep -i 24
  podCIDR: 10.244.1.0/24

在我创建 weave pod 之后,我期待在 10.244 中看到 weave 网桥接口 ip。* 但它似乎是使用默认 weave 配置 (10.32.0.1) 创建的

root@kube2:/etc/kubernetes# ifconfig weave
weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1376
        inet 10.32.0.1  netmask 255.240.0.0  broadcast 10.47.255.255
        inet6 fe80::187b:63ff:fe5c:a2ae  prefixlen 64  scopeid 0x20<link>
        ether 1a:7b:63:5c:a2:ae  txqueuelen 1000  (Ethernet)

有什么我遗漏要清理的吗?还是编织插件的默认行为?

默认情况下,Weave Net 使用自己的 IP 分配器,可以通过环境变量 IPALLOC_RANGE 进行配置。 Link to docs

如果您更改每个节点上的 CNI 配置以使用不同的 IPAM 插件,例如"host-local" 你或许可以让它完全按照你的意愿去做。