k8s的CNI网络插件
安装cni网络插件
在master节点上运行
以最常用的calico
和flannel
插件为例
cni是容器网络接口
,作用是实现容器跨主机网络通信
.
pod
的ip地址段,也称为cidr
安装flannel网络插件(简单易用)
# 下载flannel插件的yml
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# 修改kube-flannel.yml中的镜像仓库地址为国内源
sed -i 's/quay.io/quay-mirror.qiniu.com/g' kube-flannel.yml
# 安装网络插件
kubectl apply -f kube-flannel.yml
查看kubeadm配置的默认pod网段和sv网段
参考: 修改pod网段
查看k8s的pod网段和svc网段
# kubeadm的配置信息存在config-map中
kubectl -n kube-system describe cm kubeadm-config |grep -i pod
## 打印结果
podSubnet: 10.244.0.0/16
# 查看pod网段和svc网段
[m1 root ~]#kubectl -n kube-system describe cm kubeadm-config |grep -i net
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
kubernetesVersion: v1.23.4
networking:
podSubnet: 100.64.0.0/10
serviceSubnet: 10.96.0.0/12
安装calico网络插件(复杂灵活)
calico
复杂和灵活,功能也更强大
calico配置参考: 官方配置文档
下载calico插件的yaml
# 下载calico插件的yaml
wget https://docs.projectcalico.org/manifests/calico.yaml
修改定义pod网络CALICO_IPV4POOL_CIDR的值
要和kubeadm init pod-network-cidr
的值一致
# 修改定义pod网络CALICO_IPV4POOL_CIDR的值和kubeadm init pod-network-cidr的值一致
## 取消注释
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
修改前
修改后
calico配置自动检测此主机的 IPv4 地址的方法
参考: 能预防一些cni错误
搜索env:
在CLUSTER_TYPE
下配置
# 自动检测此主机的 IPv4 地址的方法
- name: IP_AUTODETECTION_METHOD
value: "interface=ens192" # ens192为本地网卡名字
calico安装常见错误
# 安装calico
kubectl apply -f calico.yaml
# 弹出警告信息
Warning: policy/v1beta1 PodDisruptionBudget is deprecated in v1.21+, unavailable in v1.25+; use policy/v1 PodDisruptionBudget
poddisruptionbudget.policy/calico-kube-controllers created
警告:policy/v1beta1 PodDisruptionBudget 在 v1.21+ 中被弃用,在 v1.25+ 中不可用; 使用 policy/v1 PodDisruptionBudget
poddisruptionbudget.policy/calico-kube-controllers 创建
# 查看下colico-pod的日志,确定错误信息
kubectl logs calico-node-xxx -n kube-system
# 解决办法: https://github.com/projectcalico/calico/issues/4570
把
apiVersion: policy/v1beta1
修改为
apiVersion: policy/v1
# 然后再次执行资源清单即可
kubectl apply -f calico.yaml
# 查看nodes状态,已经是Ready(就绪)状态
kubectl get nodes