cluster_网络
cluster 网络
service 网络
当service和endpoint被创建时,kube-proxy会自动创建相应的转发规则,使得访问service的请求被转发到endpoint
kube-api-server --service-cluster-ip-range ipNet(Default:10.0.0.0/24)
修改MTU
Kubenet支持用户使用Kubelet的--network-plugin-mtu参数指定MTU
--network-plugin-mtu=8873
带宽控制
设置Pod的上传和下载的最高带宽
apiVersion: v1
kind: Pod
metadata:
name: nginx
annotations:
kubernetes.io/ingress-bandwidth: 1M
kubernetes.io/egress-bandwidth: 1M
spec:
containers:
- name: nginx
image: nginx:latest
安装CNI插件
Kubelet和CNI给出了两个默认的文件系统路径
- /etc/cni/net.d 用来存储CNI配置文件
- /opt/cni/bin 目录用来存放CNI插件的二进制文件
在Kubernetes中使用CNI
- Kubelet要使用CNI网络驱动需要配置启动参数--network-plugin=cni。
- Kubelet从--cni-conf-dir(默认为/etc/cni/net.d)中读取文件,并使用该文件中的CNI配置配置每个Pod网络。
- 如果目录中有多个CNI配置文件,则使用文件名字典序列中的第一个文件
host-local 和 bridge 插件
#安装插件
mkdir -p /opt/cni/bin
curl -L https://github.com/containernetworking/plugins/releases/download/v1.0.1/cni-plugins-linux-amd64-v1.0.1.tgz | tar -xz -C /opt/cni/bin
#配置 host-local 和 bridge 插件
在每个节点的 /etc/cni/net.d/ 目录中创建一个 CNI 配置文件
vim /etc/cni/net.d/10-bridge.conf
{
"cniVersion": "0.4.0",
"name": "mynet",
"type": "bridge", # 定义 bridge 类型的网络
"bridge": "cni0",
"isGateway": true,
"isDefaultGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local", # 使用 host-local 插件进行 IP 地址管理
"subnet": "10.22.0.0/16",
"rangeStart": "10.22.0.20",
"rangeEnd": "10.22.255.200",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
ls /opt/cni/bin # 输出应该包含 bridge 和 host-local 等 CNI 插件
systemctl restart kubelet # 为了使新的 CNI 配置文件生效,重启每个节点上的 Kubelet 服务
#验证 CNI 配置
创建一个测试 Pod,Pod 的 IP 地址应该在 10.22.0.0/16 子网内
vim test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- name: busybox
image: busybox
command: ["sleep", "300"]
kubectl apply -f test-pod.yaml
kubectl get pod test-pod -o wide
安装和配置 Flannel
Flannel 是一个简单易用的 CNI 插件,适合小型到中型集群。
--使用以下命令从官方提供的清单文件中安装 Flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
--确保 Flannel DaemonSet 已成功创建,并且 Pod 正常运行
kubectl get daemonset kube-flannel-ds -n kube-system
kubectl get pods -n kube-system -l app=flannel
安装和配置 Calico
Calico 提供更丰富的网络功能和网络策略控制,适合中大型集群
使用以下命令从官方提供的清单文件中安装 Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
确保 Calico DaemonSet 已成功创建,并且 Pod 正常运行
kubectl get daemonset calico-node -n kube-system
kubectl get pods -n kube-system -l k8s-app=calico-node
安装和配置 Weave
Weave 提供一个功能强大的网络解决方案,支持加密和多种网络拓扑。
--使用以下命令从官方提供的 URL 中安装 Weave
kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')
--确保 Weave DaemonSet 已成功创建,并且 Pod 正常运行
kubectl get daemonset weave-net -n kube-system
kubectl get pods -n kube-system -l name=weave-net
配置网络策略
创建一个简单的网络策略只允许特定的 Pod 访问前端
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
namespace: default
spec:
podSelector:
matchLabels:
role: frontend
ingress:
- from:
- podSelector:
matchLabels:
role: backend
kubectl apply -f your-network-policy.yaml
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)