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
vmnet2
a 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.1
který 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-driver
pro tento účel použijte různé možnosti cli. Zkontrolujteminikube start --help
výstup. Tedy provirtualbox
bude 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/24
Napsal 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 ssh
a potéifconfig
příkazy. -
Poslední část – potřebujeme pro ni vytvořit službu a koncový bod uvnitř
minikube
cluster:
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-service
název a port3306
uvnitř libovolného modulu tohoto shluku jako cílový bod.