通过 kind kubernetes 集群中的服务公开 kubernetes pod
Exposing a kubernetes pod via service in kind kubernetes cluster
我正在按照此处的教程 (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
LoadBalancer
类型服务在内部创建 NodePort
。因此,您可以通过 http://NODEIP:31578
访问它,其中 31578
是您在 kubectl get service
的输出中看到的 NodePort。要获得 NODEIP
,您可以使用 kubectl get nodes -o wide
如果您查看 minikube service hello-node
的输出,它具有相同的 NODEIP
和 NODEPORT
。不幸的是,没有同类的等效命令,因此您需要使用上述方法。
EXTERNAL-IP
将待定,因为在本地类集群中没有类似云(AWS、GCP、Azure)的实现。如果你真的想让 LoadBalancer
类型的服务工作,你可以使用 metallb 作为负载均衡器的实现。通过这种方式,您将分配 EXTERNAL-IP
而不是 pending
,并且您可以使用该 IP 访问 pod。
Here 是一个关于如何用善意的工作制作 metallb 的指南。
我正在按照此处的教程 (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
LoadBalancer
类型服务在内部创建 NodePort
。因此,您可以通过 http://NODEIP:31578
访问它,其中 31578
是您在 kubectl get service
的输出中看到的 NodePort。要获得 NODEIP
,您可以使用 kubectl get nodes -o wide
如果您查看 minikube service hello-node
的输出,它具有相同的 NODEIP
和 NODEPORT
。不幸的是,没有同类的等效命令,因此您需要使用上述方法。
EXTERNAL-IP
将待定,因为在本地类集群中没有类似云(AWS、GCP、Azure)的实现。如果你真的想让 LoadBalancer
类型的服务工作,你可以使用 metallb 作为负载均衡器的实现。通过这种方式,您将分配 EXTERNAL-IP
而不是 pending
,并且您可以使用该 IP 访问 pod。
Here 是一个关于如何用善意的工作制作 metallb 的指南。