Доступ к кластеру minkube извне хост-машины

#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?