centos

k8s安装后centos如何配置网络

小樊
47
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
看了该问题的人还看了