OSおよびminikubeとしてvm-driver
言及されていませんが、--vm-driver=virtualbox
だと思います おそらく最も一般的なケースだからです。別のものを使用する場合は、構成に応じてこのソリューションを調整する必要があります。
説明:
127.0.0.1
localhost
です (lo0
)インターフェースIPアドレス。ノード、ホスト、ポッドには独自のローカルホストインターフェイスがあり、相互に接続されていません。
mysql-server
はホストマシンで実行されており、localhost
を使用してアクセスすることはできません (またはIP範囲)minikubeクラスターポッド内またはminikubevm内から。
解決策:
-
minikubeVMとホストの間にネットワークが必要です。 VirtualboxのデフォルトのNATネットワークはそのためには適していないため、別のホストオンリーネットワークを作成することをお勧めします。 作成
vmnet2
という名前のVirtualboxUIの追加のホストオンリーネットワーク およびIP範囲192.168.77.1/24
。そのネットワークでDHCPを有効にする必要はありません。 -
インターフェイスvmnet2またはip
192.168.77.1
でリッスンするようにmysqlを設定する必要があります これはデフォルトでホストマシンに使用されます。ホストからアクセスできるかどうかを確認します:
mysql -h 192.168.77.1 -u root -p
-
このネットワークをminikubeVMに接続するには、--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
便宜上、他の最も一般的なCLIオプションを作成しました。
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
このクラスターの任意のポッド内を宛先ポイントとして使用します。