Mysql
 sql >> Database >  >> RDS >> Mysql

Accedi a mysql in esecuzione su localhost da minikube

Come il sistema operativo e minikube vm-driver non è stato menzionato, presumo che sia --vm-driver=virtualbox perché è probabilmente il caso più comune. Se usi qualcosa di diverso devi adattare questa soluzione in base alla tua configurazione.

Spiegazione:

127.0.0.1 è un localhost (lo0 ) indirizzo IP dell'interfaccia. Nodi, host e pod hanno le proprie interfacce localhost e non sono collegati tra loro.

Il tuo mysql-server è in esecuzione sulla macchina Host e non può essere accessibile utilizzando il localhost (o è l'intervallo IP) dall'interno di un cluster pod minikube o dall'interno di minikube vm.

Soluzione:

  1. Dovresti avere una rete tra minikube VM e l'host. La rete NAT predefinita in Virtualbox non va bene per questo, quindi è meglio creare un'altra rete solo host. creiamo rete solo host aggiuntiva nell'interfaccia utente di Virtualbox con il nome vmnet2 e intervallo IP 192.168.77.1/24 . Non è necessario abilitare DHCP per quella rete.

  2. Devi configurare mysql per ascoltare sull'interfaccia vmnet2 o ip 192.168.77.1 che è utilizzato per impostazione predefinita per la macchina host. Controlla se è accessibile dall'host:

mysql -h 192.168.77.1 -u root -p 
  1. Per collegare questa rete a minikube VM è necessario utilizzare la chiave --host-only-cidr. Tipo diverso di vm-driver utilizzare diverse opzioni cli per questo scopo. Controlla il minikube start --help produzione. Quindi, per virtualbox sarà simile al seguente:

    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
    

    Ho scritto altre opzioni cli più comuni solo per comodità.

    MinikubeVM riceverà il seguente indirizzo IP:192.168.77.100 (almeno la prima volta. )Puoi verificarlo usando minikube ssh e poi ifconfig comandi.

  2. Ultima parte:dobbiamo creare un servizio e un endpoint all'interno del minikube gruppo:

kubectl apply -f mysql-service.yaml

Ecco un contenuto di mysql-service.yaml file:

---
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. Ora possiamo usare il mysql-service nome e porta 3306 all'interno di qualsiasi pod di questo cluster come punto di destinazione.