web-dev-qa-db-ja.com

Minikubeはローカルホストで実行されているMySQLをサービスとして公開します

マシンでminikubeバージョンv0.17.1を実行しています。 MySQLインスタンスがKubernetesクラスターの外部にあるAWSにある環境をシミュレートしたいと思います。

基本的に、自分のマシンで実行しているローカルMySQLインスタンスをminikube経由で実行しているKubernetesクラスターに公開するにはどうすればよいですか?

22
cgf

Kubernetesを使用すると、セレクタなしでサービスを作成できます。また、クラスタはこのサービスに関連するエンドポイントを作成しません。この機能は通常、レガシーコンポーネントまたは外部コンポーネントのプロキシに使用されます。

  1. セレクタなしでサービスを作成する

    apiVersion: v1
    kind: Service
    metadata:
        name: my-service
    spec:
        ports:
            - protocol: TCP
              port: 1443
              targetPort: <YOUR_MYSQL_PORT>
    
  2. 相対エンドポイントオブジェクトを作成する

    apiVersion: v1
    kind: Endpoints
    metadata:
        name: my-service
    subsets:
        - addresses:
            - ip: <YOUR_MYSQL_ADDR>
          ports:
            - port: <YOUR_MYSQL_PORT>
    
  3. サービスIPを取得する

    $ kubectl get svc my-service
    NAME         CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
    my-service   <SERVICE_IP>   <none>        1443/TCP    18m
    
  4. サービスからMYSQLにアクセスする<SERVICE_IP>:1443またはmy-service:1443

10
Crazykev

Windowsの場合は、ファイアウォールを開いてください。

0
sdj

オプション1-セレクタなしのヘッドレスサービスを使用します

このサービスにはセレクタがないため、対応するEndpointsオブジェクトは作成されません。サービスを独自の特定のエンドポイントに手動でマップできます( doc を参照)。

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  ports:
  - port: 80
    targetPort: 8080
---
kind: Endpoints
apiVersion: v1
metadata:
  name: my-service
subsets:
- addresses:
  - ip: 10.0.2.2
  ports:
  - port: 8080

オプション2- ExternalName serviceを使用します

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName: minikube.Host

唯一の注意点は、minikube.Hostを解決できる必要があることです。この行をetc/hostsファイルに追加するだけで実行できます。

10.0.2.2        minikube.Host

ExternalNameは現在、ポートマッピングをサポートしていません。


別のメモ:IP 10.0.2.2はVirtual Boxでのみ動作することがわかっています( [〜#〜] so [〜#〜] を参照)。 xhyveの場合は、192.168.99.1に置き換えてみてください(GitHub issue および issue を参照)。デモ GitHub

0
Yuchen Zhong

ローカルポートをMinikubeクラスターにマップする場合は、 Kubernetesのドキュメント に記載されているようにkubectl port-forwardを使用できます。

ここでは、同じポートでminikube ipのRedisサービスに127.0.0.1:6379をマッピングする例を示します。

kubectl port-forward svc/redis-master 6379:6379
0
a.barbieri