Kubernetes - 如何通过休息请求从 pod 中的 Web 服务器访问服务

Mar*_*ryo 1 kubernetes

我希望使用 Kubernetes DNS 从 pod 中重新请求 pod。一切都在我的 Kubernetes 集群中。

我想使用来自 Web 应用程序的 http 请求来调用另一个 Web 应用程序

例如,我想从 DashboardWebApp 调用 ProductWebApp

我找到了 kubernetes rest api

? ~ kubectl exec -it dashboard-57f598dd76-54s2x -- /bin/bash

? ~ curl -X GET https://4B3449144A41F5488D670E69D41222D.sk1.us-east-1.eks.amazonaws.com/api/v1/namespaces/staging/services/product-app/proxy/api/product/5bf42b20c616fc604"kind " :“状态”,“apiVersion”:“v1”,“元数据”:{

}, "status": "Failure", "message": "services \"product-app\" is forbidden: User \"system:anonymous\" cannot get services/proxy in the namespace \"staging\"", " reason": "Forbidden", "details": { "name": "product-app", "kind": "services" }, "code": 403 }%

我不明白为什么它是块

我也找到了这个网址
?~ curl -XGET product-app.staging.svc.cluster.local/api/product/5bf42b2ca5fc050616640dc6

但这也行不通

那么从 pod 调用 service 的好方法是什么?

api*_*sim 6

因为当两个ProductWebApp和DashboardWebApp都在运行相同的Kubernetes集群:

为您要使用服务调用的应用程序 (ProductWebApp)定义此处所述的type: ClusterIP服务;使用服务名称作为要调用的 URI 配置调用应用程序 (DashboardWebApp)。

例如,假设 ProductWebApp 位于名为 的命名空间中staging,定义product-app为 ProductWebApp 部署命名的服务,然后配置 DashboardWebApp 以在此 URI 处调用 ProductWebApp:

http://product-app.staging.svc.cluster.local/end/point/as/needed
Run Code Online (Sandbox Code Playgroud)

如果 ProductWebApp 端点需要,将 http 替换为 https。请注意,服务名称可以与服务所在的部署名称相同。

这在 Kubernetes 集群运行 DNS 服务时有效(大多数集群都这样做) - 请参阅此链接,特别是A 记录部分。