首页主机资讯centos k8s部署怎样配置网络

centos k8s部署怎样配置网络

时间2025-11-20 16:18:04发布访客分类主机资讯浏览1381
导读:CentOS 上 Kubernetes 网络配置实操指南 一 前置网络与系统准备 关闭防火墙与 SELinux(测试环境常用做法,生产请按需放通端口与策略) systemctl stop firewalld && sys...

CentOS 上 Kubernetes 网络配置实操指南

一 前置网络与系统准备

  • 关闭防火墙与 SELinux(测试环境常用做法,生产请按需放通端口与策略)
    • systemctl stop firewalld & & systemctl disable firewalld
    • setenforce 0 & & sed -i ‘s/^SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
  • 禁用 Swap(kubelet 要求)
    • swapoff -a & & sed -i ‘/swap/s/^/#/’ /etc/fstab
  • 内核网络参数与模块(桥接流量入 iptables、开启转发)
    • cat > /etc/sysctl.d/k8s.conf < < EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 EOF
    • modprobe br_netfilter & & sysctl --system
  • 主机名与 /etc/hosts(示例)
    • hostnamectl set-hostname k8s-master
    • echo “192.168.10.100 k8s-master\n192.168.10.101 k8s-node1” > > /etc/hosts
  • 时间同步(避免证书/组件异常)
    • yum install -y ntpdate & & ntpdate time.windows.com
  • 容器运行时(以 containerd 为例,配置 systemd cgroup)
    • yum install -y containerd.io cri-tools
    • containerd config default | tee /etc/containerd/config.toml
    • sed -i ‘s/SystemdCgroup = false/SystemdCgroup = true/’ /etc/containerd/config.toml
    • systemctl enable --now containerd 说明:以上为常见前置项,能确保节点具备基本的网络转发与容器网络栈支持。

二 集群初始化与 Pod/Service CIDR 规划

  • 规划地址段(与所选网络插件保持一致)
    • Service CIDR:建议 10.96.0.0/16
    • Pod CIDR:
      • Flannel 常用:10.244.0.0/16
      • Calico 常用:192.168.0.0/16
  • 初始化控制平面(示例)
    • kubeadm init
      –apiserver-advertise-address=192.168.10.100
      –service-cidr=10.96.0.0/16
      –pod-network-cidr=10.244.0.0/16
      –image-repository=registry.aliyuncs.com/google_containers
  • 配置 kubectl
    • mkdir -p $HOME/.kube
    • cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    • chown $(id -u):$(id -g) $HOME/.kube/config
  • 工作节点加入
    • kubeadm join 192.168.10.100:6443 --token --discovery-token-ca-cert-hash sha256: 提示:Pod CIDR 必须在初始化时指定,后续更换成本高;请与所选网络插件的默认 CIDR 保持一致。

三 安装网络插件

  • Flannel(推荐用于快速打通 Pod 网络)
    • kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    • 若初始化时使用了非默认 Pod CIDR,需编辑 kube-flannel.yml 中的 Network 字段与之匹配。
  • Calico(支持 NetworkPolicy、跨节点策略更丰富)
    • 下载对应版本清单(示例为 v3.25):
      • wget https://docs.projectcalico.org/v3.25/manifests/calico.yaml
    • 如使用非默认 Pod CIDR(如 192.168.0.0/16),在 calico.yaml 中设置:
        • name: CALICO_IPV4POOL_CIDR
        • value: “192.168.0.0/16”
    • 应用:
      • kubectl apply -f calico.yaml
  • 验证
    • kubectl get nodes
    • kubectl get pods -n kube-system | grep -E ‘flannel|calico’ 说明:Flannel 部署简单、覆盖常见场景;Calico 提供网络策略等能力,适合对网络治理有要求的集群。

四 连通性验证与网络策略示例

  • 基础连通性
    • 部署测试应用:kubectl run nginx --image=nginx --port=80
    • 查看 Pod IP:kubectl get pod nginx -o wide
    • 跨 Pod 访问:kubectl exec -it – curl http://:80
  • DNS 解析
    • kubectl run -it --rm dns-test --image=busybox:1.36 --restart=Never – nslookup kubernetes.default.svc.cluster.local
  • 网络策略(示例:同命名空间内允许 80 入站)
    • apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-same-ns-http namespace: default spec: podSelector: matchLabels: app: nginx policyTypes:
      • Ingress ingress:
      • from:
        • podSelector: { } ports:
        • protocol: TCP port: 80
    • 应用:kubectl apply -f network-policy.yaml 说明:验证应覆盖 Pod 间通信、集群 DNS 与关键端口策略,确保业务与治理策略生效。

五 常见问题与排查要点

  • 节点 NotReady:多数因网络插件未就绪,检查 kube-system 中 flannel/calico Pod 是否 Running,镜像是否拉取成功,Pod CIDR 是否与初始化参数一致。
  • Pod 间不通:确认节点间 Pod CIDR 路由可达(云上需开启相关路由/安全组),以及 iptables/ipvs 未被错误策略干扰。
  • Service 访问异常:核对 Service CIDR 与 kube-proxy 工作模式(iptables/ipvs),排查 Endpoint 是否正确关联。
  • DNS 解析失败:检查 kube-dns/coredns 是否就绪、是否存在 NetworkPolicy 拦截、以及节点 resolv.conf 配置。
  • 生产建议:不要长期关闭防火墙与 SELinux,改为按需放通端口与策略;为容器运行时与 kubelet 配置合适的 systemd cgroup 驱动与镜像仓库镜像源,提升稳定性与可维护性。

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


若转载请注明出处: centos k8s部署怎样配置网络
本文地址: https://pptw.com/jishu/752157.html
centos k8s部署怎样进行服务发现 centos k8s部署如何监控集群

游客 回复需填写必要信息