sql >> Database >  >> RDS >> Mysql

Toegang tot mysql op localhost vanuit minikube

Als het besturingssysteem en de minikube vm-driver niet werd genoemd, neem ik aan dat het --vm-driver=virtualbox . is omdat het waarschijnlijk het meest voorkomende geval is. Als u iets anders gebruikt, moet u deze oplossing aanpassen aan uw configuratie.

Uitleg:

127.0.0.1 is een localhost (lo0 ) interface IP-adres. Nodes, Hosts en Pods hebben hun eigen localhost-interfaces en zijn niet met elkaar verbonden.

Uw mysql-server draait op de hostmachine en is niet toegankelijk via de localhost (of het IP-bereik) vanuit een minikube-clusterpod of vanuit minikube vm.

Oplossing:

  1. U moet een netwerk hebben tussen minikube VM en de host. Het standaard NAT-netwerk in Virtualbox is daar niet goed voor, dus het is beter om een ​​ander host-only netwerk te maken. Laten we maken extra host-only netwerk in Virtualbox UI met de naam vmnet2 en IP-bereik 192.168.77.1/24 . U hoeft DHCP niet in te schakelen voor dat netwerk.

  2. U moet mysql configureren om te luisteren op de interface vmnet2 of ip 192.168.77.1 die standaard wordt gebruikt voor de hostcomputer. Controleer of het toegankelijk is vanaf de host:

mysql -h 192.168.77.1 -u root -p 
  1. Om dit netwerk aan minikube VM te koppelen, moet --host-only-cidr key worden gebruikt. Ander type vm-driver gebruik hiervoor verschillende cli-opties. Controleer de minikube start --help uitvoer. Dus voor virtualbox het ziet er als volgt uit:

    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
    

    Ik heb voor het gemak andere meest voorkomende cli-opties geschreven.

    MinikubeVM krijgt het volgende IP-adres:192.168.77.100 (tenminste de eerste keer. )Je kunt het controleren met minikube ssh en dan ifconfig commando's.

  2. Laatste deel - we moeten er een service en eindpunt voor maken in de minikube cluster:

kubectl apply -f mysql-service.yaml

Hier is de inhoud van de mysql-service.yaml bestand:

---
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 kunnen we de mysql-service . gebruiken naam en poort 3306 binnen een pod van dit cluster als een bestemmingspunt.


  1. PDF-bestanden maken met PLSQL in Oracle

  2. Directe toegang tot de serverdatabase via Ajax (zonder PHP of een ander tussenproduct)

  3. PHP/MySQL - De beste manier om een ​​unieke willekeurige string te maken?

  4. Hoe dynamisch een HTML-pagina genereren met PHP?