CentOS环境下Kubernetes(k8s)容器网络接口配置指南
在CentOS上部署Kubernetes集群时,容器网络接口(CNI)是实现Pod间通信、跨节点网络互通的核心组件。CNI插件负责管理容器网络生命周期(如IP分配、路由配置),以下是具体配置步骤及关键要点:
在配置CNI前,需完成以下基础设置,确保网络环境稳定:
firewalld)和SELinux可能拦截容器网络流量,建议临时关闭(生产环境需通过规则放行):systemctl stop firewalld && systemctl disable firewalld # 关闭防火墙
setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 禁用SELinux
swap),避免影响Pod网络性能:swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab # 永久禁用
/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。Kubernetes支持多种CNI插件,以下是Flannel(简单易用)和Calico(高性能、支持BGP)的配置示例:
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
Calico采用纯三层转发(无Overlay),性能更优,支持网络策略(NetworkPolicy),配置步骤如下:
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
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 # 使配置生效
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)
kubectl logs -n kube-system <flannel-pod-name> # Flannel日志
kubectl logs -n kube-system <calico-node-name> # Calico日志
pod-network-cidr与CNI插件配置一致,避免IP重复分配。通过以上步骤,可在CentOS环境下完成Kubernetes容器网络接口的配置,实现Pod间的稳定通信。根据业务需求选择合适的CNI插件(如Flannel适合简单场景,Calico适合生产高可用场景),并定期监控网络性能以确保集群稳定运行。