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