Là hệ điều hành và minikube vm-driver
không được đề cập, tôi cho rằng đó là --vm-driver=virtualbox
bởi vì nó có lẽ là trường hợp phổ biến nhất. Nếu bạn sử dụng thứ gì đó khác, bạn cần điều chỉnh giải pháp này theo cấu hình của mình.
Giải thích:
127.0.0.1
là một localhost
(lo0
) địa chỉ IP giao diện. Các nút, Máy chủ và Nhóm có giao diện máy chủ cục bộ riêng và chúng không được kết nối với nhau.
mysql-server
của bạn đang chạy trên máy chủ và không thể truy cập được bằng localhost
(hoặc đó là dải IP) từ bên trong một cụm minikube hoặc từ bên trong minikube vm.
Giải pháp:
-
Bạn nên có một mạng giữa máy ảo minikube và máy chủ. Mạng NAT mặc định trong Virtualbox không tốt cho điều đó, vì vậy tốt hơn nên tạo một mạng chỉ dành cho máy chủ lưu trữ khác. Hãy tạo mạng chỉ dành cho máy chủ bổ sung trong giao diện người dùng Virtualbox với tên
vmnet2
và dải IP192.168.77.1/24
. Bạn không cần bật DHCP cho mạng đó. -
Bạn phải cấu hình mysql để nghe trên giao diện vmnet2 hoặc ip
192.168.77.1
được sử dụng theo mặc định cho máy chủ. Kiểm tra xem nó có thể truy cập được từ máy chủ hay không:
mysql -h 192.168.77.1 -u root -p
-
Để gắn mạng này vào máy ảo minikube - nên sử dụng khóa máy chủ lưu trữ-chỉ-cidr. Loại
vm-driver
khác nhau sử dụng các tùy chọn cli khác nhau cho mục đích này. Kiểm traminikube start --help
đầu ra. Vì vậy, đối vớivirtualbox
nó sẽ giống như sau: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
Tôi đã viết các tùy chọn cli phổ biến nhất khác chỉ để thuận tiện.
MinikubeVM sẽ nhận được địa chỉ IP sau:
192.168.77.100
( ít nhất là lần đầu tiên. ) Bạn có thể kiểm tra nó bằng cách sử dụngminikube ssh
và sau đó làifconfig
lệnh. -
Phần cuối cùng - chúng ta cần tạo một Dịch vụ và Điểm cuối cho nó bên trong
minikube
cụm:
kubectl apply -f mysql-service.yaml
Đây là nội dung của mysql-service.yaml
tệp:
---
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
- Bây giờ chúng ta có thể sử dụng
mysql-service
tên và cổng3306
bên trong bất kỳ nhóm nào của cụm này như một điểm đích.