sql >> Databasteknik >  >> RDS >> Mysql

Få åtkomst till mysql som körs på localhost från minikube

Som OS och minikube vm-driver nämndes inte, jag antar att det är --vm-driver=virtualbox eftersom det förmodligen är det vanligaste fallet. Om du använder något annat måste du justera denna lösning enligt din konfiguration.

Förklaring:

127.0.0.1 är en localhost (lo0 ) gränssnittets IP-adress. Noder, värdar och poddar har sina egna lokala värdgränssnitt och de är inte anslutna till varandra.

Din mysql-server körs på värddatorn och kan inte nås med localhost (eller det är IP-intervall) inifrån en minikube-klusterpod eller inifrån minikube vm.

Lösning:

  1. Du bör ha ett nätverk mellan minikube VM och värden. Standard NAT-nätverk i Virtualbox är inte bra för det, så det är bättre att skapa ett annat värdnätverk. Låt oss skapa ytterligare värdnätverk i Virtualbox UI med namnet vmnet2 och IP-intervall 192.168.77.1/24 . Du behöver inte aktivera DHCP för det nätverket.

  2. Du måste konfigurera mysql för att lyssna på gränssnittet vmnet2 eller ip 192.168.77.1 som som standard används för värddatorn. Kontrollera om det är tillgängligt från värden:

mysql -h 192.168.77.1 -u root -p 
  1. För att ansluta detta nätverk till minikube VM bör --host-only-cidr-nyckel användas. Annan typ av vm-driver använd olika cli-alternativ för detta ändamål. Kontrollera minikube start --help produktion. Så, för virtualbox det kommer att se ut så här:

    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
    

    Jag skrev andra vanligaste cli-alternativ bara för bekvämlighets skull.

    MinikubeVM kommer att få följande IP-adress:192.168.77.100 (åtminstone första gången. )Du kan kontrollera det med minikube ssh och sedan ifconfig kommandon.

  2. Sista delen - vi måste skapa en tjänst och slutpunkt för den i minikube kluster:

kubectl apply -f mysql-service.yaml

Här är innehållet i mysql-service.yaml fil:

---
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. Nu kan vi använda mysql-service namn och port 3306 inuti valfri pod i detta kluster som en destinationspunkt.


  1. Konvertera ett mySQL-datum till Javascript-datum

  2. 6 sätt att ta bort dubbletter av rader som har en primärnyckel i SQLite

  3. lägg till födelsedagshändelser i jQuerys fullständiga kalender varje år

  4. sluta infoga data i databasen när du uppdaterar sidan