Sebagai OS dan minikube vm-driver tidak disebutkan, saya menganggapnya --vm-driver=virtualbox karena itu mungkin kasus yang paling umum. Jika Anda menggunakan sesuatu yang berbeda, Anda perlu menyesuaikan solusi ini sesuai dengan konfigurasi Anda.
Penjelasan:
127.0.0.1 adalah localhost (lo0 ) alamat IP antarmuka. Node, Host, dan Pod memiliki antarmuka localhost sendiri dan tidak terhubung satu sama lain.
mysql-server Your Anda sedang berjalan di mesin Host dan tidak dapat diakses menggunakan localhost (atau rentang IP-nya) dari dalam pod cluster minikube atau dari dalam minikube vm.
Solusi:
-
Anda harus memiliki jaringan antara minikube VM dan host. Jaringan NAT default di Virtualbox tidak bagus untuk itu, jadi lebih baik buat jaringan khusus host lain. Mari membuat jaringan khusus host tambahan di UI Virtualbox dengan nama
vmnet2dan rentang IP192.168.77.1/24. Anda tidak perlu mengaktifkan DHCP untuk jaringan itu. -
Anda harus mengkonfigurasi mysql untuk mendengarkan pada antarmuka vmnet2 atau ip
192.168.77.1yang secara default digunakan untuk mesin host. Periksa apakah itu dapat diakses dari host:
mysql -h 192.168.77.1 -u root -p
-
Untuk melampirkan jaringan ini ke minikube VM --host-only-cidr key harus digunakan. Berbagai jenis
vm-drivergunakan opsi cli yang berbeda untuk tujuan ini. Periksaminikube start --helpkeluaran. Jadi, untukvirtualboxakan terlihat seperti berikut: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/24Saya menulis opsi cli paling umum lainnya hanya untuk kenyamanan.
MinikubeVM akan mendapatkan alamat IP berikut:
192.168.77.100(setidaknya pertama kali. )Anda dapat memeriksanya menggunakanminikube sshlaluifconfigperintah. -
Bagian terakhir - kita perlu membuat Service dan Endpoint untuknya di dalam
minikubekelompok:
kubectl apply -f mysql-service.yaml
Berikut adalah isi dari mysql-service.yaml berkas:
---
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
- Sekarang kita dapat menggunakan
mysql-servicenama dan port3306di dalam setiap pod dari cluster ini sebagai titik tujuan.