从主机外部访问 minikube 集群
Access minkube cluster from outside the host machine
我有一个云实例,运行,我在上面安装了 minikube
并创建了一个集群,单个 Pod
和 NodePort
服务。
我知道这不是设置 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
创建了 VM
或 docker container
用作 worker/node。这就是默认情况下无法从计算机外部访问集群的原因。
要解决此问题,请使用 minikube
而不使用 drivers
,如下所示:
sudo minikube start --driver=none
这将强制 minikube
不创建任何 VMs
或 Containers
并将直接使用来自主机的资源。
此外,请确保您的 deployment
一切正常,您将能够使用计算机的 external-ip
地址和 service
端口访问集群。
了解更多here
PS: 这不是生产环境的设置!
我有一个云实例,运行,我在上面安装了 minikube
并创建了一个集群,单个 Pod
和 NodePort
服务。
我知道这不是设置 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
[1]https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-service
问题是因为 minkube
创建了 VM
或 docker container
用作 worker/node。这就是默认情况下无法从计算机外部访问集群的原因。
要解决此问题,请使用 minikube
而不使用 drivers
,如下所示:
sudo minikube start --driver=none
这将强制 minikube
不创建任何 VMs
或 Containers
并将直接使用来自主机的资源。
此外,请确保您的 deployment
一切正常,您将能够使用计算机的 external-ip
地址和 service
端口访问集群。
了解更多here
PS: 这不是生产环境的设置!