首页主机资讯ubuntu上k8s网络如何配置

ubuntu上k8s网络如何配置

时间2025-12-03 18:02:03发布访客分类主机资讯浏览265
导读:Ubuntu 上 Kubernetes 网络配置实操指南 一 前置条件与系统网络准备 关闭交换分区并持久化:执行swapoff -a,并将 /etc/fstab 中的 swap 挂载行注释,避免 kubelet 报错。 加载内核模块并开启...

Ubuntu 上 Kubernetes 网络配置实操指南

一 前置条件与系统网络准备

  • 关闭交换分区并持久化:执行swapoff -a,并将 /etc/fstab 中的 swap 挂载行注释,避免 kubelet 报错。
  • 加载内核模块并开启桥接与转发:
    • 模块:加载 overlaybr_netfilter
      • echo -e “overlay\nbr_netfilter” | sudo tee /etc/modules-load.d/k8s.conf
      • sudo modprobe overlay & & sudo modprobe br_netfilter
    • Sysctl:开启桥接流量进入 iptables、开启 IPv4 转发
      • echo -e “net.bridge.bridge-nf-call-iptables = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.ipv4.ip_forward = 1” | sudo tee /etc/sysctl.d/k8s.conf
      • sudo sysctl --system
  • 容器运行时与 cgroup 驱动:以 Docker 为例,配置 native.cgroupdriver=systemd,存储驱动用 overlay2,并重启服务。
  • 防火墙与安全组:测试环境可临时关闭 ufw;生产环境请按需放行 6443/10250/8472(UDP,VXLAN)/30000-32767(NodePort) 等端口。
  • 主机名与解析:为各节点设置唯一 hostname,并在 /etc/hosts 中完成内网解析,便于集群通信与排障。

二 初始化集群与 Pod 网段规划

  • 安装组件:在所有节点安装 kubeadm/kubelet/kubectl,并建议执行 sudo apt-mark hold kubelet kubeadm kubectl 防止意外升级。
  • 初始化控制平面(只在 master 执行):指定与所选网络插件匹配的 Pod CIDR。例如使用 Flannel 时常用 10.244.0.0/16
    • sudo kubeadm init --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
  • 工作节点加入:在 master 上获取 kubeadm join 命令并执行,完成后在 master 检查 kubectl get nodes

三 安装网络插件

  • 选择插件与 CIDR 对齐:确保 –pod-network-cidr 与插件默认网段一致;如使用 Calico 可改为 192.168.0.0/16 并在自定义资源中设置。
  • 常用插件一键部署示例:
插件 适用场景 安装命令示例 备注
Flannel 快速上手、小型或测试集群 kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 默认使用 10.244.0.0/16;若自定义 CIDR,需同步修改 flannel 配置
Calico 需要网络策略、跨主机高性能 kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml & & kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml 可在 custom-resources.yaml 中设置 CALICO_IPV4POOL_CIDR
Cilium 追求 eBPF 高性能、可观测与策略 参考官方安装文档(cilium-cli) 支持 BPF、服务网格等高级能力,学习曲线略陡
  • 验证插件就绪:
    • watch kubectl get pods -n kube-system
    • kubectl get nodes(状态应为 Ready

四 验证与连通性测试

  • 基本连通性:
    • kubectl run nginx --image=nginx --port=80
    • kubectl expose deployment nginx --port=80 --type=NodePort
    • kubectl get pod,svc
    • 在集群内访问 ClusterIP 或通过节点 IP 与 NodePort 访问服务
  • 跨节点验证:在不同节点上分别部署 busybox 或临时容器,互相 ping Pod IP、解析 Service DNS,确认跨主机网络与 kube-proxy 正常。

五 常见问题与网络策略

  • 节点 NotReady:优先检查 kubelet 状态(sudo systemctl restart kubelet)、容器运行时、以及网络插件 Pod 是否全部 Running;确认 Pod CIDR 与插件配置一致。
  • 无法拉取镜像:在受限网络环境预先 docker pull 所需镜像并 tag 为插件清单中指定的镜像名,或使用国内镜像源。
  • 策略与安全:如需最小暴露面,启用 NetworkPolicy 控制 Ingress/Egress 流量;例如仅允许访问某 CIDR 的出站流量:
    • apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
      name: allow-egress-to-172-17
      spec:
      podSelector:
      matchLabels:
      app: my-app
      policyTypes:
      • Egress
        egress:
      • to:
        • ipBlock:
          cidr: 172.17.0.0/16
  • 端口与防火墙:生产环境请按需放行 6443(API)10250(kubelet)8472/UDP(VXLAN,Flannel)30000-32767(NodePort),避免策略阻断导致节点 NotReady 或服务不可达。

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


若转载请注明出处: ubuntu上k8s网络如何配置
本文地址: https://pptw.com/jishu/762576.html
k8s在ubuntu上的日志如何查看 ubuntu k8s安全设置怎么做

游客 回复需填写必要信息