web-dev-qa-db-ja.com

minikube-curlを使用してポッドIP経由でポッドにアクセスする方法

minikubeを使用してローカルのkubernetesクラスターを作成しています。

_webapp-rc.yaml_ファイルを使用してReplicationControllerを作成します。

_apiVersion: v1
kind: ReplicationController
metadata:
  name: webapp
spec:
  replicas: 2
  template: 
    metadata:
      name: webapp
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: Tomcat
        ports:
        - containerPort: 8080
_

そして、ポッドのIPをstdoutに出力します。

_kubectl get pods -l app=webapp -o yaml | grep podIP_

_podIP: 172.17.0.18
podIP: 172.17.0.1
_

curlを使用してポッドにアクセスしたい

_curl 172.17.0.18:8080_

しかし、標準出力は私に与えます:curl: (52) Empty reply from server

サービスを介してポッドのDockerコンテナーで自分のアプリケーションにアクセスできることを知っています。

本でこのコードを見つけます。しかし、この本はこのコードを実行するためのcontextを提供していません。

minikubeを使用して、ホストマシンでcurlを使用してポッドIP経由でポッドにアクセスする方法

更新1

_kubectl proxy_を使用して方法を見つけます:

_➜  ~ kubectl proxy
Starting to serve on 127.0.0.1:8001
_

そして、私はこのようにカールを介してポッドにアクセスできます:

_curl http://localhost:8001/api/v1/namespaces/default/pods/webapp-jkdwz/proxy/_

_webapp-jkdwz_はコマンド_kubectl get pods -l app=webapp_で見つけることができます

更新2

  1. _minikube ssh_-minikube VMにログイン

  2. そして、私は_curl <podIP>:<podPort>_を使用できます。私の場合は_curl 172.17.0.18:8080_です。

11
slideshowp2

まず、Tomcatイメージは80ではなくポート8080を公開するため、正しいYAMLは次のようになります。

apiVersion: v1
kind: ReplicationController
metadata:
  name: webapp
spec:
  replicas: 2
  template: 
    metadata:
      name: webapp
      labels:
        app: webapp
    spec:
      containers:
      - name: webapp
        image: Tomcat
        ports:
        - containerPort: 8080

minikubeは仮想マシン内で実行されるため、curl 172.17.0.18:8080はその仮想マシン内からのみ機能します。

アプリを公開するサービスをいつでも作成できます。

kubectl expose rc webapp --type=NodePort

次のコマンドを使用してURLを取得します。

minikube service webapp --url

特定のポッドをクエリする必要がある場合は、 ポート転送 を使用します。

kubectl port-forward <POD NAME> 8080

または、minikubeの仮想マシンにsshして、そこからクエリを実行します。

11
Ignacio Millán

そのコマンドは正しいですが、オーバーレイネットワークにアクセスできるマシンからのみ機能します。 (minikubeの場合、ホストマシンにはデフォルトでそれがありません)。

以下を使用して、ポッドへのプロキシを設定できます。

kubectl port-forward [name of your pod] [pod port]

その後、次のことができます(別のシェルから):

curl 127.0.0.1:port/path

参照: https://kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/#forward-a-local-port-to-a-port- on-the-pod

4
Janos Lenart