Ubuntu上Kubernetes网络配置指南
在Ubuntu上配置Kubernetes网络需完成基础集群搭建、网络插件选择与部署、网络验证及可选策略配置四大步骤,以下是详细操作流程:
一、准备工作:安装基础组件
在配置网络前,需确保Ubuntu节点已安装Docker(容器运行时)及Kubernetes核心组件(kubelet、kubeadm、kubectl)。
- 更新系统包:
sudo apt update && sudo apt upgrade -y - 安装Docker:
sudo apt install -y docker.io sudo systemctl enable --now docker - 添加Kubernetes仓库并安装组件:
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节点执行以下命令,初始化集群时需指定Pod网络CIDR(与后续网络插件网段一致,如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
三、安装网络插件(关键步骤)
Kubernetes需通过网络插件实现Pod跨节点通信,常见插件及安装流程如下:
1. Calico(企业级,支持网络策略)
Calico基于BGP协议,提供高性能三层网络及细粒度安全策略,适合中大规模生产环境。
- 下载并部署Calico清单:
curl -O https://docs.projectcalico.org/v3.26/manifests/calico.yaml - (可选)调整配置:若集群Pod网段非默认
192.168.0.0/16,需编辑calico.yaml,搜索CALICO_IPV4POOL_CIDR修改为集群实际网段(如10.244.0.0/16);若节点使用双网卡,添加IP_AUTODETECTION_METHOD指定主网卡(如interface=eth0)。 - 部署插件:
kubectl apply -f calico.yaml - 验证状态:
kubectl get pods -n calico-system # 所有Pod应为Running状态
2. Flannel(轻量Overlay,适合开发测试)
Flannel通过Overlay网络实现跨节点通信,配置简单,资源消耗低,适合中小规模集群。
- 下载并部署Flannel清单:
curl -O https://raw.githubusercontent.com/flannel-io/flannel/v0.22.0/Documentation/kube-flannel.yml - (可选)切换为Host-GW后端:若节点在同一局域网,将
net-conf.json中的Backend.Type从vxlan改为host-gw,提升网络性能。 - 部署插件:
kubectl apply -f kube-flannel.yml - 验证状态:
kubectl get pods -n kube-flannel # 所有Pod应为Running状态
四、验证网络连通性
安装插件后,通过创建测试Pod验证网络是否正常:
- 创建Nginx测试Pod:
kubectl run nginx --image=nginx --port=80 - 获取Pod IP:
POD_IP=$(kubectl get pod nginx -o jsonpath='{.status.podIP}') - 从其他节点Pod访问:
若能正常访问Nginx页面,说明网络配置成功。kubectl run test-pod --image=busybox --rm -it -- wget -qO- http://$POD_IP
五、配置网络策略(可选,增强安全性)
若需控制Pod间通信(如限制某命名空间Pod仅能访问特定服务),可使用Calico的网络策略功能。以下示例创建一个允许同一命名空间内Pod互相访问的策略:
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-same-namespace
namespace: default # 应用到default命名空间
spec:
selector: all() # 匹配所有Pod
ingress:
- action: Allow
source: {} # 允许同一命名空间内的所有来源
egress:
- action: Allow
destination: {} # 允许访问同一命名空间内的所有目标
应用策略:
kubectl apply -f network-policy.yaml
注意事项
- Pod网段一致性:初始化集群时的
--pod-network-cidr需与所选网络插件的网段完全一致(如Calico的CALICO_IPV4POOL_CIDR),否则会导致网络不通。 - 节点加入集群:Worker节点需通过
kubeadm join命令加入集群(命令在Master节点初始化时生成),加入后需等待节点状态变为Ready。 - 插件兼容性:确保网络插件版本与Kubernetes集群版本兼容(如Calico 3.26支持Kubernetes 1.27+)。
通过以上步骤,即可在Ubuntu上完成Kubernetes网络配置,实现Pod间的稳定通信。
以上就是关于“Ubuntu上Kubernetes网络配置怎么做”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm