我正在这里的教程(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
答案 0 :(得分:2)
LoadBalancer
类型的服务在内部创建NodePort
。因此,您可以通过http://NODEIP:31578
访问它,其中31578
是NodePort,正如您在kubectl get service
的输出中看到的那样。要获取NODEIP
,您可以使用kubectl get nodes -o wide
如果您查看minikube service hello-node
的输出,则它具有相同的NODEIP
和NODEPORT
。不幸的是,没有同类的等效命令,因此您需要使用上述方法。
EXTERNAL-IP
将处于待处理状态,因为在本地同类群集中没有像实施这样的云(AWS,GCP,Azure)。如果您确实想使LoadBalancer
类型的服务正常工作,则可以使用metallb作为负载均衡器实现。这样,您将分配EXTERNAL-IP
而不是pending
,并且可以使用该IP来访问广告连播。
Here是有关如何使金属与实物一起工作的指南。