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ノードもこのポートを公開するように構成する必要があると思います。
サービスにアクセスできる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
minikubeは192.168.99.100
のようなもので実行されます。そのため、サービスを公開したNodePort
でアクセスできるはずです。たとえば、NodePort
が30080
であるとすると、192.168.99.100:30080
としてサービスにアクセスできます。
Minikube IPを取得するには、コマンドminikube ip
を実行します。
2017年9月14日更新:
Minikube v0.16.0
で動作する小さな例を次に示します。
1)以下のコマンドを実行して、8080で実行されるnginxとそれに転送するNodePort
svc
を作成します。
$ 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=/
...
MinikubeはnodeIP:nodePort
ではなくlocalhost:nodePort
経由でアクセスを公開しているため、kubectl
のポート転送機能を使用してこれを機能させることができます。たとえば、mongodbサービスを実行している場合:
kubectl port-forward svc/mongo 27017:27017
これにより、localhost:27017
、FWIWでサービスが公開されます。さらに、これをバックグラウンドで実行する方法を理解することもできます。
接続を探している人へのメモは答えを拒否しました:あなたのminikubeが「192.168.99.100のようなもの」で動作しない場合は、おそらく「none」のような別のvm-driverで走ったでしょう。その場合、minikubeクラスターを削除し、デフォルトを使用して再構築します。それはうまくいくでしょう.........私はトンネルを機能させることができないようです...