


calico和flannel类似,感觉更强大一点,所以推荐使用它
下载calico
注意版本,如果直接下载最新版本会报错,和你的k8s不匹配,比如我这里k8s使用的1.18.0,calico使用v3.14版本是可以的
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml --no-check-certificate
如果因为网络问题下载不到可以使用下面的地址下载后然后放到传递k8s的电脑上即可。
链接: https://pan.baidu.com/s/1VNUPE4HmIAW_F2_Mo-wfgg?pwd=c75e 提取码: c75e 复制这段内容后打开百度网盘手机App,操作更方便哦
下载之后修改配置,修改calico.yaml里的pod网段
把calico.yaml里pod所在网段改成kubeadm init时选项—pod-network-cidr所指定的网段。
默认是192开头的。把这个地址修改成kubeadm init时选项—pod-network-cidr所指定的网段,所以我这里应该修改成10.244.0.0/16。
1:使用vi calico.yaml打开文件
2:在命令模式下输入/192就可以快速定位到需要修改的地址了,不然慢慢找太麻烦了,文件很长
3:然后把注释取消掉,把value修改成我们的ip地址即可
可能在多网卡下你还需要配置一下calico使用的网卡问题
calico多网卡配置
spec:
containers:
- env:
- name: DATASTORE_TYPE
value: kubernetes
- name: IP_AUTODETECTION_METHOD # DaemonSet中添加该环境变量
value: interface=eth0 # 指定内网网卡
- name: WAIT_FOR_DATASTORE
value: "true"
直接搜索IP_AUTODETECTION_METHOD应该是找不到的,这些配置需要添加。
可以先搜索DATASTORE_TYPE,就可以定位到这附近了,然后在添加指定网卡的内容就可以了。
IP_AUTODETECTION_METHOD 配置项默认为first-found,这种模式中calico会使用第一获取到的有效网卡,虽然会排除docker网络,localhost啥的,但是在复杂网络环境下还是有出错的可能。在这次异常中master1上的calico选择了一个bridge网卡。
为了解决这种情况,IP_AUTODETECTION_METHOD还提供了两种配置can-reach=DESTINATION,interface=INTERFACE-REGEX。
can-reach=DESTINATION配置可以理解为calico会从部署节点路由中获取到达目的ip或者域名的源ip地址
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)