Jako OS a minikube vm-driver nebyl zmíněn, předpokládám, že je to --vm-driver=virtualbox protože je to asi nejčastější případ. Pokud používáte něco jiného, musíte toto řešení upravit podle vaší konfigurace.
Vysvětlení:
127.0.0.1 je localhost (lo0 ) IP adresa rozhraní. Nody, Hosts a Pods mají svá vlastní rozhraní localhost a nejsou vzájemně propojeny.
Váš mysql-server běží na hostitelském počítači a nelze k němu přistupovat pomocí localhost (nebo je to rozsah IP) zevnitř klastrového modulu minikube nebo zevnitř minikube vm.
Řešení:
-
Měli byste mít síť mezi minikube VM a hostitelem. Výchozí síť NAT ve Virtualboxu na to není dobrá, takže je lepší vytvořit jinou síť pouze pro hostitele. Pojďme vytvořit další síť pouze pro hostitele v uživatelském rozhraní Virtualbox s názvem
vmnet2a rozsah IP192.168.77.1/24. Pro tuto síť nemusíte povolovat DHCP. -
Musíte nakonfigurovat mysql, aby naslouchal na rozhraní vmnet2 nebo ip
192.168.77.1který se standardně používá pro hostitelský počítač. Zkontrolujte, zda je přístupný z hostitele:
mysql -h 192.168.77.1 -u root -p
-
K připojení této sítě k virtuálnímu počítači minikube by měl být použit klíč --host-only-cidr. Jiný typ
vm-driverpro tento účel použijte různé možnosti cli. Zkontrolujteminikube start --helpvýstup. Tedy provirtualboxbude to vypadat následovně: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/24Napsal jsem další nejběžnější možnosti cli jen pro pohodlí.
MinikubeVM získá následující IP adresu:
192.168.77.100(alespoň poprvé. )Můžete to zkontrolovat pomocíminikube ssha potéifconfigpříkazy. -
Poslední část – potřebujeme pro ni vytvořit službu a koncový bod uvnitř
minikubecluster:
kubectl apply -f mysql-service.yaml
Zde je obsah mysql-service.yaml soubor:
---
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
- Nyní můžeme použít
mysql-servicenázev a port3306uvnitř libovolného modulu tohoto shluku jako cílový bod.