如何使用 kubernetes NodePort 从外部访问服务?

2023-11-21

我使用以下配置设置了 NodePort 服务:

wordpress-service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: wordpress
  name: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: wordpress

这足以从外部访问该服务吗?如果可以,我现在如何访问该服务?我需要哪些详细信息 - 以及如何确定它们 - 例如节点 IP。


对于 GCE 上的 Kubernetes:

关于 NodePort 类型的服务,我们有同样的问题:我们如何从自己的主机访问节点端口服务?

@ivan.sim 的答案 (nodeIp:nodePort) 是正确的,但是,除非您在 VPC 网络控制台上添加防火墙入口(入站到谷歌云)流量规则以允许您的服务,否则您仍然无法访问您的服务主机能够访问您的计算节点

enter image description here the above rule is dangerous and should be used only during development

您可以使用 Google Cloud 控制台查找节点端口,也可以通过运行后续 kubectl 命令来查找运行包含容器的 pod 的节点。 IEkubectl get pods , kubectl describe pod your-pod-name, kubectl describe node node-that-runs-you-pod.status.addresses 有您的外部IP

如果我们能够仅使用 a 来提取在 pod 中运行容器的节点 IP,那就太好了label/selector和几行命令,这就是我们所做的,在本例中我们的选择器是app: your-label:

$ nodename=$(kubectl get pods -o jsonpath='{.items[?(@.metadata.labels.app=="your-label")].spec.nodeName}')

$ nodeIp=$(kubectl get nodes -o jsonpath='{.items[?(@.metadata.name=="'$(echo $nodename)'")].status.addresses[?(@.type=="ExternalIP")].address}')

$ echo nodeIp

notice:我们使用 json 路径来提取我们想要的信息,有关 json 路径的更多信息请参阅:json路径

您当然可以将其转换为一个脚本,该脚本将标签/选择器作为输入并输出运行容器的节点的外部 IP!

要获取节点端口,只需键入:

$ kubectl get services

在下面PORT(S)列中您将看到类似 targetPort:nodePort 的内容。这个节点端口就是你想要的。

nodeIp:nodePort
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 kubernetes NodePort 从外部访问服务? 的相关文章

