我正在尝试将我的部署公开到一个端口,我可以通过 Minikube 通过本地计算机访问该端口。
我尝试了两种 YAML 配置(一种是负载均衡器,一种只是公开端口的服务)。 我:http://pastebin.com/gL5ZBZg7
apiVersion: v1
kind: Service
metadata:
name: bot
labels:
app: bot
spec:
type: LoadBalancer
ports:
- port: 8000
targetPort: 8000
protocol: TCP
selector:
app: bot
II:http://pastebin.com/sSuyhzC5
apiVersion: v1
kind: Service
metadata:
name: bot
labels:
app: bot
spec:
ports:
- port: 8000
targetPort: 8000
protocol: TCP
selector:
app: bot
部署和 docker 容器镜像都公开端口 8000,并且 Pod 带有 app:bot 标记。
第一个结果导致服务的端口永远不会完成,并且外部 IP 永远不会被分配。 第二个结果是我的仪表板中的 bot:8000 TCP、bot:0 TCP 端口,当我尝试“minikube service bot”时什么也没有发生。如果我输入“kubectl公开服务机器人”,也会发生同样的情况。
我使用的是 Mac OS X。
如何正确设置?
最佳答案
LoadBalancer
服务适用于云提供商,与 minikube 无关。
来自documentation :
On cloud providers which support external load balancers, setting the type field to "LoadBalancer" will provision a load balancer for your Service.
使用 NodePort
类型的 Service
(请参阅 documentation ),如 Networking part of the minikube documentation 中所述。是在 minikube 上公开服务的预期方式。
所以你的配置应该如下所示:
apiVersion: v1
kind: Service
metadata:
name: bot
labels:
app: bot
spec:
type: NodePort
ports:
- port: 8000
targetPort: 8000
nodePort: 30356
protocol: TCP
selector:
app: bot
并通过以下方式访问您的应用程序:
> IP=$(minikube ip)
> curl "http://$IP:30356"
希望有帮助。
关于用于在 Minikube 中部署的 Kubernetes 本地端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42588356/