蛮子哥 蛮子哥
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)

蛮子哥

业精于勤,荒于嬉
首页
  • linux
  • windows
  • 中间件
  • 监控
  • 网络
  • 存储
  • 安全
  • 防火墙
  • 数据库
  • 系统
  • docker
  • 运维工具
  • other
  • elk
  • K8S
  • ansible
  • Jenkins
  • GitLabCI_CD
  • 随笔
  • 面试
  • 工具
  • 收藏夹
  • Shell
  • python
  • golang
友链
  • 索引

    • 分类
    • 标签
    • 归档
    • 首页 (opens new window)
    • 关于我 (opens new window)
    • 图床 (opens new window)
    • 评论 (opens new window)
    • 导航栏 (opens new window)
周刊
GitHub (opens new window)
  • ansible系列文章

  • Kubernetes笔记

    • 安装篇-kubeadm
    • k8s入门
    • k8s安装篇二进制
    • k8s面试题
    • kubernetes(k8s)yaml文件详解
    • k8s报错小结
    • Kubernetes 安装配置ingress controller
    • cka考试真题
    • ingress配置证书
    • cka考试作业
    • k8s部署java项目
    • jenkins脚本式流水线部署k8s项目实例一
    • helm v3安装并创建例子
    • 使用helm将本地部署文件上传到harbor chart上
    • helm公共仓库创建
    • helm适应minio作为私有仓库
    • helm release使用说明
    • kubernetes核心概念
    • kubectl使用技巧
    • kubernetes卷的几种类型
    • kubernetes安全框架
    • 云原生-什么是HPA和PDB、VPA
    • k8s部署php项目示例
    • 配置kubeconfig 文件访问 Kubernetes 集群
    • configmap配置的几种方式
    • k8s配置go服务
    • k8s部署java项目
    • kubernetes部署prometheus监控
    • kubernetes部署elk日志系统
    • kubernetes环境devops流水线
    • kubernetes高阶技能必备的工具
    • deployment中使用configmap、secret的方式
    • 业务pod 飘移pending排查分析
    • debian 12安装kubernetes
    • istio入门
    • kubernetes证书续签到100年
    • kubernetes网络模式
      • 实际项目示例:
      • 安装 Flannel 网络插件
        • 1)初始化集群指定 Pod 网段
        • 2)安装 Flannel
        • 3)查看节点网络
        • 4)创建测试 Pod
      • 示例:部署 nginx + ClusterIP
        • Deployment
        • Service
      • 实际项目示例:
        • 1)部署 Service(ClusterIP)
        • 2)Ingress 配置
        • 3)DNS 解析:
      • 实际项目:Calico VXLAN
      • 实际生产示例:
        • 入口:
        • Service:
        • Ingress:
        • CNI:
      • 1. 开发环境
      • 2. 测试环境
      • 3. 生产环境
  • elk

  • jenkins

  • GitLabCI_CD

  • AI编程

  • 提示词

  • ArgoCD

  • 专题
  • Kubernetes笔记
蛮子哥
2025-05-19
目录

kubernetes网络模式

在 Kubernetes(你写的是 kuberbetes,应为 Kubernetes)里,“网络模式”一般分为以下几个层面:

  1. Pod 网络模式(容器网络模型)
  2. Service 网络模式(服务暴露方式)
  3. Ingress / Gateway 网络模式(七层入口流量)
  4. 网络插件模式(CNI 网络实现)
  5. 网络策略模式(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

# 安装 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)安装 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

部署:

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 常见网络模式:

  1. ClusterIP
  2. NodePort
  3. LoadBalancer
  4. 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

# 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

访问方式:

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

访问:

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

云厂商会分配:

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)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

# 3)DNS 解析:

api.test.com -> Ingress VIP
1

项目用途:

生产环境前端入口统一走 ingress-nginx

例如:

api.company.com
user.company.com
admin.company.com
1
2
3

统一由 Ingress 转发。



# 四、CNI 网络插件模式

生产中常用:

  1. Flannel
  2. Calico
  3. Cilium

# 1. Flannel

模式:

VXLAN
1

优点:

  • 简单
  • 易部署

缺点:

  • 不支持 NetworkPolicy

适合:

小规模项目



# 2. Calico(生产最常用)

模式:

  1. BGP
  2. IPIP
  3. 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

项目用途:

生产环境多节点通信 + 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


# 五、企业生产常用架构(完整网络模式)

这是最常见生产模式:

Calico + ClusterIP + Ingress
1

网络链路:

用户请求
   ↓
SLB / F5
   ↓
Ingress Nginx
   ↓
ClusterIP Service
   ↓
Pod
1
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

← kubernetes证书续签到100年 elk安装→

最近更新
01
kubernetes证书续签到100年
05-04
02
istio入门
04-29
03
ES故障排查命令
04-29
更多文章>
Theme by Vdoing | Copyright © 2019-2026 | 点击查看十年之约 | 鄂ICP备2024072800号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式