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

Kubernetes minikube-如何使用curl通过pod ip访问pod,kubernetes,minikube,Kubernetes,Minikube,我使用minikube创建本地kubernetes集群 我通过webapp rc.yaml文件创建ReplicationController apiVersion: v1 kind: ReplicationController metadata: name: webapp spec: replicas: 2 template: metadata: name: webapp labels: app: webapp spec:

我使用
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打印到标准输出:

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)来自服务器的空回复

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

我在一本书中找到了这个代码。但是本书没有给出执行此代码的
上下文

使用
minikube
,如何在主机中使用curl通过pod ip访问pod

更新1

我找到了一种使用kubectl代理的方法:

➜  ~ kubectl proxy
Starting to serve on 127.0.0.1:8001
然后我可以通过curl访问pod,如下所示:

curlhttp://localhost:8001/api/v1/namespaces/default/pods/webapp-jkdwz/proxy/

webapp jkdwz
可以通过命令
kubectl get pods-l app=webapp

更新2

  • minikube ssh
    -登录minikube虚拟机

  • 然后,我可以使用
    curl:
    ,因为我的例子是
    curl172.17.0.18:8080


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

    您可以使用以下设置pod的代理:

    kubectl port-forward [name of your pod] [pod port]
    
    此后,您可以(从另一个shell):


    另请参见:

    首先,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
    
    minikube是在虚拟机内执行的,因此curl 172.17.0.18:8080只能在该虚拟机内工作

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

    kubectl expose rc webapp --type=NodePort
    
    并使用以下命令获取URL:

    minikube service webapp --url
    
    如果需要查询特定pod,请使用:

    kubectl端口转发8080
    

    或者直接ssh到minikube的虚拟机并从那里查询。

    谢谢。我更改tomcat暴露默认端口<代码>端口转发
    工作正常。如何找到minikube的VM ip和端口,以便通过ssh连接到它?您已经找到了;)米尼库贝宋承宪
    minikube service webapp --url
    
    kubectl port-forward <POD NAME> 8080