Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy cập mysql chạy trên localhost từ minikube

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:

  1. 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 IP 192.168.77.1/24 . Bạn không cần bật DHCP cho mạng đó.

  2. 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 
  1. Để 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 tra minikube start --help đầu ra. Vì vậy, đối với virtualbox 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ụng minikube ssh và sau đó là ifconfig lệnh.

  2. 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
  1. Bây giờ chúng ta có thể sử dụng mysql-service tên và cổng 3306 bên trong bất kỳ nhóm nào của cụm này như một điểm đích.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. xây dựng ứng dụng dựa trên vai trò

  2. Làm cách nào để thực thi PHP được lưu trữ trong cơ sở dữ liệu MySQL?

  3. Cách thay thế khóa chính của Django bằng một số nguyên khác duy nhất cho bảng đó

  4. Lô mùa xuân với bí danh cột làm khóa sắp xếp - câu lệnh where không đúng định dạng

  5. MySQL - Thiết kế Supertype / Subtype