kubernetes网络模式
在 Kubernetes(你写的是 kuberbetes,应为 Kubernetes)里,“网络模式”一般分为以下几个层面:
- Pod 网络模式(容器网络模型)
- Service 网络模式(服务暴露方式)
- Ingress / Gateway 网络模式(七层入口流量)
- 网络插件模式(CNI 网络实现)
- 网络策略模式(NetworkPolicy)
如果按“实际项目中的网络模式”来理解,最常用的是:
Pod 网络 + Service 暴露 + Ingress 网关 + CNI 插件
我按企业项目给你整理几个完整示例:
# 一、Pod 网络模式(Kubernetes 默认网络模型)
Kubernetes 默认要求:
每个 Pod 拥有独立 IP,Pod 之间直接通信,无 NAT
这是 Kubernetes 的基础网络模型。
# 实际项目示例:
假设:
Node1: 10.10.1.11
Node2: 10.10.1.12
Pod CIDR: 10.244.0.0/16
1
2
3
2
3
# 安装 Flannel 网络插件
适合:
- 中小型项目
- 网络结构简单
- 不需要 NetworkPolicy
# 1)初始化集群指定 Pod 网段
kubeadm init \
--apiserver-advertise-address=10.10.1.11 \
--pod-network-cidr=10.244.0.0/16
1
2
3
2
3
# 2)安装 Flannel
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
1
# 3)查看节点网络
kubectl get pods -n kube-flannel
1
# 4)创建测试 Pod
apiVersion: v1
kind: Pod
metadata:
name: nginx-test
spec:
containers:
- name: nginx
image: nginx
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
部署:
kubectl apply -f nginx.yaml
1
查看 IP:
kubectl get pod -o wide
1
示例:
nginx-test 10.244.1.5 node1
1
说明:
Pod IP 来自 Flannel 分配的 Pod CIDR。
# 二、Service 网络模式(服务暴露方式)
Kubernetes Service 常见网络模式:
- ClusterIP
- NodePort
- LoadBalancer
- ExternalName
# 1. ClusterIP(集群内部访问)
适合:
微服务之间内部调用
# 示例:部署 nginx + ClusterIP
# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-web
spec:
replicas: 2
selector:
matchLabels:
app: nginx-web
template:
metadata:
labels:
app: nginx-web
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Service
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx-web
ports:
- port: 80
targetPort: 80
type: ClusterIP
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
访问方式:
curl http://nginx-service
1
或者:
kubectl get svc
1
输出:
nginx-service ClusterIP 10.96.23.10
1
项目用途:
Java 微服务访问 Redis / MySQL / API 服务
例如:
spring.redis.host=redis-service
1
# 2. NodePort(节点端口暴露)
适合:
测试环境、内网项目
apiVersion: v1
kind: Service
metadata:
name: nginx-nodeport
spec:
selector:
app: nginx-web
ports:
- port: 80
targetPort: 80
nodePort: 30080
type: NodePort
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
访问:
http://10.10.1.11:30080
1
项目用途:
测试环境暴露前端页面
# 3. LoadBalancer(云环境)
适合:
阿里云 / AWS / 腾讯云
apiVersion: v1
kind: Service
metadata:
name: nginx-lb
spec:
selector:
app: nginx-web
ports:
- port: 80
targetPort: 80
type: LoadBalancer
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
云厂商会分配:
EXTERNAL-IP: 47.x.x.x
1
访问:
http://47.x.x.x
1
项目用途:
公网业务入口
# 三、Ingress 网络模式(七层代理入口)
这是生产最常见:
Ingress + ClusterIP Service
外部流量:
用户 -> Ingress -> Service -> Pod
1
# 实际项目示例:
# 1)部署 Service(ClusterIP)
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
ports:
- port: 80
targetPort: 8080
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 2)Ingress 配置
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
ingressClassName: nginx
rules:
- host: api.test.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-service
port:
number: 80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 3)DNS 解析:
api.test.com -> Ingress VIP
1
项目用途:
生产环境前端入口统一走 ingress-nginx
例如:
api.company.com
user.company.com
admin.company.com
1
2
3
2
3
统一由 Ingress 转发。
# 四、CNI 网络插件模式
生产中常用:
- Flannel
- Calico
- Cilium
# 1. Flannel
模式:
VXLAN
1
优点:
- 简单
- 易部署
缺点:
- 不支持 NetworkPolicy
适合:
小规模项目
# 2. Calico(生产最常用)
模式:
- BGP
- IPIP
- VXLAN
# 实际项目:Calico VXLAN
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
1
修改:
- name: CALICO_IPV4POOL_CIDR
value: "10.244.0.0/16"
- name: CALICO_IPV4POOL_VXLAN
value: "Always"
1
2
3
4
5
2
3
4
5
项目用途:
生产环境多节点通信 + NetworkPolicy
# NetworkPolicy 示例:
限制只允许 frontend 访问 backend:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-frontend
spec:
podSelector:
matchLabels:
app: backend
ingress:
- from:
- podSelector:
matchLabels:
app: frontend
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 五、企业生产常用架构(完整网络模式)
这是最常见生产模式:
Calico + ClusterIP + Ingress
1
网络链路:
用户请求
↓
SLB / F5
↓
Ingress Nginx
↓
ClusterIP Service
↓
Pod
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 实际生产示例:
# 入口:
api.company.com -> SLB
1
# Service:
type: ClusterIP
1
# Ingress:
host: api.company.com
1
# CNI:
Calico VXLAN
1
适用场景:
Java 微服务 / Python 服务 / 前后端分离系统
# 六、不同项目推荐网络模式
# 1. 开发环境
Flannel + NodePort
1
优点:
- 简单
- 快速部署
# 2. 测试环境
Calico + NodePort + Ingress
1
优点:
- 接近生产
# 3. 生产环境
Calico + ClusterIP + Ingress + SLB
1
优点:
- 稳定
- 可控
- 安全
上次更新: 2026/05/20, 10:08:38
|