CentOS系统下Kubernetes网络配置指南
在CentOS上完成Kubernetes(k8s)安装后,网络配置是确保集群正常运行的关键步骤,主要包括基础环境准备、网络插件安装及网络策略配置三部分。
一、基础环境准备
在配置网络前,需完成以下基础设置,避免网络冲突或权限问题:
- 关闭防火墙:
Kubernetes集群内部通信无需防火墙拦截,关闭后可简化配置(生产环境建议按需开放端口)。systemctl stop firewalld && systemctl disable firewalld - 禁用SELinux:
SELinux的强制访问控制可能阻碍Pod间通信,需临时关闭并永久禁用。setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config - 关闭Swap分区:
Kubernetes要求节点禁用Swap,否则可能导致Pod调度异常。swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 永久禁用 - 配置静态IP:
动态IP会导致节点IP变化,影响集群稳定性。编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33,接口名以ip a命令为准):重启网络服务使配置生效:TYPE=Ethernet BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.100 # 节点静态IP NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=114.114.114.114systemctl restart network - 配置主机名与hosts文件:
统一节点主机名便于识别,编辑/etc/hosts文件添加集群节点信息:hostnamectl set-hostname k8s-master # 主节点 # 或 hostnamectl set-hostname k8s-node1 # 子节点 echo "192.168.1.100 k8s-master" >> /etc/hosts echo "192.168.1.101 k8s-node1" >> /etc/hosts - 同步时间:
节点时间不一致会导致证书验证失败或调度异常,安装chrony并启动:yum install -y chrony && systemctl enable chronyd && systemctl start chronyd
二、安装CNI网络插件
Kubernetes依赖CNI(Container Network Interface)插件实现Pod间通信,常用插件包括Flannel(简单易用)和Calico(高性能、支持网络策略)。
1. Flannel插件(推荐新手)
Flannel提供overlay网络(VXLAN模式),适合小规模集群,配置简单:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
验证插件状态:
kubectl get pods -n kube-system | grep flannel # 应显示"Running"状态
2. Calico插件(推荐生产环境)
Calico采用纯三层转发(无overlay),性能更优且支持网络策略(NetworkPolicy),适合大规模集群:
kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
验证插件状态:
kubectl get pods -n kube-system | grep calico # 应显示"Running"状态
三、配置网络策略(可选,但推荐)
网络策略用于控制Pod间的访问权限,提升集群安全性。以下是一个允许同一命名空间内所有Pod互相访问的示例:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-same-namespace
namespace: default # 作用于default命名空间
spec:
podSelector: {} # 匹配所有Pod
policyTypes:
- Ingress # 控制入站流量
- Egress # 控制出站流量
ingress:
- from:
- podSelector: {} # 允许同一命名空间内的Pod访问
egress:
- to:
- podSelector: {} # 允许访问同一命名空间内的Pod
应用策略:
kubectl apply -f network-policy.yaml
四、验证网络配置
- 检查节点状态:
确保所有节点处于Ready状态:kubectl get nodes - 测试Pod通信:
创建一个测试Pod并获取其IP,从另一个Pod访问:kubectl run test-pod --image=nginx --restart=Never --rm -it -- /bin/sh # 在Pod内执行:ping <另一个Pod的IP> 或 curl <另一个Pod的IP>:80
通过以上步骤,可完成CentOS系统下Kubernetes的网络配置,确保集群内Pod间通信正常。根据实际需求选择合适的网络插件,并通过NetworkPolicy强化网络安全。
以上就是关于“k8s安装后centos如何配置网络”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm