Ubuntu上Kubernetes网络配置实现指南
在Ubuntu上配置Kubernetes网络需完成基础集群部署、网络插件安装、网络策略配置及连通性验证四大核心步骤,以下是详细操作流程:
一、准备工作:安装Kubernetes基础组件
-
更新系统包
执行sudo apt update && sudo apt upgrade -y,确保系统软件包为最新版本。 -
安装Docker容器运行时
Kubernetes依赖容器运行时,推荐使用Docker(也可选择containerd):sudo apt install -y docker.io sudo systemctl enable --now docker # 启用并启动Docker服务 -
安装Kubernetes核心组件
添加Kubernetes官方APT仓库并安装kubeadm(集群初始化工具)、kubelet(节点代理)、kubectl(命令行工具):sudo apt install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl # 锁定组件版本,避免意外升级
二、初始化Kubernetes Master节点
-
初始化集群
使用kubeadm初始化Master节点,必须指定--pod-network-cidr参数(与后续网络插件的Pod网段一致,常见值为10.244.0.0/16或192.168.0.0/16):sudo kubeadm init --pod-network-cidr=10.244.0.0/16初始化完成后,会输出
kubeadm join命令(用于Worker节点加入集群),请妥善保存。 -
配置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节点状态
执行kubectl get nodes,此时Master节点应处于NotReady状态(需等待网络插件部署后变为Ready)。
三、安装网络插件(核心步骤)
Kubernetes需通过网络插件实现Pod跨节点通信,以下是主流插件的安装指南:
1. Calico(企业级,支持网络策略)
Calico是基于BGP的三层网络插件,适用于中大规模生产环境,支持精细的Pod网络策略控制。
- 安装步骤:
下载Calico官方YAML清单(适配最新版本):
(可选)修改Pod网段:若集群Pod网段非默认的curl -O https://docs.projectcalico.org/v3.26/manifests/calico.yaml192.168.0.0/16,需编辑calico.yaml,搜索CALICO_IPV4POOL_CIDR并修改为集群实际网段(如10.244.0.0/16)。
部署Calico组件:kubectl apply -f calico.yaml - 验证:
查看Calico Pod状态:kubectl get pods -n calico-system,所有Pod应为Running状态。
2. Flannel(轻量级,Overlay网络)
Flannel是入门级网络插件,配置简单,适合中小规模集群或开发测试环境,采用Overlay网络(VXLAN/Host-GW)实现通信。
- 安装步骤:
下载Flannel YAML清单:
(可选)切换为Host-GW后端(提升同局域网性能):编辑curl -O https://raw.githubusercontent.com/flannel-io/flannel/v0.22.0/Documentation/kube-flannel.ymlkube-flannel.yml,搜索net-conf.json,将Backend.Type从vxlan改为host-gw。
部署Flannel组件:kubectl apply -f kube-flannel.yml - 验证:
查看Flannel Pod状态:kubectl get pods -n kube-flannel,所有Pod应为Running状态。
3. Cilium(高性能,eBPF加速)
Cilium基于eBPF技术,提供极致网络性能(如百万级Pod并发),支持高级安全策略(如L7流量过滤),适合大规模或高性能场景(如高频交易、大流量电商)。
- 前提条件:
节点内核版本≥5.4(Ubuntu 20.04+默认满足),禁用rp_filter(避免eBPF流量被拦截):echo "net.ipv4.conf.all.rp_filter=0" | sudo tee -a /etc/sysctl.conf echo "net.ipv4.conf.default.rp_filter=0" | sudo tee -a /etc/sysctl.conf sudo sysctl -p - 安装步骤:
安装Helm(Kubernetes包管理工具):
添加Cilium Helm仓库并更新:curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
部署Cilium组件:helm repo add cilium https://helm.cilium.io/ helm repo updatehelm install cilium cilium/cilium --namespace kube-system \ --set k8sServiceHost=\ # 替换为集群API Server IP --set k8sServicePort=6443 # 默认6443 - 验证:
查看Cilium Pod状态:kubectl get pods -n kube-system -l k8s-app=cilium,所有Pod应为Running状态;执行kubectl exec -n kube-system cilium-xxxx -- cilium status,输出应显示Status: ready且EBPF: enabled。
四、验证网络连通性
-
创建测试Pod
部署一个Nginx Pod作为测试目标:kubectl run nginx --image=nginx --port=80 --rm -it --restart=Never执行
ip a查看Pod IP(如10.244.1.2),退出Pod(输入exit)。 -
跨节点Pod通信
在另一个节点创建Busybox Pod,尝试访问Nginx Pod的IP:kubectl run test-pod --image=busybox --rm -it --restart=Never -- wget -qO- http://若返回Nginx欢迎页面(如
),则说明网络连通性正常。
五、可选:配置网络策略(增强安全性)
网络策略用于控制Pod之间的通信(如限制某命名空间的Pod只能访问特定端口),以Calico为例:
-
创建网络策略
以下策略允许default命名空间内所有Pod互相访问,拒绝外部访问:apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all namespace: default spec: podSelector: {} # 匹配所有Pod policyTypes: - Ingress # 控制入站流量 - Egress # 控制出站流量 ingress: [] # 禁止所有入站流量 egress: [] # 禁止所有出站流量应用策略:
kubectl apply -f network-policy.yaml。 -
测试策略效果
尝试从default命名空间外的Pod访问default命名空间内的Pod,应无法访问;若需允许特定流量,可修改ingress/egress字段(如允许来自kube-system命名空间的流量)。
通过以上步骤,即可在Ubuntu上完成Kubernetes网络配置,实现Pod跨节点通信及安全策略控制。需根据实际场景选择合适的网络插件(如生产环境推荐Calico/Cilium,开发测试推荐Flannel)。
以上就是关于“Ubuntu Kubernetes网络配置如何实现”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm