通过 kubernetes 集群中的服务公开 kubernetes pod

asu*_*rem 2 docker kubernetes kind

我正在按照此处的教程(https://kubernetes.io/docs/tutorials/hello-minikube/)来测试 kubernetes 的本地开发设置。但是,我使用的是 kind,而不是 minikube。

\n

目前,我陷入了第3步:

\n
minikube service hello-node\n
Run Code Online (Sandbox Code Playgroud)\n

它应该公开 LoadBalancer 服务。

\n

但是,kind 似乎没有这样的命令,我想知道如何从教程中公开该服务。

\n

我的设置是带有 docker、kind 和 kubectl 的 WSL2 发行版。我当前的端口桥是:

\n
$ docker ps\nCONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                       NAMES\nb62c43ac3b2e        kindest/node:v1.17.0   "/usr/local/bin/entr\xe2\x80\xa6"   49 minutes ago      Up 49 minutes       127.0.0.1:32769->6443/tcp   kind-control-plane\n
Run Code Online (Sandbox Code Playgroud)\n
$ kubectl cluster-info\nKubernetes master is running at https://127.0.0.1:32769\nKubeDNS is running at https://127.0.0.1:32769/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy\n
Run Code Online (Sandbox Code Playgroud)\n

\n
$ kubectl get services\nNAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE\nhello-node   LoadBalancer   10.96.65.157   <pending>     8080:31578/TCP   46m\nkubernetes   ClusterIP      10.96.0.1      <none>        443/TCP          51m\n
Run Code Online (Sandbox Code Playgroud)\n

Arg*_*dhu 5

LoadBalancer类型服务内部创建NodePort. http://NODEIP:31578因此,您可以通过 NodePort 的位置来访问它31578,正如您在 的输出中看到的那样kubectl get service。为了让NODEIP你可以使用kubectl get nodes -o wide

如果你看一下它的输出,它minikube service hello-node有相同的NODEIPNODEPORT。不幸的是,没有类似的等效命令,因此您需要使用上述方法。

EXTERNAL-IP将待处理,因为本地集群中没有类似云(AWS、GCP、Azure)的实现。如果您确实想让LoadBalancer类型服务工作,您可以使用 Metallb 作为负载平衡器实现。通过这种方式,您将EXTERNAL-IP分配而不是pending使用该 IP 来访问 pod。

是有关如何通过善良的工作制作金属的指南。