概述
CNI(Container Network Interface) 是一个标准的,通用的接口。在容器平台,Docker,Kubernetes,Mesos 容器网络解决方案 flannel,calico,weave。只要提供一个标准的接口,就能为同样满足该协议的所有容器平台提供网络功能,而 CNI 正是这样的一个标准接口协议(纯百度)
说白了就是要配置一个这个插件解决k8s间容器的网络问题
flannel
这个是我以前做过的配置,当时是1.17.* 的k8s版本,是没有问题的,但是现在我没有试过,不敢保证现在是可行的,大家可以去看下可行不,主要说说calico,calico是没有问题的,可以配置完成!
flannel配置安装:(需要梯子)
-
在所有机器上拉取flannel的docker镜像
docker pull easzlab/flannel:v0.11.0-amd64
-
修改所有机器上flannel镜像名称
docker tag easzlab/flannel:v0.11.0-amd64 quay.io/coreos/flannel:v0.11.0-amd64
-
下载flannel资源配置清单(这个只在master上操作)
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
安装(只在master上操作)
kubectl apply -f kube-flannel.yml
calico
calico配置安装:(无需梯子,只在master上操作)
最好这里的网络配置也新建一个文件夹存放,以下是我的存放路径,下面的操作都在这个文件夹中进行
-
下载calico的配置文件
wget https://docs.projectcalico.org/v3.8/manifests/calico.yaml
-
打开配置文件
修改name: CALICO_IPV4POOL_CIDR 对应的value: 192.168.0.0/16为value: 10.244.0.0/16 (大概在600多行)
修改的值是k8s初始化中的配置文件中的podSubnet
-
安装网络插件calico
kubectl apply -f calico.yaml
-
查看calico插件安装(插件全部处于running状态表示安装成功)
watch kubectl get pods --all-namespaces
这里需要等待几分钟,必须所有都是running才行,配置一定要给够哈,不然很容易失败,第一章有最基础的配置。如下,全是running就可以了,说明网络配置成功了,我大概需要三分半的样子,所有的pod就跑起来了。(ctrl c退出) -
安装成功后查看节点是否处于Ready状态
kubectl get node
至此,k8s最基本的一主二重集群配置成功。镜像部署在下一章哈!