CentOS Linux release 7.6.1810 (Core)
在master节点上执行 kubectl get nodes命令,会发现Kubernetes提示Master 为 NotReady 状态,这是因为还没有安装CNI网络插件:
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 9m11s v1.14.0
node-1 NotReady 4m55s v1.14.0
node-2 NotReady 2m17s v1.14.0
node-3 NotReady 115s v1.14.0
对于CNI网络插件,可以有很多选择。我们这里选择weave
,执行下面的命令即可一键完成安装(在master节点执行):
# kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
serviceaccount/weave-net created
clusterrole.rbac.authorization.k8s.io/weave-net created
clusterrolebinding.rbac.authorization.k8s.io/weave-net created
role.rbac.authorization.k8s.io/weave-net created
rolebinding.rbac.authorization.k8s.io/weave-net created
daemonset.extensions/weave-net created
稍等一会,再次查看节点状态,如果想查看进度,可以执行 kubectl get pods --all-namespaces -l name=weave-net
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
izt4n3ku8e7bzoykwbgw22z Ready 7m33s v1.14.0
izt4n3ku8e7bzoykwbgw23z Ready 7m30s v1.14.0
izt4nf4t1bo76k323duacxz Ready master 57m v1.14.0
可以看到,所有的node都是 Ready 状态了。可以想到,一定是用到daemonSet的控制来实现每个节点启动weave-net,我们来检查一下
[root@master ~]# kubectl get ds -n kube-system
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-proxy 4 4 4 4 4 beta.kubernetes.io/os=linux 29m
weave-net 4 4 4 4 4 18m
[root@master ~]# kubectl get pods -n kube-system -l name=weave-net -o yaml | grep IP
hostIP: 192.168.0.40
podIP: 192.168.0.40
hostIP: 192.168.0.41
podIP: 192.168.0.41
hostIP: 192.168.0.21
podIP: 192.168.0.21
hostIP: 192.168.0.42
podIP: 192.168.0.42
可以看到,每个节点都启动了weave-net的pod,但是发现,hostIP和podIP都是一样的,原因是weave-net使用了hostNetwork,来检查一下
[root@master ~]# kubectl get pods -n kube-system -l name=weave-net -o yaml | grep hostNetwork
hostNetwork: true
hostNetwork: true
hostNetwork: true
hostNetwork: true
确实如此,