【问题标题】:Pods not connecting with service having same labels -KubernetesPod 未与具有相同标签的服务连接 - Kubernetes
【发布时间】:2023-03-20 13:07:01
【问题描述】:

我创建了一个带有label:appenv 的pod 和一个带有appenv 选择器的节点端口类型的服务。但是当我使用kubectl get ep service-name 时,它显示“无端点”(表示服务未与该 pod 连接)。
这是我的pod.yamlservice.yaml

pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    app: appenv
spec:
  containers:
  - name: app
    image: aathith/lbt:v1
    ports:
    - name: app-port
      containerPort: 8082
  restartPolicy: Never


service.yaml

apiVersion: v1
kind: Service
metadata:
  name: app
spec:
  selector:
    app: appenv
  type: NodePort
  ports:
  - name: http
    port: 8082
    targetPort: 8082
    nodePort: 30082
    protocol: TCP

kubectl get po --show-labels 的输出

kubectl get svc 的输出

kubectl get svc app 的输出

  1. 为什么我的 pod 无法连接到此服务?
  2. 如何更改上述文件以相互连接?

【问题讨论】:

  • 您能否提供以下命令的输出:“kubectl get pod --show-labels”、“kubectl get svc”和“kubectl get svc app”。
  • @VasilyAngapov 更新了问题

标签: kubernetes label kubernetes-service


【解决方案1】:

您的 pod 处于“已完成”状态 - 这就是问题所在。它不处于“正在运行”状态。为什么?因为容器中的命令以 0 退出代码完成。在正常情况下,容器的运行命令不应退出,除非它是 Job 或 Cronjob。你明白我的意思吗?

【讨论】:

  • 有没有办法暴露一个完整的pod?? @vasily
  • 不,因为它没有运行。它完成了。你将如何暴露不再运行的东西?
  • 但该 pod 不应处于已完成状态。在手动停止之前,如何保持 pod 处于运行状态? @vasily
  • 我无法回答你,因为答案太大了。请详细了解 Docker 容器以及如何运行它们。
  • 您需要确保您的应用程序 pod 正在执行您期望的操作。为了让 pod 保持运行,它的主进程不能退出。仔细检查 dockerfile 中的 CMD 或 ENTRYPOINT,或者您可以在 pod 清单中覆盖它们。
猜你喜欢
  • 2020-08-04
  • 1970-01-01
  • 2018-09-03
  • 2022-06-16
  • 2016-04-28
  • 1970-01-01
  • 2020-05-16
  • 1970-01-01
  • 2019-11-17
相关资源
最近更新 更多