温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Kubernetes网络如何配置

发布时间:2025-10-24 06:06:00 来源:亿速云 阅读:157 作者:小樊 栏目:系统运维

Kubernetes网络配置指南(以CentOS为例)
Kubernetes网络配置的核心是通过CNI(Container Network Interface)插件实现Pod间通信、跨节点网络打通及安全策略控制。以下是详细配置步骤:

一、前置准备

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

  1. 关闭防火墙:临时停止并禁用firewalld,避免拦截网络流量。
    systemctl stop firewalld && systemctl disable firewalld
    
  2. 禁用SELinux:修改配置文件永久禁用,防止SELinux限制网络功能。
    setenforce 0
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    
  3. 关闭Swap分区:Kubernetes不支持Swap,需永久禁用以避免网络组件异常。
    swapoff -a
    sed -i '/swap/s/^/#/' /etc/fstab
    
  4. 配置静态IP:编辑网络接口文件(如/etc/sysconfig/network-scripts/ifcfg-ens33),设置静态IP、子网掩码、网关和DNS,确保各节点IP在同一网段。
    DEVICE=ens33
    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文件:设置节点主机名(如k8s-master、k8s-node1),并在/etc/hosts中添加节点IP与主机名映射,确保节点间可通过主机名访问。
    hostnamectl set-hostname k8s-master  # Master节点
    echo "192.168.1.100 k8s-master" >> /etc/hosts  # 所有节点均需添加
    
  6. 时间同步:安装chrony服务并启动,确保集群节点时间一致,避免因时钟偏差导致网络问题。
    systemctl start chronyd && systemctl enable chronyd
    

二、安装Kubernetes核心组件

使用kubeadm工具快速搭建Kubernetes集群(以CentOS为例):

  1. 安装kubeadm、kubelet、kubectl:通过yum安装组件,并启用kubelet服务。
    yum install -y kubeadm kubelet kubectl --disable-gpg-check
    systemctl enable kubelet && systemctl start kubelet
    
  2. 初始化Master节点:使用kubeadm init命令初始化集群,必须指定Pod网络CIDR(需与后续网络插件网段一致,如10.244.0.0/16)。
    kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.1.100
    
    初始化完成后,按提示配置kubectl:
    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

三、安装CNI网络插件(关键步骤)

Kubernetes依赖CNI插件实现Pod网络,以下是主流插件的安装步骤:

1. Calico(企业级,支持网络策略)

Calico是基于BGP的三层网络插件,适合中大规模生产环境,支持精细的网络策略控制(如限制Pod间通信、访问外部网络)。

  • 下载并应用配置:使用官方YAML文件安装(默认适配Pod网段192.168.0.0/16,需根据实际情况修改)。
    curl -O https://docs.projectcalico.org/v3.26/manifests/calico.yaml
    # 若Pod网段为10.244.0.0/16,修改calico.yaml中的CALICO_IPV4POOL_CIDR字段
    sed -i 's/CALICO_IPV4POOL_CIDR: "192.168.0.0\/16"/CALICO_IPV4POOL_CIDR: "10.244.0.0\/16"/g' calico.yaml
    kubectl apply -f calico.yaml
    
  • 验证安装:查看Calico组件状态,所有Pod应为Running。
    kubectl get pods -n calico-system
    

2. Flannel(轻量Overlay,适合开发测试)

Flannel是Overlay网络插件,配置简单、资源消耗低,适合中小规模集群或开发测试环境(支持VXLAN、Host-GW等后端)。

  • 下载并应用配置:使用官方YAML文件安装。
    curl -O https://raw.githubusercontent.com/flannel-io/flannel/v0.22.0/Documentation/kube-flannel.yml
    
  • 切换为Host-GW后端(可选,提升同局域网性能):编辑kube-flannel.yml,找到net-conf.json部分,将Backend.Type改为host-gw(需集群节点在同一局域网)。
    sed -i 's/"Type": "vxlan"/"Type": "host-gw"/g' kube-flannel.yml
    kubectl apply -f kube-flannel.yml
    
  • 验证安装:查看Flannel组件状态,所有Pod应为Running。
    kubectl get pods -n kube-flannel
    

3. Cilium(eBPF加速,高性能场景)

Cilium基于eBPF技术实现网络转发与策略控制,性能远超传统插件,适合大规模集群、高频交易或大流量电商场景(需内核版本≥5.4)。

  • 安装Helm:Helm是Kubernetes包管理工具,简化Cilium配置。
    curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    chmod 700 get_helm.sh
    ./get_helm.sh
    
  • 添加Cilium Helm仓库并更新:
    helm repo add cilium https://helm.cilium.io
    helm repo update
    
  • 部署Cilium:使用Helm安装,指定API Server地址(替换为集群实际IP)。
    helm install cilium cilium/cilium --version 1.14.0 \
      --namespace kube-system \
      --set k8sServiceHost=192.168.1.100 \  # 替换为Kubernetes API Server IP
      --set k8sServicePort=6443             # API Server端口(默认6443)
    
  • 验证安装:查看Cilium组件状态,所有Pod应为Running,并确认eBPF功能已启用。
    kubectl get pods -n kube-system -l k8s-app=cilium
    kubectl exec -n kube-system cilium-xxxx -- cilium status
    

四、验证网络配置

  1. 测试Pod间通信:创建测试Pod(如Nginx),通过kubectl exec进入Pod,使用ping或curl验证与其他Pod的连通性。
    kubectl run nginx --image=nginx --port=80  # 创建Nginx Pod
    kubectl expose pod nginx --type=ClusterIP --port=80  # 暴露为ClusterIP Service
    kubectl exec -it nginx -- /bin/sh         # 进入Pod
    ping <其他Pod的IP>                        # 测试连通性
    
  2. 检查网络插件Pod状态:确保所有网络插件组件(如Calico的calico-node、Flannel的flannel-node)均为Running。
    kubectl get pods -n kube-system
    

五、高级配置(可选)

  1. 配置网络策略:通过NetworkPolicy限制Pod间通信(如仅允许同一命名空间的Pod访问)。
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: allow-same-namespace
    spec:
      podSelector: {}  # 选择所有Pod
      policyTypes:
      - Ingress
      - Egress
      ingress:
      - from:
        - podSelector: {}  # 仅允许同一命名空间的Pod访问
      egress:
      - to:
        - podSelector: {}  # 仅允许访问同一命名空间的Pod
    
    应用策略:kubectl apply -f network-policy.yaml。

以上步骤覆盖了Kubernetes网络配置的核心流程,根据集群规模(中小规模/大规模)、性能需求(轻量/高性能)及安全要求(基础/严格),选择合适的网络插件即可实现稳定的网络环境。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手