首页主机资讯Kubernetes网络配置Ubuntu指南

Kubernetes网络配置Ubuntu指南

时间2025-12-11 02:29:04发布访客分类主机资讯浏览240
导读:Ubuntu 上搭建与配置 Kubernetes 网络的实用指南 一 环境准备与内核网络 基础设置:关闭 Swap、统一 hostname 与 /etc/hosts、可选安装 chrony 做时间同步(生产环境强烈建议)。 内核模块与转发...

Ubuntu 上搭建与配置 Kubernetes 网络的实用指南

一 环境准备与内核网络

  • 基础设置:关闭 Swap、统一 hostname/etc/hosts、可选安装 chrony 做时间同步(生产环境强烈建议)。
  • 内核模块与转发:加载 overlaybr_netfilter 并开启桥接与转发,使 Pod 网络与宿主机网络栈正确联动。
  • 容器运行时:以 Docker 为例,配置 systemd cgroup 驱动overlay2 存储驱动,保证与 kubelet 的 cgroup 一致性与稳定性。
  • 组件安装:在所有节点安装并固定版本 kubeadm/kubelet/kubectl,避免滚动升级导致的不兼容。
  • 控制平面初始化:使用 kubeadm init 启动集群,注意与所选网络插件的 Pod CIDR 保持一致(例如 Flannel 常用 10.244.0.0/16)。

示例命令(在所有节点执行基础网络与内核设置):

# 关闭 Swap
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab

# 主机名与 hosts(示例)
echo "192.168.65.128 master" | sudo tee -a /etc/hosts
echo "192.168.65.129 node1"  | sudo tee -a /etc/hosts
echo "192.168.65.130 node2"  | sudo tee -a /etc/hosts

# 内核模块与 sysctl
cat <
    <
    EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

cat <
    <
    EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
sudo sysctl --system

# Docker 与 cgroup 驱动
sudo apt-get update &
    &
     sudo apt-get install -y docker.io
sudo mkdir -p /etc/docker
cat <
    <
EOF | sudo tee /etc/docker/daemon.json
{

  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
 "max-size": "100m" }
,
  "storage-driver": "overlay2"
}
    
EOF
sudo systemctl enable --now docker

# 安装并固定 kubeadm/kubelet/kubectl(示例版本)
sudo apt-get update
sudo apt-get install -y kubelet=1.28.2-00 kubeadm=1.28.2-00 kubectl=1.28.2-00
sudo apt-mark hold kubelet kubeadm kubectl

说明:以上为 Ubuntu 20.04/22.04 常见做法,生产环境请结合内核安全策略与合规要求调整防火墙与日志策略。

二 选择并部署网络插件

  • 常用方案与适用场景:
    • Flannel:上手简单、覆盖常见场景,默认 VXLAN 后端,适合快速交付与测试。
    • Calico:支持 BGP/IPIP、网络策略丰富,适合对网络策略与规模有要求的环境。
    • Cilium:基于 eBPF,高性能与服务网格集成,适合云原生与高并发场景。
  • 部署要点:
    • 仅部署一个集群网络插件,避免冲突。
    • 初始化控制平面时的 –pod-network-cidr 需与插件配置一致(如 Flannel 使用 10.244.0.0/16)。
    • 安装完成后等待 kube-system 中插件 Pod 全部 Running,再进行业务部署。

示例命令(任选其一)

  • Flannel(推荐新手)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  • Calico(策略与安全能力强)
kubectl apply -f https://docs.projectcalico.org/manifests/tigera-operator.yaml
kubectl apply -f https://docs.projectcalico.org/manifests/custom-resources.yaml
  • Cilium(eBPF 与可观测性强)
helm repo add cilium https://helm.cilium.io/
helm install cilium cilium/cilium --namespace kube-system

提示:若使用 Flannel,其默认后端为 VXLAN;如需自定义 Pod CIDR,请修改清单中的 Network 字段后再部署。

三 验证与连通性测试

  • 集群就绪:确认节点 Ready、插件 Running
  • 基础连通:创建测试 Pod,通过 Service 暴露端口,跨节点与跨命名空间访问验证。
  • 网络策略:按需启用 NetworkPolicy,验证隔离与放行规则生效。

示例命令

# 等待节点就绪
kubectl get nodes

# 等待网络插件就绪(示例标签)
kubectl get pods -n kube-system -l app=flannel

# 部署测试应用
kubectl run nginx --image=nginx:1.25 --port=80 --restart=Never
kubectl expose pod nginx --port=80 --type=NodePort

# 验证访问
kubectl get pod nginx -o wide
kubectl get svc nginx
curl -I http://<
    任一节点IP>
    :<
    NodePort>
    

说明:若测试失败,优先检查节点 Ready 状态、插件 Pod 状态与 Pod CIDR 是否与插件配置一致。

四 常见问题与排查清单

  • 节点 NotReady:检查 kubelet 状态、容器运行时、镜像拉取、内核参数与 cgroup 驱动 一致性。
  • Pod 之间不通:确认只启用一个网络插件、Pod CIDR 配置一致、节点间 UDP/TCP 8472(VXLAN)BGP 端口放通。
  • Service 访问异常:核对 Service 类型、Endpointsiptables/ipvs 规则与云厂商 安全组/NACL
  • 多插件冲突:卸载已安装插件后重启 kubelet 再安装目标插件,避免残留路由/网卡。
  • 生产建议:开启 日志轮转监控告警,定期审计 NetworkPolicy,在变更窗口内实施网络插件升级与回滚预案。

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


若转载请注明出处: Kubernetes网络配置Ubuntu指南
本文地址: https://pptw.com/jishu/769007.html
Ubuntu MariaDB故障排查指南 Debian进程的错误日志如何分析

游客 回复需填写必要信息