calico网络安装和删除
文章目录
前言
1)本文以一个最简集群做示例,包括两个部分:
- 创建calico网络
- 删除calico网络
2)文中calico.yml文件详解,作为知识扩展,见我的另一篇文章 《calico.yml详解》
3)k8s的部署,见以下两篇文档
4)如果要使用flannel网络,参见 《flannel网络的安装和删除》
1. 集群状态
未安装网络前器群状态如下
- 节点状态
节点状态都是NotReady
[root@calico-master yum.repos.d]# kubectl get node NAME STATUS ROLES AGE VERSION calico-master NotReady control-plane,master 5m6s v1.21.2 calico-node NotReady <none> 15s v1.21.2
- 系统pod状态
可见coredns的状态是pending
[root@calico-master yum.repos.d]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-59d64cd4d4-54mn6 0/1 Pending 0 4m coredns-59d64cd4d4-l2z7n 0/1 Pending 0 4m etcd-calico-master 1/1 Running 0 4m10s kube-apiserver-calico-master 1/1 Running 0 4m9s kube-controller-manager-calico-master 1/1 Running 0 4m10s kube-proxy-ff6fv 1/1 Running 0 4m kube-scheduler-calico-master 1/1 Running 0 4m10s
- 网络状态
此时只有物理网卡和docker0
[root@calico-master yum.repos.d]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:bf:e7:64 brd ff:ff:ff:ff:ff:ff inet 10.10.239.45/24 brd 10.10.239.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:febf:e764/64 scope link valid_lft forever preferred_lft forever 3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:fb:8e:62:b1 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever
2. 镜像准备
-
提前下载如下镜像
docker.io/calico/cni:v3.19.1
docker.io/calico/node:v3.19.1
docker.io/calico/pod2daemon-flexvol:v3.19.1
docker.io/calico/kube-controllers:v3.19.1 -
上传镜像仓库,分别为
harbocto.xxx.com.cn/public/cni:v3.19.1
harbocto.xxx.com.cn/public/node:v3.19.1
harbocto.xxx.com.cn/public/pod2daemon-flexvol:v3.19.1
harbocto.xxx.com.cn/public/kube-controllers:v3.19.1
3. 配置文件
- 下载配置文件
#wget https://docs.projectcalico.org/manifests/calico.yaml
有的文档说用k8s的etcd,必须要下载calico-etcd.yaml 如何如何,实测并不需要。
- 关闭IPIP模式
calico网络,默认是ipip模式。会在每台node主机创建一个tunl0网口,这个隧道链接所有的node容器网络,官网推荐不同的ip网段适合。
我们这里关闭IPIP模式。
详见 《k8s网络基础》中 “4.4 IP Pool 的两种模式”
在DaemonSet部分 calico-node的pod的变量中,修改CALICO_IPV4POOL_IPIP
值为off
- name: CALICO_IPV4POOL_IPIP #value: "Always" value: "off"
- 修改pod的网段
修改
CALICO_IPV4POOL_CIDR
为k8s集群的pod网段
同样也在DaemonSet 中, calico-node的pod的变量里,修改如下:
- name: CALICO_IPV4POOL_CIDR value: "10.244.0.0/16"
- 修改 ypha_service_name(非必要)
修改ConfigMap部分
typha_service_name: "calico-typha"
,结果如下:
kind: ConfigMap apiVersion: v1 metadata: name: calico-config namespace: kube-system data: # Typha is disabled. typha_service_name: "calico-typha"
Typha组件可以帮助Calico扩展到大量的节点,详见 《calico.yml详解》 中"2. ConfigMap"
4 创建calico网络
- 创建
# kubectl create -f calico.yaml
- 查看pod
如下可见,
calico-node
和calico-kube-controllers
都启动起来了,coredns
也变为Running
[root@calico-master file]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE calico-kube-controllers-78d6f96c7b-vrsrh 1/1 Running 0 21m calico-node-p248q 1/1 Running 0 21m calico-node-zjbxl 1/1 Running 0 21m coredns-59d64cd4d4-mnjj2 1/1 Running 0 32m coredns-59d64cd4d4-szbkv 1/1 Running 0 32m etcd-calico-master 1/1 Running 0 47h kube-apiserver-calico-master 1/1 Running 0 47h kube-controller-manager-calico-master 1/1 Running 0 47h kube-proxy-ff6fv 1/1 Running 0 47h kube-proxy-wd8d7 1/1 Running 0 47h kube-scheduler-calico-master 1/1 Running 0 47h
- 查看node
可见,node都变为Ready。
[root@calico-master file]# kubectl get node NAME STATUS ROLES AGE VERSION calico-master Ready control-plane,master 47h v1.21.2 calico-node Ready <none> 47h v1.21.2
- 查看路由
[root@calico-master ~]# ip route default via 10.10.239.1 dev eth0 10.10.239.0/24 dev eth0 proto kernel scope link src 10.10.239.45 10.244.85.64/26 via 10.10.239.44 dev eth0 proto bird 169.254.0.0/16 dev eth0 scope link metric 1002 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
如上可见,多了一条路由
10.244.85.64/26 via 10.10.239.44 dev eth0 proto bird
5. calico网络的删除
5.1 删除对象
【master上执行】
# kubectl delete -f calico.yaml
5.2 删除 Tunl0(如果ipip模式)
- 检查所有节点上的网络,看看是否存在Tunl0
我们前文的安装方法关闭了ipip模式,所以没有Tunl0
# ip a
- 删除Tunl0
# modprobe -r ipip
5.3 移除Calico配置文件
查看
/etc/cni/net.d/
目录下是否存在相关文件,如:10-calico.conflist
,calico-kubeconfig
,calico-tls
等,需要删除。
5.4 重启kubelet
每个节点重启kubelet
5.5 删除coredns的pod
master上删除coredns的pod,重启的coredns的pod重新变成Pending状态。
如果不重启kubelet ,coredns的pod重新变成Pending状态。
posted on 2021-08-10 22:14 运维开发玄德公 阅读(638) 评论(0) 编辑 收藏 举报 来源
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~