Kubernetes 无法从minikube获取ClusterIP服务url
我已经根据下面的配置文件创建了一个ClusterIP服务,但是我似乎无法从minikube获取该服务的URLKubernetes 无法从minikube获取ClusterIP服务url,kubernetes,minikube,Kubernetes,Minikube,我已经根据下面的配置文件创建了一个ClusterIP服务,但是我似乎无法从minikube获取该服务的URL k create-f service-cluster-definition.yaml ➜ minikube服务myapp前端--url 要访问集群内部,请执行kubectl get svc以获取集群ip或直接使用服务名称。 要访问集群外部,可以使用NodePort作为服务类型 首先,让我们从以下方面澄清一些概念: ClusterIP:在群集内部IP上公开服务。 选择此值将使服务只能从集
k create-f service-cluster-definition.yaml
➜ minikube服务myapp前端--url
要访问集群内部,请执行kubectl get svc
以获取集群ip或直接使用服务名称。
要访问集群外部,可以使用NodePort作为服务类型 首先,让我们从以下方面澄清一些概念:
- ClusterIP:在群集内部IP上公开服务。
选择此值将使服务只能从集群内访问
- :在静态端口(NodePort)公开每个节点IP上的服务。
通过请求
NodeIP:NodePort
,您可以从集群外部联系NodePort服务
问题1:
user@minikube:~$ kubectl apply -f deployment-definition.yaml
deployment.apps/myapp-deployment created
user@minikube:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-deployment-59856c4487-7dw6x 1/1 Running 0 5m11s
myapp-deployment-59856c4487-th7ff 1/1 Running 0 5m11s
myapp-deployment-59856c4487-zvm5f 1/1 Running 0 5m11s
user@minikube:~$ kubectl apply -f service-cluster-definition.yaml
service/myapp-frontend created
user@minikube:~$ kubectl get service myapp-frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-frontend NodePort 10.101.156.113 <none> 80:32420/TCP 3m43s
user@minikube:~$ minikube service list
|-------------|----------------|-----------------------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|-------------|----------------|-----------------------------|-----|
| default | kubernetes | No node port | |
| default | myapp-frontend | http://192.168.39.219:32420 | |
| kube-system | kube-dns | No node port | |
|-------------|----------------|-----------------------------|-----|
user@minikube:~$ minikube service myapp-frontend --url
http://192.168.39.219:32420
user@minikube:~$ curl http://192.168.39.219:32420
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...{{output suppressed}}...
我已经根据下面的配置文件创建了一个ClusterIP服务,但是我似乎无法从minikube获取该服务的URL
- 由于Minikube是单个主机上的虚拟化环境,我们往往忘记集群与主机是隔离的。如果将服务设置为
ClusterIP
,Minikube将不提供外部访问
问题2:
user@minikube:~$ kubectl apply -f deployment-definition.yaml
deployment.apps/myapp-deployment created
user@minikube:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-deployment-59856c4487-7dw6x 1/1 Running 0 5m11s
myapp-deployment-59856c4487-th7ff 1/1 Running 0 5m11s
myapp-deployment-59856c4487-zvm5f 1/1 Running 0 5m11s
user@minikube:~$ kubectl apply -f service-cluster-definition.yaml
service/myapp-frontend created
user@minikube:~$ kubectl get service myapp-frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-frontend NodePort 10.101.156.113 <none> 80:32420/TCP 3m43s
user@minikube:~$ minikube service list
|-------------|----------------|-----------------------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|-------------|----------------|-----------------------------|-----|
| default | kubernetes | No node port | |
| default | myapp-frontend | http://192.168.39.219:32420 | |
| kube-system | kube-dns | No node port | |
|-------------|----------------|-----------------------------|-----|
user@minikube:~$ minikube service myapp-frontend --url
http://192.168.39.219:32420
user@minikube:~$ curl http://192.168.39.219:32420
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...{{output suppressed}}...
如果我试图将NodePort添加到service-cluster-definition.yaml的port部分,它会错误地抱怨这样的键已被弃用
- 也许你贴错了位置。您只需将
type:clusterport
字段替换为type:NodePort
。以下是您的yaml的正确形式:
apiVersion:v1
种类:服务
元数据:
名称:myapp前端
规格:
类型:节点端口
端口:
-目标港:80
港口:80
选择器:
应用程序:myapp
类型:etl
复制:
user@minikube:~$ kubectl apply -f deployment-definition.yaml
deployment.apps/myapp-deployment created
user@minikube:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-deployment-59856c4487-7dw6x 1/1 Running 0 5m11s
myapp-deployment-59856c4487-th7ff 1/1 Running 0 5m11s
myapp-deployment-59856c4487-zvm5f 1/1 Running 0 5m11s
user@minikube:~$ kubectl apply -f service-cluster-definition.yaml
service/myapp-frontend created
user@minikube:~$ kubectl get service myapp-frontend
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
myapp-frontend NodePort 10.101.156.113 <none> 80:32420/TCP 3m43s
user@minikube:~$ minikube service list
|-------------|----------------|-----------------------------|-----|
| NAMESPACE | NAME | TARGET PORT | URL |
|-------------|----------------|-----------------------------|-----|
| default | kubernetes | No node port | |
| default | myapp-frontend | http://192.168.39.219:32420 | |
| kube-system | kube-dns | No node port | |
|-------------|----------------|-----------------------------|-----|
user@minikube:~$ minikube service myapp-frontend --url
http://192.168.39.219:32420
user@minikube:~$ curl http://192.168.39.219:32420
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...{{output suppressed}}...
user@minikube:~$kubectl apply-f deployment-definition.yaml
deployment.apps/myapp-deployment已创建
user@minikube:~$kubectl获得豆荚
名称就绪状态重新启动
myapp-deployment-59856c4487-7dw6x 1/1运行0 5m11s
myapp-deployment-59856c4487-th7ff 1/1运行0 5m11s
myapp-deployment-59856c4487-zvm5f 1/1运行0 5m11s
user@minikube:~$kubectl apply-f service-cluster-definition.yaml
已创建服务/myapp前端
user@minikube:~$kubectl获取服务myapp前端
名称类型CLUSTER-IP外部IP端口年龄
myapp前端节点端口10.101.156.113 80:32420/TCP 3m43s
user@minikube:~$minikube服务列表
|-------------|----------------|-----------------------------|-----|
|名称空间|名称|目标端口| URL|
|-------------|----------------|-----------------------------|-----|
|默认| kubernetes |无节点端口||
|默认| myapp前端|http://192.168.39.219:32420 | |
|kube系统| kube dns |无节点端口||
|-------------|----------------|-----------------------------|-----|
user@minikube:~$minikube服务myapp前端--url
http://192.168.39.219:32420
user@minikube:~$curlhttp://192.168.39.219:32420
欢迎来到nginx!
…{{输出被抑制}}。。。
- 如您所见,当服务设置为
时,minikube开始使用NodePort
将连接路由到匹配的POD来为应用程序提供服务。MinikubeIP:NodePort
- 请注意,默认情况下将在30000:32767之间选择
如果您有任何问题,请在评论中告诉我。get svc返回my PORT(S)=80/TCP,并且我在为ClusterIP类型服务定义*(或获取)NodePort值时遇到问题。对于类型:NodePort-我没有问题,但是对于类型:ClusterIP,我是stuckThank@willrof,是的,我对NodePort类型服务没有问题,但是我无法让ClusterIP与minikube一起工作。谢谢你的回答!