从主机外部访问 minikube 集群

Access minkube cluster from outside the host machine

我有一个云实例,运行,我在上面安装了 minikube 并创建了一个集群,单个 PodNodePort 服务。

我知道这不是设置 kubernetes 集群时的最佳做法

问题是: 如果从主机(云实例)内部进行测试,一切正常,但我试图使用它的 external-ip 地址从机器外部访问集群,该怎么做?

部署:镜像是public如果要测试

apiVersion: apps/v1
kind: Deployment
metadata:
  name: python-app-deployment
spec:
  template:
    metadata:
      labels:
        tag: pythonapp
    spec:
      containers:
        - name: pythonapp
          image: atefhares/mypythonapp:latest
          ports:
            - containerPort: 8000
          env:
            - name: ENVIRONMENT
              value: DEV
            - name: HOST
              value: "localhost"
            - name: PORT
              value: "8000"
            - name: REDIS_HOST
              value: "redis-service"
            - name: REDIS_PORT
              value: "6379"
            - name: REDIS_DB
              value: "0"
  replicas: 1
  selector:
    matchLabels:
      tag: pythonapp

服务:

apiVersion: v1
kind: Service
metadata:
  name: python-app-service
spec:
  type: NodePort
  ports:
    - nodePort: 30001
      port: 8000
  selector:
    tag: pythonapp

数据库部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  template:
    metadata:
      labels:
        name: redis
    spec:
      containers:
        - name: redis
          image: redis:latest
          ports:
            - containerPort: 6379
  selector:
      matchLabels:
        name: redis

数据库服务:

apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  ports:
  - port: 6379
    protocol: TCP
  selector:
    name: redis

使用 minikube,您还必须使用 minikube 公开服务。

示例: minikube service yourservicename[1]

您可以使用 minikube service list

列出您所有的 minikube 服务

[1]https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-service

问题是因为 minkube 创建了 VMdocker container 用作 worker/node。这就是默认情况下无法从计算机外部访问集群的原因。

要解决此问题,请使用 minikube 而不使用 drivers,如下所示:

sudo minikube start --driver=none

这将强制 minikube 不创建任何 VMsContainers 并将直接使用来自主机的资源。

此外,请确保您的 deployment 一切正常,您将能够使用计算机的 external-ip 地址和 service 端口访问集群。

了解更多here


PS: 这不是生产环境的设置!