首页 > 解决方案 > 如何通过在 localhost 的 Docker-Kubernetes 上运行的服务访问 Kubernetes Pod

问题描述

我不确定如何访问在服务后面运行的 Pod。

我已经安装并运行了 Docker CE。有了这个,我运行了 Docker 'Kubernetes'。

我创建了一个 Pod 文件,然后kubectl created......然后使用端口转发来测试它是否正常工作。打钩!

接下来,我创建了一个作为 LoadBalancer 的服务,并且kubectl create它也在运行......但我不确定如何测试它/访问正在运行的 Pod。

这是终端输出:


Tests-MBP:k8s test$ kubectl get pods --show-labels
NAME          READY   STATUS    RESTARTS   AGE   LABELS
hornet-data   1/1     Running   0          4h    <none>

Tests-MBP:k8s test$ kubectl get services --show-labels
NAME             TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE   LABELS
hornet-data-lb   LoadBalancer   10.0.44.157   XX.XX.XX.XX    8080:32121/TCP   4h    <none>
kubernetes       ClusterIP      10.0.0.1      <none>         443/TCP          14d   component=apiserver,provider=kubernetes

Tests-MBP:k8s test$ 

不确定吊舱标签<none>是否有问题?我正在为服务选择器使用标签。

这是两个文件...

apiVersion: v1
kind: Pod
metadata:
  name: hornet-data
  labels:
    app: hornet-data
spec:
  containers:
    - image: ravendb/ravendb
      name: hornet-data
      ports:
        - containerPort: 8080

apiVersion: v1
kind: Service
metadata:
  name: hornet-data-lb
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      protocol: TCP
      targetPort: 8080
  selector:
    app: hornet-data

更新1:

根据@vasily 的要求:

Tests-MBP:k8s test$ kubectl get ep hornet-data-lb
NAME             ENDPOINTS   AGE
hornet-data-lb   <none>      5h

更新 2:

来自/来自瓦西里的更多信息:

Tests-MBP:k8s test$ kubectl apply -f hornet-data-pod.yaml 
pod/hornet-data configured

Tests-MBP:k8s test$ kubectl get pods --show-labels
NAME          READY   STATUS    RESTARTS   AGE   LABELS
hornet-data   1/1     Running   0          5h    app=hornet-data

Tests-MBP:k8s test$ kubectl get services --show-labels
NAME             TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE   LABELS
hornet-data-lb   LoadBalancer   10.0.44.157   XX.XX.XX.XX    8080:32121/TCP   5h    <none>
kubernetes       ClusterIP      10.0.0.1      <none>         443/TCP          14d   component=apiserver,provider=kubernetes

标签: dockerkubernetes

解决方案


@vailyangapov 基本上通过 OP 中的评论回答了这个问题——这个答案分为两部分。

  1. 我没有apply在清单中进行更改。我对我的服务 yaml 文件进行了一些更改,但没有推动这些更改。因此,我需要这样做kubectl apply -f myPod.yaml

  2. 我在错误的上下文中。当前上下文指向一个测试 Azure Kubernetes 服务。我认为这一切都在我的 Docker-CE 附带的 localhost 集群上(称为docker-for-desktop集群)。由于这是一台新机器,我无法使用 Docker 启用 Kubernetes(这是安装 Docker-CE 后的手动步骤......默认设置未启用/未勾选)。一旦我手动注意到这一点,我勾选了启用 Kubernetes 和docker-for-desktop) cluster was installed. Then I manually changed over to this context:kubectl config use-context docker-for-desktop 的选项。

这两个错误都很简单。为他们提供答案的原因是希望帮助其他人使用这些信息来帮助他们检查自己的设置,如果某些东西不能正常工作 - 正在发生与我类似的问题。


推荐阅读