Като ОС и minikube vm-driver не беше споменат, предполагам, че е --vm-driver=virtualbox защото това е може би най-честият случай. Ако използвате нещо различно, трябва да коригирате това решение според вашата конфигурация.
Обяснение:
127.0.0.1 е localhost (lo0 ) IP адрес на интерфейса. Възлите, хостовете и модулите имат свои собствени локални интерфейси и не са свързани един с друг.
Вашият mysql-server работи на хост машината и не може да бъде достъпен чрез localhost (или това е диапазонът на IP) от вътрешността на minikube cluster pod или от вътрешността на minikube vm.
Решение:
-
Трябва да имате мрежа между minikube VM и хоста. NAT мрежата по подразбиране във Virtualbox не е добра за това, така че е по-добре да създадете друга мрежа само за хост. Нека създаваме допълнителна мрежа само за хост в потребителския интерфейс на Virtualbox с името
vmnet2и IP обхват192.168.77.1/24. Не е необходимо да активирате DHCP за тази мрежа. -
Трябва да конфигурирате mysql да слуша на интерфейса vmnet2 или ip
192.168.77.1който по подразбиране се използва за хост машината. Проверете дали е достъпен от хоста:
mysql -h 192.168.77.1 -u root -p
-
За да прикачите тази мрежа към minikube VM трябва да се използва ключът --host-only-cidr. Различен тип
vm-driverизползвайте различни Cli опции за тази цел. Проверетеminikube start --helpизход. И така, заvirtualboxще изглежда по следния начин: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Написах други най-често срещани опции за кли, само за удобство.
MinikubeVM ще получи следния IP адрес:
192.168.77.100(поне първия път. )Можете да го проверите с помощта наminikube sshи след товаifconfigкоманди. -
Последна част - трябва да създадем услуга и крайна точка за нея вътре в
minikubeклъстер:
kubectl apply -f mysql-service.yaml
Ето съдържанието на mysql-service.yaml файл:
---
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
- Сега можем да използваме
mysql-serviceиме и порт3306вътре във всяка капсула на този клъстер като точка на дестинация.