如何从清单文件(通常是清单文件与 kubectl 运行)使用 kubectl port-forward

2024-05-17

我正在尝试在本地使用 Kubernetes 运行我的第一个应用程序(或者我应该说 minikube)。

我有一个非常基本的 Web 服务器(一个本地 docker 镜像)和官方 mongodb(我想从 dockerhub 中提取)镜像。

我并不是想部署 mongodb 集群,只是让我的应用程序在本地运行的最低限度的东西将是一个很好的开始!

首先,我成功地单独运行我的网络服务器kubectl run <MY_APP> --image=<MY_IMAGE> --port 3030 --image-pull-policy=IfNotPresent, then kubectl port-forward <MY_POD> 3030:80它工作正常,我可以从 3030 端口访问该应用程序(该应用程序正在侦听并且容器公开端口 80)。

但我想将其转换为清单文件来描述我需要轻松运行的所有容器。

我的第一个问题是我找不到如何kubectl port-forward应该被翻译成清单文件。 我在想targetPort但我在尝试时遇到验证错误,看起来我们无法使用targetPort在 Pod 容器端口描述中。

我的第二个问题是,我不太确定我通过尝试仅通过描述 Pod 来运行该堆栈正在做什么。可能还需要其他部件,service我认为我的需要是可选的,我不确定deployment,但我见过一个endpoint善良,我可以忽略其他人......

我有点困惑,因为kubectl run似乎创建了一个 Pod、一个部署和一个副本集,我不确定是否必须从清单文件创建所有这些。

我只想在本地运行我的两个容器来处理代码并在每次进行更改时刷新它并测试它。

由于我对 Kubernetes 缺乏了解,所以我的问题有一些子问题,但基本上,我想知道如何翻译我的kubectl run <MY_APP>and kubectl port-forward <MY_POD> 3030:80到清单文件中,这样我就可以添加 mongodb 容器并使用单个启动整个堆栈kubectl create -f ./local.yaml命令行。

这是初稿:

apiVersion: v1
kind: Pod
metadata:
  name: my_app
spec:
  containers:
    - name: web-server
      image: my_app
      imagePullPolicy: IfNotPresent
      ports:
        - name: my_app
          containerPort: 3030
          targetPort: 80
          protocol: TCP
    - name: mongodb
      image: mongodb
      ports:
        - name: mongodb
          containerPort: 27017
          protocol: TCP

是的你是对的。您可以将您的应用程序公开为服务类型 节点端口 https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport(尽管文档中不是很清楚),并且您的服务的 yaml 将如下所示:

apiVersion: v1
kind: Service
metadata:
  name: app-service
spec:
  type: NodePort
  ports:
    - port: 3030
      targetPort: 80
  selector:
    app: app-server

您的部署的 yaml 将如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-server
  labels:
    app: app-server
spec:
  selector:
    matchLabels:
      app: app-server
  template:
    metadata:
      labels:
        app: app-server
    spec:
      containers:
      - name: web-server
        image: my_app
        ports:
        - containerPort: 80
      - name: mongodb
        image: mongodb
        ports:
        - containerPort: 27017

如您所见,我只暴露了您的网络服务器。现在,要从 Kubernetes 外部访问 Mongo,您还需要公开它。

您可以将应用程序部署为命令:

kubctl apply -f ./file_with_service.yaml ./file_with_deployment.yaml

您可以使用所有这些作为示例来开始,并阅读更多文档 https://kubernetes.io/docs/concepts/才能清楚地理解它。

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

如何从清单文件(通常是清单文件与 kubectl 运行)使用 kubectl port-forward 的相关文章

