Mysql
 sql >> база данни >  >> RDS >> Mysql

Достъп до mysql, работещ на localhost от minikube

Като ОС и minikube vm-driver не беше споменат, предполагам, че е --vm-driver=virtualbox защото това е може би най-честият случай. Ако използвате нещо различно, трябва да коригирате това решение според вашата конфигурация.

Обяснение:

127.0.0.1 е localhost (lo0 ) IP адрес на интерфейса. Възлите, хостовете и модулите имат свои собствени локални интерфейси и не са свързани един с друг.

Вашият mysql-server работи на хост машината и не може да бъде достъпен чрез localhost (или това е диапазонът на IP) от вътрешността на minikube cluster pod или от вътрешността на minikube vm.

Решение:

  1. Трябва да имате мрежа между minikube VM и хоста. NAT мрежата по подразбиране във Virtualbox не е добра за това, така че е по-добре да създадете друга мрежа само за хост. Нека създаваме допълнителна мрежа само за хост в потребителския интерфейс на Virtualbox с името vmnet2 и IP обхват 192.168.77.1/24 . Не е необходимо да активирате DHCP за тази мрежа.

  2. Трябва да конфигурирате mysql да слуша на интерфейса vmnet2 или ip 192.168.77.1 който по подразбиране се използва за хост машината. Проверете дали е достъпен от хоста:

mysql -h 192.168.77.1 -u root -p 
  1. За да прикачите тази мрежа към minikube VM трябва да се използва ключът --host-only-cidr. Различен тип vm-driver използвайте различни Cli опции за тази цел. Проверете minikube start --help изход. И така, за virtualbox ще изглежда по следния начин:

    minikube start --cpus 2 \
                   --memory 2048 \
                   --disk-size 20g \
                   --vm-driver virtualbox \
                   --network-plugin flannel \
                   --kubernetes-version v1.12.2 \
                   --host-only-cidr 192.168.77.1/24
    

    Написах други най-често срещани опции за кли, само за удобство.

    MinikubeVM ще получи следния IP адрес:192.168.77.100 (поне първия път. )Можете да го проверите с помощта на minikube ssh и след това ifconfig команди.

  2. Последна част - трябва да създадем услуга и крайна точка за нея вътре в minikube клъстер:

kubectl apply -f mysql-service.yaml

Ето съдържанието на mysql-service.yaml файл:

---
apiVersion: v1
kind: Service
metadata:
   name: mysql-service
spec:
   type: ClusterIP
   ports:
   - protocol: TCP
     port: 3306
     targetPort: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mysql-service
subsets:
  - addresses:
      - ip: 192.168.77.1
    ports:
      - port: 3306
  1. Сега можем да използваме mysql-service име и порт 3306 вътре във всяка капсула на този клъстер като точка на дестинация.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django.core.exceptions.ImproperlyConfigured:Грешка при зареждане на модул MySQLdb:Няма модул с име MySQLdb

  2. Google Cloud Dataflow, дефиниран от потребителя MySQL източник

  3. Преобразуване на формата на датата в SQL? [дд.мм.гг до ГГГГ-ММ-ДД]

  4. MySQL подреждане по преди групиране по

  5. Как да разберете паролата за root на MySQL