2

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

目前,我被困在第 3 步:

minikube service hello-node

这应该公开一个 LoadBalancer 服务。

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

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

$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                       NAMES
b62c43ac3b2e        kindest/node:v1.17.0   "/usr/local/bin/entr…"   49 minutes ago      Up 49 minutes       127.0.0.1:32769->6443/tcp   kind-control-plane
$ kubectl cluster-info
Kubernetes master is running at https://127.0.0.1:32769
KubeDNS is running at https://127.0.0.1:32769/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

$ kubectl get services
NAME         TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
hello-node   LoadBalancer   10.96.65.157   <pending>     8080:31578/TCP   46m
kubernetes   ClusterIP      10.96.0.1      <none>        443/TCP          51m
4

1 回答 1

4

LoadBalancer类型服务内部创建NodePort。因此,您可以通过NodePort 在http://NODEIP:31578哪里访问它,正如您在. 为了得到你可以使用31578kubectl get serviceNODEIPkubectl get nodes -o wide

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

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

是有关如何通过善意的工作制作metallb的指南。

于 2020-09-11T16:21:14.030 回答