linux

Linux系统中K8S如何配置网络

小樊
45
2025-11-10 19:43:44
栏目: 智能运维

Linux系统中K8S网络配置指南
Kubernetes(K8S)的网络配置是其核心功能之一,主要依赖CNI(Container Network Interface)插件实现Pod间通信、Service暴露及网络策略控制。以下是Linux环境下K8S网络配置的关键步骤及注意事项:

一、前置准备:基础环境配置

在配置网络插件前,需完成以下基础设置,确保集群节点间网络互通:

  1. 关闭防火墙与SELinux
    临时关闭防火墙:systemctl stop firewalld;永久禁用:systemctl disable firewalld
    临时禁用SELinux:setenforce 0;永久禁用:编辑/etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled
  2. 关闭Swap分区
    执行swapoff -a关闭当前Swap;编辑/etc/fstab,注释掉Swap相关行(如/dev/mapper/centos-swap swap),防止重启后生效。
  3. 配置静态IP
    编辑网络接口配置文件(如/etc/sysconfig/network-scripts/ifcfg-ens33),设置BOOTPROTO=staticONBOOT=yes,并指定IPADDR、NETMASK、GATEWAY、DNS1/DNS2(如IPADDR=192.168.1.100GATEWAY=192.168.1.1DNS1=8.8.8.8)。修改后重启网络服务:systemctl restart network
  4. 配置主机名与hosts文件
    使用hostnamectl set-hostname <节点名>(如k8s-masterk8s-node1)设置主机名;编辑/etc/hosts,添加集群所有节点的IP与主机名映射(如192.168.1.100 k8s-master192.168.1.101 k8s-node1),确保节点间可通过主机名访问。
  5. 时间同步
    安装并启动Chronyd服务:yum install -y chronyd && systemctl start chronyd && systemctl enable chronyd,避免节点时钟不一致导致集群问题。

二、安装Kubernetes核心组件

网络配置前需部署Kubernetes基础组件(kubeadm、kubelet、kubectl):

  1. 添加Kubernetes镜像源
    创建/etc/yum.repos.d/kubernetes.repo文件,内容如下:
    [kubernetes]
    name=Kubernetes
    baseurl=https://mirrors.ustc.edu.cn/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=0
    
  2. 安装组件
    执行yum install -y kubelet kubeadm kubectl安装;设置kubelet开机启动:systemctl enable kubelet

三、部署Kubernetes集群

  1. 初始化Master节点
    执行kubeadm init --apiserver-advertise-address <Master-IP> --pod-network-cidr <Pod网络CIDR>(如--pod-network-cidr=10.244.0.0/16,需与后续网络插件配置一致)。初始化完成后,按照提示配置kubectl
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
  2. 加入Worker节点
    在Master节点上执行kubeadm init后会生成kubeadm join命令(包含token和CA证书哈希),在Worker节点上执行该命令即可加入集群。

四、配置CNI网络插件

K8S不内置网络实现,需通过CNI插件管理Pod网络。常用插件及配置如下:

1. Flannel(简单易用,适合入门)

Flannel支持多种后端(UDP、VXLAN、Host-GW),其中VXLAN是生产推荐模式(性能较好)。

2. Calico(高性能,支持网络策略)

Calico采用纯三层转发(不依赖overlay),支持BGP路由和细粒度网络策略,适合大规模生产环境。

3. Cilium(云原生,支持eBPF加速)

Cilium基于eBPF技术,提供高性能网络与安全策略,适合云原生场景(如Knative、Istio)。

五、验证网络配置

  1. 检查网络插件状态
    执行kubectl get pods -n kube-system,确认网络插件Pod(如Flannel的kube-flannel-ds-*、Calico的calico-node-*)均为Running状态。
  2. 测试Pod间通信
    部署一个测试Pod(如nginx),进入Pod内ping其他节点或Pod的IP:
    kubectl run test-pod --image=nginx --rm -it -- /bin/sh
    # 在Pod内执行
    ping <Master-IP>
    ping <Worker-Node-IP>
    
  3. 验证Service暴露
    创建一个Service(如ClusterIPNodePort),通过集群内或外部访问Service的IP/端口,确认服务可达。

六、配置网络策略(可选,增强安全性)

K8S的NetworkPolicy资源可实现Pod间的访问控制(如允许/拒绝特定命名空间、标签的Pod访问)。

以上步骤覆盖了Linux环境下K8S网络配置的核心流程,实际部署时需根据集群规模、性能需求及安全要求选择合适的插件,并调整配置参数。

0
看了该问题的人还看了