随机推荐

  • 批处理文件:从目录读取文件名并存储在数组中

    我正在创建一个批处理文件 在其中需要列出指定文件夹的所有文本文件名 然后从数组中存储和检索相同的文本文件名 可以在批处理文件中吗 我当前列出测试文件的代码如下 dir txt b 任何帮助深表感谢 模拟阵列 字符串是批处理文件中唯一的变量类
  • paypal 沙箱无法处理请求

    我一直在工作和测试贝宝使用的沙箱系统 这很令人困惑 我创建了一些测试帐户 目前我已经从我的网站创建了一个表单 立即购买 按钮 它按其应有的方式工作
  • Celery:启动时启动任务

    我有一个任务需要在 Celery 启动时启动 接下来 该任务将通过回调 eta 每 5 分钟运行一次 我找到了一些关于它的线程 但似乎没有任何内容可以在 Celery 3 上工作 感谢您的帮助 阿诺 Celery 的 IRC 频道上的某人通
  • Javascript 与 jQuery:单击和双击同一元素,不同的效果,一个禁用另一个

    我有一个有趣的情况 我有一个表行 当前 当我单击 展开 按钮时 它显示它的隐藏对应项 包含展开按钮的原始 未隐藏 行在某个单元格中也有一些内容 单击该单元格后 这些内容将变为可编辑 我想摆脱扩展按钮 并通过双击行本身的任意位置来扩展行 包括
  • 为什么Oracle使用DBMS_STATS.GATHER_TABLE_STATS? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我找到了解释 Oracle 使用这些进行性能调整等的文档 但不太明白它实际上是做什么的
  • C# 与 VB.Net 中的命名空间引用

    在 VB Net 中 您可以执行类似以下操作而不会出现任何问题 只需忽略这是一个非常无用的类这一事实 Imports System Public Class Class1 Public Shared Function ArrayToList
  • 如何确定哪个依赖项导致 Google Play OpenSSL 警告?

    我目前正在开发一个大型遗留项目 并尝试修复 OpenSSL 漏洞问题 如下所述如何解决应用程序中的 OpenSSL 漏洞 问题是 有很多依赖项 有些是开源的 我更新了所有没有破坏兼容性的内容 作为 Gradle 导入添加 有些是由我工作的公
  • 使用 osxfs 的 mac docker 卷安装不起作用

    Docker Desktop for Mac 开始使用osxfs用于支持 MacOS 上的卷安装 根据他们的页面 这样的命令应该挂载 Desktopdocker 容器的目录 docker run it v Desktop Desktop r
  • Excel VBA 中 Mac 的睡眠等效项

    我想在 Excel 的 macOS VBA 编辑器中添加 500 毫秒的等待块 我知道 Application Wait Now TimeValue 0 00 01 可以 但是不能低于 1 秒 我也尝试过 sleep 命令 Public D
  • 如何在循环中从Python列表中删除项目? [复制]

    这个问题在这里已经有答案了 我尝试使用此代码从列表中删除项目 x ok jj uy poooo fren for item in x if len item 2 x remove item 为什么不是 fren 已经从 删除x 迭代列表时无
  • 当包含 windows.h 时,为什么 std::min 失败?

    include
  • DI 和单例模式在一个实现中

    我想使用 Windsor IOC DI 框架重构一些代码 但我的问题是我有一些 Singleton 类和 Factory 模式类 并且我不确定是否可以使用 DI 实现 Singleton 或 Factory 有谁有任何想法是否可能以及如何实
  • 将表导入 MySQL 时如何转义 CSV 值中的逗号?

    我正在尝试将 CSV 文件导入 MySQL 数据库表中 CSV 行如下所示 00602 42042 15590 0 0 0 35 9 67 1978 20608 21434 3 1 54700 11384 31 3 30 4 32 18 3
  • 为什么要对密码进行哈希处理,例如php的password_hash这么慢?

    我在用password hash用于密码加密 不过有一个奇怪的问题 password hash花费很长的时间 这是示例代码 这段代码将花费超过 1 秒的时间 这正常吗 结果是 1 08586
  • 数据库变更的持续集成

    我想对数据库变更实施持续集成 我想知道如何做到这一点以及作为 db CI 的一部分我们必须执行哪些活动 例如 创建 db 执行脚本 xx CI 詹金斯 数据库 SQL Server 我不想使用任何像 RedGate 这样的工具 让我知道您的
  • 如何优化 android Volley 中的网络队列接收? (凌空谷歌 IO 2013)

    下面是图像请求的 Volley 日志的快照 几乎一半的渲染时间是由于网络队列占用造成的 另一种情况甚至更高 大部分时间都在网络队列中 如何对其进行优化以使网络队列获取速度更快 什么决定了网络队列获取的速度 除了线程优先级之外 图像请求默认为
  • InvalidDeploymentException - 未设置应用程序标识

    我有一个引用 WPF 控件库的 WPF 应用程序 当我尝试启动 myWindow Show 控件库内的窗口时 出现以下异常 无效部署异常未设置应用程序标识 奇怪的是我是not正在做一个 ClickOnce 应用程序 那么为什么它会抱怨这个呢
  • 如何制作车辆沿路线从 A 到 B 移动的动画?

    下面是使用以下命令查找从 纽约世贸中心一号大楼 到 纽约市麦迪逊广场公园 的路线 旅行时间和旅行距离的示例osrmR 中的包 我从R 中的道路路由 此处的行程时间为 10 37 分钟 我想制作一个视频以进行可视化 问 如何创建车辆 由标记表
  • 为什么数字文字无法访问 Number 方法? [复制]

    这个问题在这里已经有答案了 如果您查看 ECMAScript 3 规范 您会发现原始值类型 Null 和 Undefined 没有伴随的 Null 和 Undefined 对象 gt gt Null ReferenceError Null
  • 如何使用 kubernetes NodePort 从外部访问服务?

    我使用以下配置设置了 NodePort 服务 wordpress service yaml apiVersion v1 kind Service metadata labels app wordpress name wordpress sp