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
vmnet2
dan 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.1
yang 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-driver
gunakan opsi cli yang berbeda untuk tujuan ini. Periksaminikube start --help
keluaran. Jadi, untukvirtualbox
akan 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/24
Saya 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 ssh
laluifconfig
perintah. -
Bagian terakhir - kita perlu membuat Service dan Endpoint untuknya di dalam
minikube
kelompok:
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-service
nama dan port3306
di dalam setiap pod dari cluster ini sebagai titik tujuan.