Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Uzyskaj dostęp do mysql działającego na lokalnym hoście z minikube

Jako system operacyjny i minikube vm-driver nie było wspomniane, zakładam, że jest to --vm-driver=virtualbox bo to chyba najczęstszy przypadek. Jeśli używasz czegoś innego, musisz dostosować to rozwiązanie do swojej konfiguracji.

Wyjaśnienie:

127.0.0.1 jest localhost (lo0 ) adres IP interfejsu. Węzły, hosty i pody mają własne interfejsy hosta lokalnego i nie są ze sobą połączone.

Twój mysql-server działa na komputerze hosta i nie może być dostępny za pomocą localhost (lub jego zakres adresów IP) z wnętrza klastra minikube lub z wnętrza minikube vm.

Rozwiązanie:

  1. Powinna istnieć sieć między maszyną wirtualną minikube a hostem. Domyślna sieć NAT w Virtualbox nie jest do tego dobra, więc lepiej jest utworzyć inną sieć tylko dla hosta. Zróbmy utworzyć dodatkowa sieć host-only w Virtualbox UI o nazwie vmnet2 i zakres IP 192.168.77.1/24 . Nie musisz włączać DHCP dla tej sieci.

  2. Musisz skonfigurować mysql do nasłuchiwania na interfejsie vmnet2 lub ip 192.168.77.1 który jest domyślnie używany przez maszynę hosta. Sprawdź, czy jest dostępny z hosta:

mysql -h 192.168.77.1 -u root -p 
  1. Aby podłączyć tę sieć do minikube VM, należy użyć klucza --host-only-cidr. Inny typ vm-driver użyj w tym celu różnych opcji CLI. Sprawdź minikube start --help wyjście. Tak więc dla virtualbox będzie wyglądać następująco:

    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
    

    Napisałem inne najczęstsze opcje CLI tylko dla wygody.

    MinikubeVM otrzyma następujący adres IP:192.168.77.100 (przynajmniej za pierwszym razem. )Możesz to sprawdzić za pomocą minikube ssh a następnie ifconfig poleceń.

  2. Ostatnia część - musimy stworzyć dla niej usługę i punkt końcowy w minikube klaster:

kubectl apply -f mysql-service.yaml

Oto zawartość pliku mysql-service.yaml plik:

---
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. Teraz możemy korzystać z mysql-service nazwa i port 3306 wewnątrz dowolnego zasobnika tego klastra jako punkt docelowy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj tylko rekordy utworzone dzisiaj w laravel

  2. Scalanie 3 tabel/zapytań za pomocą MS Access Union Query

  3. Zapytanie Mysql do dynamicznej konwersji wierszy na kolumny

  4. Dynamiczne zapytanie mysql w procedurze składowanej

  5. Jak wyświetlić wiele skumulowanych kolumn dla każdego zakresu dat na skumulowanym pasku?