k8s的CNI网络插件

概念

Flannel-vxLan容器网络方案是普适性最高的默认选择;
影响容器网络性能关键因素网络拓扑路径

CNI插件一般由DaemonBinary两部分组成。
CNI插件负责的事情包括:

  1. 给Pod配置网卡和IP等网络配置
  2. 配置Network Policy
  3. 打通Pod间网络的访问

打通Node间网络通道的手段?

  1. Overlay隧道
  2. VPC路由表
  3. BGP路由

Underlay网络模式的特点

  1. 性能好
  2. 可以和集群外资源互联互通

安装cni网络插件

在master节点上运行
以最常用的calicoflannel插件为例

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

在这里插入图片描述

# 查看pod网段和svc网段
kubectl -n kube-system describe cm kubeadm-config |grep -i net

在这里插入图片描述


安装calico网络插件(复杂灵活)

calico复杂和灵活,功能也更强大

calico配置参考: 官方配置文档


下载calico插件的yaml

# 下载calico插件的yaml
wget https://docs.projectcalico.org/manifests/calico.yaml

修改定义pod网络CALICO_IPV4POOL_CIDR的值

要和kubeadm init pod-network-cidr的值一致

# 修改calico.yaml
vim calico.yaml

# 修改定义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

再次apply资源清单

# 然后再次执行资源清单即可
kubectl apply -f calico.yaml

# 查看nodes状态,已经是Ready(就绪)状态
kubectl get nodes

k8s网络策略

一个只有specnetwork policy其他条件,意味着进出流全部禁止.
网络访问控制案例:
只允许指定命名空间中的应用访问
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

识途老码

赞赏是第一生产力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值