【问题标题】:K8s Deployment failed but End points workK8s 部署失败但端点工作
【发布时间】:2020-03-21 23:03:51
【问题描述】:

我正在玩 k8s 部署,更改服务、容器和入口的端口。我很想知道部署是如何工作的。

我的场景: 部署一个托管 2 个端点的 REST 服务应用程序。

案例一:

containerPort: 8081 - # 容器端口

port: 8081 #服务端口 目标端口:8081

Host1 端口:8081 #入口端口 主机2端口:8081

结果:使用竹管道成功部署。

案例 2: containerPort: 8080 - # 容器端口

port: 8080 #服务端口 目标端口:8081

Host1 端口:8081 #入口端口 主机2端口:8081 结果:在竹子中部署失败,但运行状况检查和所有端点工作正常。

案例3:

containerPort: 8080 - # 容器端口

port: 8080 #服务端口 目标端口:808

Host1 端口 : 8080 #入口端口 主机2端口:8080

结果:在竹子中部署不成功,这也是预期的,因为另一台主机也在同一集群中的 8080 中运行。

我真的不确定案例 2 失败的原因。 有人可以帮我吗?

【问题讨论】:

  • 您好,能否请您用一些code block 格式化问题,因为现在,它不是很容易阅读。您还可以提供更多信息和背景吗?请记住,我们不在您当前的项目中工作,因此我们不知道当前情况。

标签: kubernetes bamboo kubernetes-ingress kubernetes-deployment


【解决方案1】:

案例 2:

containerPort: 8080 - # 容器端口

port: 8080 #服务的端口targetPort: 8081

Host1 port : 8081 #port of the ingress Host2 port :8081

结果:在竹子中部署失败,但运行状况检查和 所有端点都工作正常。

我真的不确定案例 2 失败的原因。有人可以帮我吗?

如果您将Service 中的targetPort 设置为8081 并且您的容器公开的端口(您的Pod 正在侦听的端口)是8080,您不能期望它能够正常工作。这两个值一定很多。请参考k8s官方文档中的this文章。

【讨论】:

  • 对不起,为什么这两个值应该匹配?
  • 如果你想将一组Pods 暴露为Service,除了设置一个port: 它将被监听,你应该告诉它哪些端口是实际的Pods监听(container: 规范中定义为 containerPort: 的端口)。这是targetPort: 的功能。您使用它是为了让Service 知道它应该将其侦听的port: 映射到容器上的哪个端口。如果您没有任何Pods 暴露端口8081,您如何将任何内容映射到该端口?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2012-02-22
相关资源
最近更新 更多