如何在kubernetes中找到服务的url?
How to find the url of a service in kubernetes?
我的本地 docker 桌面上有一个本地 kubernetes 集群。
这就是我执行 kubectl describe service
时我的 kubernetes 服务的样子
Name: helloworldsvc
Namespace: test
Labels: app=helloworldsvc
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"helloworldsvc"},"name":"helloworldsvc","namespace":"test...
Selector: app=helloworldapp
Type: ClusterIP
IP: 10.108.182.240
Port: http 9111/TCP
TargetPort: 80/TCP
Endpoints: 10.1.0.28:80
Session Affinity: None
Events: <none>
此服务指向带有 Web 应用程序的部署。
我的问题是如何找到此服务的 url?
我已经尝试过 http://localhost:9111/ 但没有用。
我验证了此服务指向的 pod 已启动并且 运行。
您创建的服务属于 ClusterIP 类型,只能从集群内部访问。您可以通过两种方式从桌面访问它:
创建一个nodeport类型的服务然后通过nodeip:nodeport
访问它
使用Kubectl port forward然后通过localhost:forwardedport
访问
URL 服务格式如下:
<service-name>.<namespace>.svc.cluster.local:<service-port>
你的情况是:
helloworldsvc.test.svc.cluster.local:9111
获取服务名称:kubectl get service -n test
URL 到 kubernetes 服务是 service-name.namespace.svc.cluster.local:service-port where cluster.local 是 kubernetes 集群名称。
获取集群名称:kubectl config get-contexts | awk {'print '}
URL 在您的情况下服务将是 helloworldsvc.test.svc.cluster.local:9111
您尝试使用的方法无法在您的本地主机上使用您需要在 nodeport or using port-forward or using kubectl proxy.
上提供该服务
但是,如果您不想使用节点端口并检查容器内部是否一切正常,请按照以下步骤进入容器(如果它有 shell。
kubectl exec -it container-name -n its-namespace-name sh
然后做一个
curl localhost:80
或 curl helloworldsvc.test.svc.cluster.local:9111
或 curl 10.1.0.28:80
但是这两个 curl 命令只能在 Kubernetes pod 中使用,而不能在您的本地主机上使用。
在您的主机上访问kubectl port-forward svc/helloworldsvc 80:9111 -n test
我的本地 docker 桌面上有一个本地 kubernetes 集群。
这就是我执行 kubectl describe service
Name: helloworldsvc
Namespace: test
Labels: app=helloworldsvc
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app":"helloworldsvc"},"name":"helloworldsvc","namespace":"test...
Selector: app=helloworldapp
Type: ClusterIP
IP: 10.108.182.240
Port: http 9111/TCP
TargetPort: 80/TCP
Endpoints: 10.1.0.28:80
Session Affinity: None
Events: <none>
此服务指向带有 Web 应用程序的部署。
我的问题是如何找到此服务的 url? 我已经尝试过 http://localhost:9111/ 但没有用。
我验证了此服务指向的 pod 已启动并且 运行。
您创建的服务属于 ClusterIP 类型,只能从集群内部访问。您可以通过两种方式从桌面访问它:
创建一个nodeport类型的服务然后通过
nodeip:nodeport
访问它
使用Kubectl port forward然后通过
localhost:forwardedport
访问
URL 服务格式如下:
<service-name>.<namespace>.svc.cluster.local:<service-port>
你的情况是:
helloworldsvc.test.svc.cluster.local:9111
获取服务名称:kubectl get service -n test
URL 到 kubernetes 服务是 service-name.namespace.svc.cluster.local:service-port where cluster.local 是 kubernetes 集群名称。
获取集群名称:kubectl config get-contexts | awk {'print '}
URL 在您的情况下服务将是 helloworldsvc.test.svc.cluster.local:9111
您尝试使用的方法无法在您的本地主机上使用您需要在 nodeport or using port-forward or using kubectl proxy.
上提供该服务但是,如果您不想使用节点端口并检查容器内部是否一切正常,请按照以下步骤进入容器(如果它有 shell。
kubectl exec -it container-name -n its-namespace-name sh
然后做一个
curl localhost:80
或 curl helloworldsvc.test.svc.cluster.local:9111
或 curl 10.1.0.28:80
但是这两个 curl 命令只能在 Kubernetes pod 中使用,而不能在您的本地主机上使用。
在您的主机上访问kubectl port-forward svc/helloworldsvc 80:9111 -n test