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このクラスターの任意のポッド内を宛先ポイントとして使用します。