开始前准备
确定calico数据存储
Calico同时支持kubernetes api和etcd数据存储。官方给出的建议是在本地部署中使用K8S API,仅支持Kubernetes模式。而官方给出的etcd则是混合部署(Calico作为Kubernetes和OpenStack的网络插件运行)的最佳数据存储。
使用etcd作为calico数据存储的好处:
- 允许多平台混用calico,如Kubernetes OpenStack上运行Calico
- Kubernetes资源与Calico资源分离
- 一个Calico群集,该群集不仅仅包含一个Kubernetes群集,如可与多个kubernetes集群互通。
坏处:
- 安装步骤繁琐
- 无法使用Kubernetes RBAC对calico资源的控制
- 无法使用Kubernetes资源对calico进行管理
下载calico部署清单
|
|
修改Pod CIDR
Calico默认的Pod CIDR使用的是192.168.0.0/16
,这里一般使用与controller-manager中的--cluster-cidr
保持一,取消资源清单内的 CALICO_IPV4POOL_CIDR
变量的注释,并将其设置为与所选Pod CIDR相同的值。
calico的IP分配范围
Calico IPAM从ipPool
分配IP地址。修改Pod的默认IP范围则修改清单calico.yaml
中的CALICO_IPV4POOL_CIDR
配置Calico的 IP in IP
默认情况下,Calico中的IPIP已经禁用,这里使用的v3.17.2 低版本默认会使用IPIP
要开启IPIP mode则需要修改配置清单内的 CALICO_IPV4POOL_IPIP
环境变量改为 always
修改secret
|
|
修改configMap
|
|
开始安装
|
|
安装出错
/calico-secrets/etcd-cert: permission denied
|
|
找到资源清单内的对应容器(calico-kube-controllers
)的配置。在卷装载中设置440将解决此问题
|
|
修改calicoctl的数据源
使用单独的etcd作为calico数据存储还需要修改calicoctl数据存储访问配置
calicoctl
在默认情况下,查找配置文件的路径为/etc/calico/calicoctl.cfg
上。可以使用--config
覆盖此选项默认配置(使用中测试不成功,官方给出有这个方法)。
如果calicoctl
无法获得配置文件,将检查环境变量。
|
|
reference: