Foo*_*Foo 23 kubernetes kubernetes-service
我的本地 docker 桌面上有一个本地 kubernetes 集群。
这是我的 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>
Run Code Online (Sandbox Code Playgroud)
此服务指向具有 Web 应用程序的部署。
我的问题是如何找到此服务的网址?我已经尝试过 http://localhost:9111/ 并且没有用。
我确认此服务指向的 pod 已启动并正在运行。
P E*_*ram 51
服务的 URL 格式如下:
<service-name>.<namespace>.svc.cluster.local:<service-port>
Run Code Online (Sandbox Code Playgroud)
在你的情况下是:
helloworldsvc.test.svc.cluster.local:9111
Run Code Online (Sandbox Code Playgroud)
Nic*_*sen 11
url
当在同一个集群和同一个命名空间中时,以下变体对我有用(命名空间: default
;尽管当服务位于不同的命名空间时,除了第一个之外的所有变体都应该仍然有效):
http://helloworldsvc
http://helloworldsvc.default
http://helloworldsvc.default.svc
http://helloworldsvc.default.svc.cluster.local
http://helloworldsvc.default.svc.cluster.local:80
Run Code Online (Sandbox Code Playgroud)
//
using HttpClient client = new();
string result = await client.GetStringAsync(url);
Run Code Online (Sandbox Code Playgroud)
笔记:
HttpClient
80
显式设置端口即可工作。但我确实验证了所有这些都可以从网址中添加或删除http
仅(不是https
,除非您专门配置)helloworldsvc.svc.cluster.local:80
失败但有异常"Name or service not known (helloworldsvc.svc.cluster.local:80)"
获取服务名称: kubectl get service -n test
kubernetes 服务的 URL 是service-name.namespace.svc.cluster.local:service-port,其中cluster.local是 kubernetes 集群名称。
获取集群名称: kubectl config get-contexts | awk {'print $2'}
在您的情况下服务的URL将是helloworldsvc.test.svc.cluster.local:9111
您尝试使用的方式无法在您的本地主机上使用它,您需要在nodeport或使用port-forward或使用 kubectl proxy使服务可用。
但是,如果您不想使用节点端口并检查容器内部是否一切正常,请按照以下步骤进入容器(如果容器有外壳)。
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 内工作,而不能在您的 localhost 机器上工作。
在您的主机上访问 kubectl port-forward svc/helloworldsvc 80:9111 -n test
如果您正在使用minikube
,您可以运行下面的代码
minikube service --all
Run Code Online (Sandbox Code Playgroud)
针对特定服务
minikube service service-name --url
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29611 次 |
最近记录: |