跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

K8s 集群外通过路由直连 Pod 实战

K8s Pod 默认处于虚拟子网需 NAT 转换,但可通过配置静态路由实现集群外直接访问。核心在于提取 Calico 隧道路由表中的 Pod 网段与节点网关,并在客户端机器上添加对应路由规则。完成配置后,可直接 Ping 或连接 Pod IP 进行验证。

kaikai发布于 2025/2/4更新于 2026/6/622 浏览
K8s 集群外通过路由直连 Pod 实战

K8s 集群外通过路由直连 Pod 实战

默认情况下,K8s 集群内的 Pod 运行在独立的虚拟子网中,访问外部流量通常经过 NAT 转换。若需从集群外部直接访问 Pod,常规做法是 NodePort、HostPort 或 LoadBalancer。不过,还有一种更底层的方式:通过静态路由直连。

原理与前提

假设你的集群使用 Calico 作为 CNI 组件,它会在节点上创建 tunl0 隧道接口用于容器间通信。我们可以通过查看节点的路由表,获取每个节点所划分的 Pod 网段及对应的网关(即节点 IP)。

首先登录到任意一个 K8s 节点,执行以下命令查看路由信息:

route -n | grep tunl0

输出示例如下,这里可以看到 Pod 网段、下一跳网关以及出口设备:

10.233.119.0    10.21.21.74    255.255.255.192 UG    0      0        0 tunl0
10.233.55.64    10.21.21.76    255.255.255.192 UG    0      0        0 tunl0
10.233.183.64   10.21.21.75    255.255.255.192 UG    0      0        0 tunl0

这些规则告诉系统:如果要访问 10.233.x.x 网段的地址,请将数据包转发给对应的节点 IP。

配置客户端路由

关键步骤是将这些路由规则添加到客户端机器或路由器上。这样,当你在外部发起请求时,系统就知道该把包发给哪个 K8s 节点。

以 Linux 客户端为例,添加路由的命令格式为:

route add -net <Pod 网段> netmask <掩码> gw <节点 IP>

根据上面的查询结果,我们可以执行类似以下的命令(请替换为你实际环境中的 IP):

route add -net 10.233.55.64 netmask 255.255.255.192 gw 10.21.21.76
route add -net 10.233.119.0 netmask 255.255.255.192 gw 10.21.21.74
route add -net 10.233.183.64 netmask 255.255.255.192 gw 10.21.21.75

Windows 客户端注意事项

如果在 Windows 环境下操作,命令略有不同,且需要加上 -p 参数以确保重启后路由依然生效:

route add -p <Pod 网段> mask <掩码> <节点 IP>

例如:

route add -p 10.233.97.128 mask 255.255.255.192 192.168.1.225
route add -p 10.233.75.0 mask 255.255.255.192 192.168.1.226

注意:Windows 下通常需要管理员权限才能执行此命令,且具体网段和网关 IP 需根据你的实际集群规划填写。

验证连通性

配置完成后,我们需要在 K8s 中部署一个测试服务来验证网络是否通畅。

创建一个简单的 Nginx Deployment:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
template:
  metadata:
    labels:
      app: nginx
spec:
  containers:
    - name: nginx
      image: nginx:latest
      imagePullPolicy: IfNotPresent
      resources:
        requests:
          cpu: 100m
          memory: 100Mi
      ports:
        - containerPort: 80
      volumeMounts:
        - name: timezone
          mountPath: /etc/localtime
  volumes:
    - name: timezone
      hostPath:
        path: /usr/share/zoneinfo/Asia/Shanghai

启动后,查看 Pod 的详细信息以获取其 IP:

kubectl get pod -o wide

假设输出显示 Pod IP 为 10.233.55.69,位于节点 10.21.21.76 上。此时,直接在客户端机器上 Ping 该 IP:

ping 10.233.55.69

如果路由配置正确,你将看到类似以下的成功响应:

PING 10.233.55.69 (10.233.55.69) 56(84) bytes of data.
64 bytes from 10.233.55.69: icmp_seq=1 ttl=63 time=0.442 ms
64 bytes from 10.233.55.69: icmp_seq=2 ttl=63 time=0.328 ms

至此,你已经成功实现了在集群外部通过 IP 直连 K8s Pod。这种方式省去了 Service 层级的开销,适合调试或特定低延迟场景,但请注意生产环境中需严格管控路由权限,避免安全风险。

目录

  1. K8s 集群外通过路由直连 Pod 实战
  2. 原理与前提
  3. 配置客户端路由
  4. Windows 客户端注意事项
  5. 验证连通性
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • AI 时代如何脱颖而出:商业认知与行动指南
  • 大模型应用优化:提示工程、RAG 与微调等 5 种方法
  • Nilearn Python 神经影像机器学习完整指南
  • yshopmall 开源电商 SaaS 解决方案解析
  • MySQL 常用函数实战:字符串、日期与聚合函数
  • Python 标准库与第三方库实战:日期处理与 Excel 操作
  • 大模型核心技术详解:架构、训练与微调
  • Linux 动静态库与 ELF 加载全解析:从制作到底层原理
  • 基于 FastAPI 的 Web 上位机系统设计与实现
  • Python 本地 AI 问答系统搭建:环境配置与 RAG 实践
  • Win11 系统下安装 WSL2 及 Ubuntu 环境配置指南
  • MySQL 主键与外键的区别及设计最佳实践
  • FPGA 基础概念与架构面试题详解
  • Transformer 核心原理与 PyTorch 代码实现详解
  • MySQL 数据误删恢复方案
  • 数据结构:单链表核心操作与分类解析
  • Python 基础教程:for 循环与 while 循环详解
  • CCF-CSP 40-3 图片解码题解:矩阵翻转与旋转
  • Agent 操控手机与电脑屏幕:技术综述与应用指南
  • LightGBM 模型部署:从训练到 Java 生产环境完整指南

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online