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

Få adgang til mysql, der kører på localhost fra minikube

Som OS og minikube vm-driver blev ikke nævnt, jeg antager, at det er --vm-driver=virtualbox fordi det nok er det mest almindelige tilfælde. Hvis du bruger noget andet, skal du justere denne løsning i henhold til din konfiguration.

Forklaring:

127.0.0.1 er en localhost (lo0 ) grænseflade IP-adresse. Noder, værter og pods har deres egne lokale værtsgrænseflader, og de er ikke forbundet med hinanden.

Din mysql-server kører på værtsmaskinen og kan ikke tilgås ved hjælp af localhost (eller det er IP-området) inde fra en minikube-klyngepod eller inde fra minikube vm.

Løsning:

  1. Du bør have et netværk mellem minikube VM og værten. Standard NAT-netværk i Virtualbox er ikke godt til det, så det er bedre at oprette et andet værtsnetværk. Lad os oprette ekstra værtsnetværk i Virtualbox UI med navnet vmnet2 og IP-område 192.168.77.1/24 . Du behøver ikke at aktivere DHCP for det netværk.

  2. Du skal konfigurere mysql til at lytte på grænsefladen vmnet2 eller ip 192.168.77.1 som som standard bruges til værtsmaskinen. Tjek, om det er tilgængeligt fra værten:

mysql -h 192.168.77.1 -u root -p 
 
  1. For at tilslutte dette netværk til minikube VM skal --host-only-cidr-nøgle bruges. Forskellig type vm-driver bruge forskellige cli-muligheder til dette formål. Tjek minikube start --help produktion. Altså for virtualbox det vil se sådan ud:

    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
     

    Jeg skrev andre mest almindelige cli-muligheder bare for nemheds skyld.

    MinikubeVM får følgende IP-adresse:192.168.77.100 (i hvert fald første gang. )Du kan tjekke det ved at bruge minikube ssh og derefter ifconfig kommandoer.

  2. Sidste del - vi skal oprette en Service og Endpoint for det inde i minikube klynge:

kubectl apply -f mysql-service.yaml
 

Her er indholdet af 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 bruge mysql-service navn og port 3306 inde i en hvilken som helst pod i denne klynge som et destinationspunkt.


  1. Formattering af data i Power BI Desktop-visualiseringer

  2. Postgres adgangskodegodkendelse mislykkes

  3. Er det muligt at dræbe en enkelt forespørgsel i oracle uden at dræbe sessionen?

  4. Generering af en tilfældig og unik streng på 8 tegn ved hjælp af MySQL