首页主机资讯centos与k8s网络配置

centos与k8s网络配置

时间2025-11-20 16:16:03发布访客分类主机资讯浏览1501
导读:CentOS 上 Kubernetes 网络配置实操指南 一 基础网络与系统准备 主机名与解析 设置主机名:hostnamectl set-hostname k8s-master(工作节点设为如 k8s-node1) 配置 /etc/h...

CentOS 上 Kubernetes 网络配置实操指南

一 基础网络与系统准备

  • 主机名与解析
    • 设置主机名:hostnamectl set-hostname k8s-master(工作节点设为如 k8s-node1)
    • 配置 /etc/hosts(示例):
      192.168.1.100 k8s-master
      192.168.1.101 k8s-node1
      192.168.1.102 k8s-node2
      
  • 静态 IP(以网卡 ens33 为例)
    • 编辑:/etc/sysconfig/network-scripts/ifcfg-ens33
      DEVICE=ens33
      BOOTPROTO=static
      IPADDR=192.168.1.100
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.1
      DNS1=8.8.8.8
      DNS2=114.114.114.114
      ONBOOT=yes
      
    • 使生效:systemctl restart network
  • 基础组件与内核参数
    • 关闭交换分区:swapoff -a & & sed -i '/swap/s/^/#/' /etc/fstab
    • 防火墙(测试环境常用做法):systemctl stop firewalld & & systemctl disable firewalld
    • SELinux(测试环境常用做法):setenforce 0 & & sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
    • 内核转发:echo 'net.ipv4.ip_forward=1' > > /etc/sysctl.d/k8s.conf & & sysctl --system
    • 时间同步:yum install -y ntpdate & & ntpdate time.windows.com
  • 容器运行时与 kubelet
    • 安装 containerd(推荐):yum install -y containerd.io
    • 生成默认配置并启用 SystemdCgroup:
      containerd config default | tee /etc/containerd/config.toml
      sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
      systemctl enable --now containerd
      
    • 安装 kubeadm/kubelet/kubectl(版本保持一致):yum install -y kubeadm kubelet kubectl
    • 启动 kubelet:systemctl enable --now kubelet

二 初始化集群与网络插件

  • 初始化控制平面(示例)
    • 使用 kubeadm 初始化(注意与所选网络插件的 Pod CIDR 保持一致):
      kubeadm init \
        --apiserver-advertise-address=192.168.1.100 \
        --pod-network-cidr=10.244.0.0/16 \
        --service-cidr=10.96.0.0/12
      
    • 配置 kubectl:
      mkdir -p $HOME/.kube
      cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      chown $(id -u):$(id -g) $HOME/.kube/config
      
  • 安装网络插件(二选一,Pod CIDR 需与 init 参数一致)
    • Flannel(覆盖网络,部署简单)
      kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
      
    • Calico(支持网络策略,生产常用)
      curl -O https://docs.projectcalico.org/manifests/calico.yaml
      kubectl apply -f calico.yaml
      
  • 节点加入
    • 在 Master 上获取加入命令:kubeadm token create --print-join-command
    • 在 Worker 上执行输出的 kubeadm join ... 命令

三 验证与连通性测试

  • 集群状态
    kubectl get nodes
    kubectl get pods -n kube-system
    
  • Pod 网络连通性
    kubectl run nginx --image=nginx --port=80 --dry-run=client -o yaml | kubectl apply -f -
    POD_IP=$(kubectl get pod nginx -o jsonpath='{
    .status.podIP}
        ')
    kubectl run test-pod --image=busybox --rm -it -- wget -qO- http://$POD_IP
    
  • Service 与外部访问
    kubectl expose pod nginx --port=80 --type=NodePort
    kubectl get svc nginx
    # 通过任一节点 IP:NodePort 访问
    
  • 常见问题快速排查
    • 节点 NotReady:检查网络插件 Pod 是否 Running、Pod CIDR 是否与 kubeadm 一致
    • Pod 之间不通:确认 Flannel/Calico 已就绪、节点间 UDP/TCP 8472(Flannel VXLAN)或 IPIP 未被阻断
    • DNS 解析异常:检查 kube-dns/coredns 是否就绪、是否存在 NetworkPolicy 拦截
    • 镜像拉取失败:配置国内镜像源或使用企业私有仓库

四 生产环境注意事项

  • 安全与合规
    • 不建议长期关闭防火墙与 SELinux,生产环境应基于最小暴露面配置规则(如仅放行 6443/10250/8472/4789 等必要端口),并将 SELinux 设为 permissive 或按策略配置
  • 网络模型选择
    • 同机房二层网络优先选择 Calico BGPCilium BPF 提升性能;跨机房/公有云优先 Flannel VXLANCalico IPIP
  • 网络策略
    • 启用 NetworkPolicy 实现命名空间与服务间隔离,优先使用 CalicoCilium 提供的策略引擎
  • 高可用与升级
    • 控制平面高可用(多 Master + VIP/Keepalived),网络插件与 Kubernetes 版本保持兼容,变更前备份 etcd 与关键清单文件

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


若转载请注明出处: centos与k8s网络配置
本文地址: https://pptw.com/jishu/752155.html
k8s如何在centos上部署应用 centos k8s部署怎样进行服务发现

游客 回复需填写必要信息