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:
-
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
vmnet2i zakres IP192.168.77.1/24. Nie musisz włączać DHCP dla tej sieci. -
Musisz skonfigurować mysql do nasłuchiwania na interfejsie vmnet2 lub ip
192.168.77.1któ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
-
Aby podłączyć tę sieć do minikube VM, należy użyć klucza --host-only-cidr. Inny typ
vm-driverużyj w tym celu różnych opcji CLI. Sprawdźminikube start --helpwyjście. Tak więc dlavirtualboxbę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/24Napisał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 ssha następnieifconfigpoleceń. -
Ostatnia część - musimy stworzyć dla niej usługę i punkt końcowy w
minikubeklaster:
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
- Teraz możemy korzystać z
mysql-servicenazwa i port3306wewnątrz dowolnego zasobnika tego klastra jako punkt docelowy.