kubernetes - Kubernetes - 如何通过休息请求从 pod 中的 Web 服务器访问服务
问题描述
我希望使用 Kubernetes DNS 从 pod 中重新获取 pod。一切都在我的 Kubernetes 集群中。
我想使用来自网络应用程序的 http 请求来调用另一个网络应用程序
例如,我想从 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/5bf42b2ca5fc050616640dc6 {“种类“:“状态”,“apiVersion”:“v1”,“元数据”:{
}, "status": "Failure", "message": "services \"product-app\" 被禁止:用户 \"system:anonymous\" 无法在命名空间 \"staging\"" 中获取服务/代理,"原因”:“禁止”,“详细信息”:{“名称”:“产品应用程序”,“种类”:“服务”},“代码”:403 }%
我不明白为什么它被阻止
我还找到了这个 url
➜ ~ curl -XGET product-app.staging.svc.cluster.local/api/product/5bf42b2ca5fc050616640dc6
但这也行不通
那么从 pod 调用到 service 的好方法是什么?
解决方案
当ProductWebApp 和 DashboardWebApp 在同一个 Kubernetes 集群上运行时:
为您要使用服务调用的应用程序 (ProductWebApp)定义一个服务,如此处所述type: ClusterIP
;使用服务名称作为要调用的 URI 配置调用应用程序 (DashboardWebApp)。
例如,假设 ProductWebApp 位于名为 的命名空间中staging
,为 ProductWebApp 部署定义一个名为的服务product-app
,然后将 DashboardWebApp 配置为在此 URI 处调用 ProductWebApp:
http://product-app.staging.svc.cluster.local/end/point/as/needed
如果 ProductWebApp 端点需要,请将 http 替换为 https。请注意,服务名称可以与服务所在的部署的名称相同。
推荐阅读
- node.js - 如何在 React 中重定向到另一个视图
- aws-cli - 无法通过 aws cli 向 Patch Group 注册 Patch baselineid
- python - 使布局小部件浮动在主窗口pyqt5之外
- python-3.x - 从文本文件创建列表列表,其中新列表基于条件
- python - 最小化成本
- image - 如何计算 Keras UpSampling2D 层的输出?
- python-3.x - user.is_authenticated DetailView 为 True
- python - 使用 selenium 进行动态网页抓取
- javascript - 单击搜索结果时,App.vue 中未打开弹出窗口
- sql - 如何在oracle中获取物化视图的大小?