minikube - 如何使用curl通过pod ip访问pod

sli*_*wp2 8 kubernetes minikube

minikube用来创建本地kubernetes集群.

ReplicationController通过webapp-rc.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
Run Code Online (Sandbox Code Playgroud)

并且,我将pods的ip打印到stdout:

kubectl get pods -l app=webapp -o yaml | grep podIP

podIP: 172.17.0.18
podIP: 172.17.0.1
Run Code Online (Sandbox Code Playgroud)

而且,我想访问pod使用 curl

curl 172.17.0.18:8080

但是,标准给了我: curl: (52) Empty reply from server

我知道我可以通过服务在pod中的docker容器中访问我的应用程序.

我在一本书中找到了这段代码.但是这本书没有给出context执行这段代码的权利.

使用minikube,如何使用主机上的curl通过pod ip访问pod?

更新1

我找到了一种方法kubectl proxy:

?  ~ kubectl proxy
Starting to serve on 127.0.0.1:8001
Run Code Online (Sandbox Code Playgroud)

然后我可以像curl一样通过curl访问pod:

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

Ign*_*lán 12

首先,tomcat图像暴露端口8080不是80,所以正确的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
Run Code Online (Sandbox Code Playgroud)

minikube在虚拟机内执行,因此curl 172.17.0.18:8080只能在该虚拟机内部运行.

您始终可以创建服务以公开您的应用:

kubectl expose rc webapp --type=NodePort
Run Code Online (Sandbox Code Playgroud)

并使用以下命令获取URL:

minikube service webapp --url
Run Code Online (Sandbox Code Playgroud)

如果需要查询特定的pod,请使用端口转发:

kubectl port-forward <POD NAME> 8080
Run Code Online (Sandbox Code Playgroud)

或者只是从那里进入minikube的虚拟机和查询.


Jan*_*art 9

该命令是正确的,但它只能在可以访问覆盖网络的机器上工作。(在 minikube 的情况下,主机默认没有)。

您可以使用以下命令为 Pod 设置代理:

kubectl port-forward [name of your pod] [pod port]
Run Code Online (Sandbox Code Playgroud)

此后您可以(从另一个外壳):

curl 127.0.0.1:port/path
Run Code Online (Sandbox Code Playgroud)

另请参阅:https : //kubernetes.io/docs/tasks/access-application-cluster/port-forward-access-application-cluster/#forward-a-local-port-to-a-port-on-the-荚