K8S:安装Calico网络插件
当我们把节点加入集群,检查发现所有的节点都是NotReady状态
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master NotReady control-plane,master 15h v1.23.6
k8s-node1 NotReady <none> 15h v1.23.6
k8s-node2 NotReady <none> 99s v1.23.6
这是因为Kubernetes集群中的节点通信依赖于网络插件(如Calico、Flannel、Weave等)来建立Pod之间的网络。在集群初始化时,Kubernetes节点会尝试与其他节点和集群组件通信。如果没有安装网络插件,节点间的Pod网络未配置,导致无法正常通信。因此,Kubernetes将这些节点标记为 NotReady
。
安装步骤
1.查看内核版本
uname -a
网络插件需要更高版本的内核支持
2.更新 USTC 的源
sudo sed -i.bak \
-e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos-vault/centos|g' \
/etc/yum.repos.d/CentOS-Base.repo
3.下载并安装Linux 内核
wget https://linux.cc.iitk.ac.in/mirror/centos/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-6.9.7-1.el7.elrepo.x86_64.rpm
yum localinstall kernel-ml-6.9.7-1.el7.elrepo.x86_64.rpm
reboot
4.重启虚拟机并在开机界面选择高版本内核
5.修改默认启动内核
# 查看所有可用内核
cat /boot/grub2/grub.cfg |grep "menuentry "
# 设置默认启动的内核
grub2-set-default 'CentOS Linux (6.9.7-327.el7.x86_64) 7 (Core)'
# 查看内核修改结果
grub2-editenv list
# 重启
reboot
yml安装Calico
#下载配置文件
curl https://docs.projectcalico.org/manifests/calico.yaml -O
# 现在该配置已被重定向,使用下载到的文件内的URL重新运行此命令
# 修改 calico.yaml 文件中的 CALICO_IPV4POOL_CIDR 配置,修改为与初始化的 cidr 相同
# 删除镜像 docker.io/ 前缀,避免下载过慢导致失败
sed -i 's#docker.io/##g' calico.yaml
# apply服务
kubectl apply -f calico.yaml
# 确认所有pod都在运行
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 15h v1.23.6
k8s-node1 Ready <none> 15h v1.23.6
k8s-node2 Ready <none> 99s v1.23.6
另一种安装方式
# 安装 Tigera Calico 运算符和自定义资源定义。(通过创建必要的自定义资源来安装 Calico)
kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/tigera-operator.yaml
# 通过自定义资源方式安装
curl https://raw.githubusercontent.com/projectcalico/calico/v3.24.5/manifests/custom-resources.yaml -O
# 同样的需要更改默认IP池CIDR,在文件的13行
# 应用资源清单文件
kubectl apply -f custom-resources.yaml
# 确认所有pod都在运行
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 15h v1.23.6
k8s-node1 Ready <none> 15h v1.23.6
k8s-node2 Ready <none> 99s v1.23.6