随机推荐

  • 如何在PIL中从ImageDraw中获取图像?

    我在我的项目中使用 PIL 并且有 ImageDraw 对象 我想获取在 ImageDraw 对象上绘制的图像 我如何获取图像 这是你想要的 from PIL import Image ImageDraw im Image new RGBA
  • 内核开发和 C++ [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 从我know https stackoverflow com questions 580292 what languages are windo
  • 如何在表格列标题处垂直旋转文本

    我用过这个数据表 http www datatables net 在我的网页上 这是fiddle http jsfiddle net fxju7 2 链接我放置代码的地方 我想要 第一个数字第二个数字列应该垂直旋转 我已经做到了 但是 问题
  • 为什么我使用google'smtp'无法发送电子邮件?

    我有以下程序使用 smtp gmail com 587 发送电子邮件 namespace TestMailServer class Program static void Main string args MailMessage mail
  • 哪些属性有助于运行时 .Net 性能?

    我正在寻找可用于通过向加载器 JIT 编译器或 ngen 提供提示来确保 Net 应用程序获得最佳运行时性能的属性 例如我们有可调试属性 http msdn microsoft com en us library k2wxda47 aspx
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • .NET-MVC - 通过 SSL 重写 URL + 某些 URL?

    我有一个运行 IIS 6 NET MVC 和单个域名的网络服务器 该网站使用 URL 重写来生成如下 URL 域名 com controller action 我愿意强行一 1 个控制器 to use SSL 其他的应该无需 SSL 即可工
  • OpenCSV:将嵌套 Bean 映射到 CSV 文件

    我正在尝试将 bean 映射到 CSV 文件 但问题是我的 bean 具有其他嵌套 bean 作为属性 所发生的情况是 OpenCSV 遍历属性找到一个 bean 然后进入其中并映射该 bean 内的所有数据 如果找到另一个 bean 它就
  • Android 中的 Google Places API - 适用于个人用户的 API_KEY

    我已经浏览了与在 Android 应用程序中使用 Places API 相关的 Android 文档和其他博客 到处都建议使用 API KEY 来调用 REST 服务 API KEY 在整个项目 应用程序中都是相同的 每天的请求数限制为 1
  • 企业发行版在 Swift 应用程序中与 iOS8 配合不佳

    我在使用 swift 应用程序在 iOS 8 设备上运行 Enterprise 版本时遇到问题 如果我使用非企业帐户进行代码签名 它似乎工作正常 有人遇到这个问题吗 以下是我在尝试使用企业帐户运行构建以进行协同设计时在 iOS 设备上收到的
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • Fluent NHibernate 日期时间 UTC

    我想创建一个流畅的 nhibernate 映射来通过以下方式映射 DateTime 字段 保存时 保存 UTC 值 读取时 调整为本地时区值 实现此映射的最佳方法是什么 就我个人而言 我会将日期存储在 UTC 格式的对象中 然后在读 写时在
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • stm32l0: 执行MI命令失败。使用 vFlashErase 数据包擦除闪存时出错

    我正在使用 Nucleo STM32L031 和 AC6 STM32 工作台 eclipse 我编写应用程序并进入调试模式 一切正常 直到我在应用程序中添加另一个功能 我注意到当我删除 评论 新函数 软件可以再次进入调试模式 但是当我添加
  • 从多个开发机器管理远程 docker 机器

    可以从另一个工作站管理使用 docker machine 命令从一个开发人员工作站创建的 docker 机器吗 我不是在寻找涉及 docker swarm 的解决方案 而只是寻找涉及 docker machine 的解决方案 据我了解 当
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • 在状态栏下方显示DialogFragment内容

    我试图显示高度和宽度均具有 match parent 的 DialogFragment 但碰巧在顶部 DialogFragment 显示在 StatusBar 下方 DialogFragment 正在应用一些默认值来填充底部 右侧 左侧和顶
  • 在 Delphi 或 C++ Builder 中使用 Chromium Edge WebView2 [重复]

    这个问题在这里已经有答案了 既然 Microsoft Chromium Edge 已经最终确定 是否可以在 Delphi 或 C Builder 中使用它 据我了解 它是基于WebView2成分 是否有一个组件 例如TWebView2或者E
  • 如何从清单文件(通常是清单文件与 kubectl 运行)使用 kubectl port-forward

    我正在尝试在本地使用 Kubernetes 运行我的第一个应用程序 或者我应该说 minikube 我有一个非常基本的 Web 服务器 一个本地 docker 镜像 和官方 mongodb 我想从 dockerhub 中提取 镜像 我并不是