温馨提示×

k8s安装后centos如何配置网络

小樊
55
2025-10-01 01:02:28
栏目: 智能运维

CentOS系统下Kubernetes网络配置指南

在CentOS上完成Kubernetes(k8s)安装后,网络配置是确保集群正常运行的关键步骤,主要包括基础环境准备网络插件安装网络策略配置三部分。

一、基础环境准备

在配置网络前,需完成以下基础设置,避免网络冲突或权限问题:

  1. 关闭防火墙
    Kubernetes集群内部通信无需防火墙拦截,关闭后可简化配置(生产环境建议按需开放端口)。
    systemctl stop firewalld && systemctl disable firewalld 
  2. 禁用SELinux
    SELinux的强制访问控制可能阻碍Pod间通信,需临时关闭并永久禁用。
    setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
  3. 关闭Swap分区
    Kubernetes要求节点禁用Swap,否则可能导致Pod调度异常。
    swapoff -a sed -i '/swap/s/^/#/' /etc/fstab # 永久禁用 
  4. 配置静态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.114 
    重启网络服务使配置生效:
    systemctl restart network 
  5. 配置主机名与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 
  6. 同步时间
    节点时间不一致会导致证书验证失败或调度异常,安装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 

四、验证网络配置

  1. 检查节点状态
    确保所有节点处于Ready状态:
    kubectl get nodes 
  2. 测试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强化网络安全。

0