web-dev-qa-db-ja.com

minikubeで港を公開

Minikubeでは、nodeportを使用してサービスを公開する方法は?

たとえば、次のコマンドを使用してkubernetesクラスターを起動し、次のようなポートを作成して公開します。

$ minikube start
$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
$ kubectl expose deployment hello-minikube --type=NodePort
$ curl $(minikube service hello-minikube --url)
CLIENT VALUES:
client_address=192.168.99.1
command=GET
real path=/ ....

ホストから公開されたサービスにアクセスする方法は? minikubeノードもこのポートを公開するように構成する必要があると思います。

26
KarateKid

サービスにアクセスできるURLを提供するminikube service <SERVICE_NAME> --urlコマンドについて既に知っているように思えるので、あなたが何を尋ねているのか正確にはわかりません。公開されたサービスを開くには、minikube service <SERVICE_NAME>コマンドを使用できます。

$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
deployment "hello-minikube" created
$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed
$ kubectl get svc
NAME             CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
hello-minikube   10.0.0.102   <nodes>       8080/TCP   7s
kubernetes       10.0.0.1     <none>        443/TCP    13m

$ minikube service hello-minikube
Opening kubernetes service default/hello-minikube in default browser...

このコマンドは、指定されたサービスをデフォルトのブラウザーで開きます。 minikubeサービスのドキュメントは次のとおりです。 https://github.com/kubernetes/minikube/blob/master/docs/minikube_service.md

ブラウザで開かれるサービスのURLを印刷するための--urlオプションもあります。

$ minikube service hello-minikube --url
http://192.168.99.100:31167
64
aaron-prindle

minikubeは192.168.99.100のようなもので実行されます。そのため、サービスを公開したNodePortでアクセスできるはずです。たとえば、NodePort30080であるとすると、192.168.99.100:30080としてサービスにアクセスできます。

Minikube IPを取得するには、コマンドminikube ipを実行します。

2017年9月14日更新:

Minikube v0.16.0で動作する小さな例を次に示します。

1)以下のコマンドを実行して、8080で実行されるnginxとそれに転送するNodePortsvcを作成します。

$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080
deployment "hello-minikube" created
$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed

2)svcが使用するノードポートを見つけます。

$ kubectl get svc hello-minikube
NAME             CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE
hello-minikube   10.0.0.76    <nodes>       8080:30341/TCP   4m

3)minikube IPを見つけます。

$ minikube ip
192.168.99.100

4)curlで話します:

$ curl 192.168.99.100:30341
CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
...
13
iamnat

MinikubeはnodeIP:nodePortではなくlocalhost:nodePort経由でアクセスを公開しているため、kubectlのポート転送機能を使用してこれを機能させることができます。たとえば、mongodbサービスを実行している場合:

kubectl port-forward svc/mongo 27017:27017

これにより、localhost:27017、FWIWでサービスが公開されます。さらに、これをバックグラウンドで実行する方法を理解することもできます。

2
Arun Reddy

接続を探している人へのメモは答えを拒否しました:あなたのminikubeが「192.168.99.100のようなもの」で動作しない場合は、おそらく「none」のような別のvm-driverで走ったでしょう。その場合、minikubeクラスターを削除し、デフォルトを使用して再構築します。それはうまくいくでしょう.........私はトンネルを機能させることができないようです...

0
SomeOne_1