gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:27:35 25 4
gpt4 key购买 nike

我用 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

并且,我将 pod 的 ip 打印到标准输出:
kubectl get pods -l app=webapp -o yaml | grep podIP
podIP: 172.17.0.18
podIP: 172.17.0.1

并且,我想使用 curl 访问 pod
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

然后我可以像这样通过 curl 访问 pod:
curl http://localhost:8001/api/v1/namespaces/default/pods/webapp-jkdwz/proxy/ webapp-jkdwz可以通过命令 kubectl get pods -l app=webapp找到

更新 2
  • minikube ssh - 登录 minikube VM
  • 然后,我可以使用 curl <podIP>:<podPort> ,就我而言是 curl 172.17.0.18:8080
  • 最佳答案

    首先,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,请使用 port forwarding :
    kubectl port-forward <POD NAME> 8080

    或者只是通过 ssh 进入 minikube 的虚拟机并从那里查询。

    关于kubernetes - minikube - 如何使用 curl 通过 pod ip 访问 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564446/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com