我使用“kubeadm”部署了单节点kubernetes集群。这部署了Kubernetes 1.6。根据说明(https://kubernetes.io/docs/getting-started-guides/kubeadm/),我需要为pod网络安装网络层。
我决定尝试“编织”,因为根据文档(https://www.weave.works/weave-net-kubernetes-integration/)使用简单的单行程序很容易安装:
kubectl apply -f https://git.io/weave-kube
当我检查机器时,我发现现在有一个编织适配器:
weave: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1376
inet 10.32.0.1 netmask 255.240.0.0 broadcast 0.0.0.0
inet6 fe80::bca7:f5ff:fefb:c7a2 prefixlen 64 scopeid 0x20<link>
ether be:a7:f5:fb:c7:a2 txqueuelen 1000 (Ethernet)
RX packets 12 bytes 780 (780.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9 bytes 690 (690.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
然后我使用提供的yaml文件部署了kube-dashboard:
kubectl create -f https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml
这很顺利,但是pod从172.17.0.0范围获得了ip。这是docker配置文件中定义的范围,而不是“weave”使用的范围。
这对我来说似乎不对。不应该在编织范围内获得ip吗?
我一直在研究整个cni的东西,但是我阅读的越多,我就越混淆所有不同的组件(docker,weave,kubernetes,cni)应该如何协同工作。
答案 0 :(得分:3)
应该发生的事情是Kubernetes应该安装一个标记到kubelet --network-plugin=cni
,然后kubelet将在/etc/cni/net.d
中查找CNI配置文件,并使用该文件中的网络配置来查看用于调用的CNI插件(可执行文件)。
通过kubectl apply -f https://git.io/weave-kube
安装Weave Net应创建此配置文件(/etc/cni/net.d/10-weave.conf
),然后在该pod之后应获取Weave IP分配范围内的地址(默认为10.32.0.0/12)< / p>
由于你看到一个带有Docker地址的pod,是否有--network-plugin=cni
标志丢失了?