用于在 Minikube 中部署的 Kubernetes 本地端口

标签 kubernetes minikube

我正在尝试将我的部署公开到一个端口,我可以通过 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/

相关文章:

kubernetes - 为什么不遵守入口规则?而是到达默认后端

kubernetes - 如何将 Kubernetes 变量插入 ConfigMap YAML 文件中的 JSON 中?

kubernetes - 什么是 kubernetes 作业的用例?

go - Client-Go,如何监视 Kubernetes 中新创建的 Pod

kubernetes - 无法使用 Minikube 在 Windows Home 上的浏览​​器中访问 Kubernetes Ingress?

ssl - Kubernetes - Kubectl - 客户端数据的格式是什么?

sql - 部署期间添加辅助数据库数据

powershell - Powershell 中的运算符 <<<(shell)

linux - ubuntu 18 中 Minikube 32 位安装问题

docker - 尽管作为 VM 运行,Minikube Kubernetes 不允许在 Mac 上进入