#networking #kubernetes #minikube
#сеть #kubernetes #мини-куб
Вопрос:
У меня запущен облачный экземпляр, я установил minikube
на него и создал кластер, единый Pod
с NodePort
сервисом.
Я знаю, что это не лучшая практика при настройке kubernetes
кластера
Проблема в том, что все работает нормально, если протестировано изнутри хост-машины (экземпляр cloud), но я пытаюсь связаться с кластером извне машины, используя его external-ip
адрес, как это сделать?
Развертывание: изображение является общедоступным, если вы хотите протестировать
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
Комментарии:
1. Вы создали правило брандмауэра для доступа к узловому порту извне? Пожалуйста, опубликуйте спецификацию вашего сервиса.
2. @KoopaKiller Да, я добавил правило, я уверен, что это не проблема
Ответ №1:
Проблема заключается в том, что minkube
создается VM
или docker container
для использования в качестве рабочего / узла. вот почему кластер по умолчанию недоступен извне машины.
Чтобы устранить эту проблему, используйте minikube
without drivers
следующим образом:
sudo minikube start --driver=none
Это заставит minikube
не создавать никаких VMs
или Containers
и напрямую использовать ресурсы хоста.
Кроме того, убедитесь, что на вашем deployment
компьютере все работает нормально, и вы сможете получить доступ к кластеру, используя external-ip
адрес и service
порт компьютера.
Узнайте больше здесь
PS: Это не настройка для производственных сред!
Ответ №2:
С помощью minikube вы должны предоставлять сервис также с помощью minikube.
Пример: minikube service yourservicename
[1]
Вы можете перечислить все свои службы minikube с помощью minikube service list
[1]https://kubernetes.io/docs/tutorials/hello-minikube/#create-a-service
Комментарии:
1. Я уже пытался использовать
LoadBalancer
сервис, и он застрял наpending
, и я не знаю, как подключить его к облакуLB
2. Вы запускали службу minikube yourservicename?