如何通过在本地Docker-Kubernetes上运行的服务访问Kubernetes Pod

时间:2019-04-23 14:48:57

标签: docker kubernetes

我不确定如何访问在服务后面运行的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$ 

不确定pod标签<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:

有关/来自Vasily的更多信息:

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

1 个答案:

答案 0 :(得分:1)

@vailyangapov基本上是通过OP中的注释来回答这个问题的-这个回答分为两个部分。

  1. 我没有{@ {1}}在清单中所做的更改。我对我的服务yaml文件进行了一些更改,但没有推送这些更改。因此,我需要做apply

  2. 我的背景不正确。当前上下文指向一个测试的Azure Kubernetes服务。我以为一切都在Docker-CE随附的localhost群集上(称为kubectl apply -f myPod.yaml群集)。由于这是一台新机器,因此我无法通过Docker启用Kubernetes(这是安装Docker-CE之后的手动步骤..默认设置为未启用/未勾选)。手动注意到这一点后,我便勾选了启用Kubernetes和docker-for-desktop kubectl config use-context docker-for-desktop`的选项。

这两个错误都很简单。向他们提供答案的原因是希望能够帮助其他人使用此信息,以帮助他们在某些情况下无法正常工作-发生与我相似的问题。