首页主机资讯Kubernetes如何在CentOS上进行网络配置

Kubernetes如何在CentOS上进行网络配置

时间2025-12-18 18:07:03发布访客分类主机资讯浏览1500
导读:在 CentOS 上配置 Kubernetes 网络的实操指南 一 基础网络与内核参数 设置主机名与节点互通:为每个节点设置唯一主机名(如:hostnamectl set-hostname k8s-master),并在所有节点维护一致的...

在 CentOS 上配置 Kubernetes 网络的实操指南

一 基础网络与内核参数

  • 设置主机名与节点互通:为每个节点设置唯一主机名(如:hostnamectl set-hostname k8s-master),并在所有节点维护一致的 /etc/hosts 映射,确保节点间可通过主机名访问。
  • 关闭 Swap:Kubernetes 要求禁用 Swap。执行:swapoff -a,并在 /etc/fstab 中注释 swap 行,随后用 free -m 验证 Swap 为 0
  • 加载内核模块与开启转发:
    • 加载模块:modprobe overlay & & modprobe br_netfilter
    • 持久化:
      cat >
           /etc/modules-load.d/k8s.conf <
          <
          EOF
      overlay
      br_netfilter
      EOF
      
    • 开启桥接与转发:
      cat >
           /etc/sysctl.d/k8s.conf <
          <
          EOF
      net.bridge.bridge-nf-call-iptables  = 1
      net.bridge.bridge-nf-call-ip6tables = 1
      net.ipv4.ip_forward                 = 1
      EOF
      sysctl --system
      
  • 防火墙与 SELinux(测试/实验环境常用做法):
    • 停止并禁用防火墙:systemctl stop firewalld & & systemctl disable firewalld
    • 临时禁用 SELinux:setenforce 0;永久禁用:编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 SELINUX=disabled
  • 容器运行时与 kubelet:安装并启用 containerd(或 Docker),配置 SystemdCgroup = true,启动 containerdkubelet 服务。

二 选择并部署 CNI 网络插件

  • 规划 Pod 网段:在初始化集群时通过 –pod-network-cidr 指定(例如 Flannel 常用 10.244.0.0/16)。
  • 部署插件(任选其一,完成其一即可):
插件 适用场景 安装命令 备注
Flannel 快速上手、覆盖网络 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 默认后端 VXLAN;Pod 网段通常为 10.244.0.0/16
Calico 网络策略与安全能力强 kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml 支持 BGP/Overlay 等模式,适合对策略有要求的场景
  • 初始化控制平面(示例):
    kubeadm init --pod-network-cidr=10.244.0.0/16
    mkdir -p $HOME/.kube
    cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    chown $(id -u):$(id -g) $HOME/.kube/config
    
  • 工作节点加入(示例):
    kubeadm join <
        control-plane-host>
        :6443 --token <
        token>
         --discovery-token-ca-cert-hash sha256:<
        hash>
        
    
  • 安装完成后等待 kube-system 命名空间中的网络组件 Running

三 验证与连通性测试

  • 集群就绪检查:
    kubectl get nodes -o wide
    kubectl get pods -n kube-system -o wide
    
  • Pod 网络连通性:
    kubectl run test-nginx --image=nginx:1.25 --restart=Never
    kubectl get pod test-nginx -o wide
    # 在集群内另一 Pod 中访问
    kubectl run test-curl --image=curlimages/curl:8.5 --restart=Never -it --rm -- \
      curl -I http://<
        test-nginx-pod-ip>
        
    
  • Service 与 DNS:
    kubectl expose pod test-nginx --port=80 --name=nginx-svc --type=ClusterIP
    kubectl get svc nginx-svc
    kubectl run test-dns --image=busybox:1.36 --restart=Never -it --rm -- \
      nslookup kubernetes.default.svc.cluster.local
    
  • 节点间连通性:在节点上互相 ping 或通过 nc/telnet 测试关键端口(如 6443/10250/8472 等)。

四 常见问题与排错要点

  • Pod 处于 Pending:多因未部署 CNI 或 –pod-network-cidr 与插件配置不匹配;检查 kube-system 中网络 Pod 是否 Running,核对网段一致性。
  • Pod 之间或节点间不通:确认已加载 overlay/br_netfilterip_forward=1;检查云厂商 安全组/ACL 是否放行 VxLAN(8472/UDP)、节点间 TCP/6443 等端口。
  • Service 解析失败:确认 CoreDNS Pod 就绪,检查 kube-dns Service 的 ClusterIP 是否分配,使用 nslookup 排查。
  • MTU 与性能:在 FlannelCalico 中根据网卡 MTU 调整(如 VXLAN 通常需预留约 50 字节,MTU 设为 1450 更稳);云上或隧道封装场景尤需关注。
  • 防火墙/SELinux:若未关闭,需为 CNI/ kube-proxy 放行相应端口与协议,或按官方建议精细化策略(生产环境不建议直接关闭)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kubernetes如何在CentOS上进行网络配置
本文地址: https://pptw.com/jishu/775315.html
Kubernetes在CentOS上的资源调度策略如何 centos部署k8s遇到问题怎么办

游客 回复需填写必要信息