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"
你或许可以让它完全按照你的意愿去做。
我正在尝试 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" 你或许可以让它完全按照你的意愿去做。