CentOS环境下Kubernetes(k8s)容器网络接口配置指南
在CentOS上部署Kubernetes集群时,容器网络接口(CNI)是实现Pod间通信、跨节点网络互通的核心组件。CNI插件负责管理容器网络生命周期(如IP分配、路由配置),以下是具体配置步骤及关键要点:
一、基础环境准备
在配置CNI前,需完成以下基础设置,确保网络环境稳定:
- 关闭防火墙与SELinux
防火墙(firewalld)和SELinux可能拦截容器网络流量,建议临时关闭(生产环境需通过规则放行):systemctl stop firewalld && systemctl disable firewalld # 关闭防火墙 setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 禁用SELinux - 禁用交换分区
Kubernetes要求禁用交换分区(swap),避免影响Pod网络性能:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab # 永久禁用 - 配置静态IP
为每个节点(Master/Worker)配置静态IP,确保网络可达性。编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33):重启网络服务使配置生效:DEVICE=ens33 BOOTPROTO=static IPADDR=192.168.1.100 # 节点静态IP NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=8.8.4.4 ONBOOT=yes # 开机自启systemctl restart network。
二、安装与配置CNI插件
Kubernetes支持多种CNI插件,以下是Flannel(简单易用)和Calico(高性能、支持BGP)的配置示例:
1. Flannel插件(推荐新手)
Flannel通过Overlay网络(VXLAN)实现跨节点Pod通信,配置步骤如下:
- 使用
kubectl应用官方YAML文件,自动部署Flannel组件:kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml - 验证插件状态:
kubectl get pods -n kube-system -l k8s-app=flannel # 查看Flannel Pod是否Running
2. Calico插件(生产推荐)
Calico采用纯三层转发(无Overlay),性能更优,支持网络策略(NetworkPolicy),配置步骤如下:
- 下载Calico官方配置文件(根据集群规模选择版本,如
calico.yaml或typha.yaml):wget https://docs.projectcalico.org/manifests/calico.yaml - 修改配置文件中的
CALICO_IPV4POOL_CIDR(需与kubeadm init时指定的--pod-network-cidr一致,如10.244.0.0/16):- name: CALICO_IPV4POOL_CIDR value: "10.244.0.0/16" - 应用配置:
kubectl apply -f calico.yaml - 验证插件状态:
kubectl get pods -n kube-system -l k8s-app=calico-node # 查看Calico Pod是否Running
3. 关键内核参数调整
CNI插件依赖以下内核参数实现网络转发,需提前配置:
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1 # 允许iptables处理桥接流量
net.bridge.bridge-nf-call-ip6tables = 1 # 允许ip6tables处理桥接流量
net.ipv4.ip_forward = 1 # 开启IP转发
EOF
sysctl --system # 使配置生效
三、验证CNI配置
- 检查Pod网络连通性
部署一个测试Pod(如busybox),尝试访问集群内其他服务或外部网络:kubectl run busybox --rm -ti --image=busybox /bin/sh # 在Pod内执行 wget -qO- http://10.96.0.1 # 访问Kubernetes API Server(默认Service IP) ping 192.168.1.101 # 访问其他节点IP(需替换为实际IP) - 查看CNI插件日志
若网络异常,可通过插件Pod日志排查问题:kubectl logs -n kube-system# Flannel日志 kubectl logs -n kube-system # Calico日志
四、常见问题排查
- Pod无法通信:检查CNI插件Pod是否Running,确认内核参数是否生效,查看节点间防火墙是否拦截流量。
- IP冲突:确保
pod-network-cidr与CNI插件配置一致,避免IP重复分配。 - 性能瓶颈:若使用Flannel的UDP模式,建议切换至VXLAN模式(性能更好);大规模集群推荐使用Calico+BGP提升转发效率。
通过以上步骤,可在CentOS环境下完成Kubernetes容器网络接口的配置,实现Pod间的稳定通信。根据业务需求选择合适的CNI插件(如Flannel适合简单场景,Calico适合生产高可用场景),并定期监控网络性能以确保集群稳定运行。
以上就是关于“centos k8s容器网络接口”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm