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 运维开发玄德公 阅读(586) 评论(0) 编辑 收藏 举报 来源