docker - 从 docker 容器中使用默认命名空间中的集群 IP 访问 k8s 服务
问题描述
我有一个使用 k8s 编排的服务器,它的服务如下所示
➜ installations ✗ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
oxd-server ClusterIP 10.96.124.25 <none> 8444/TCP,8443/TCP 3h32m
它是豆荚。
➜ helm git:(helm-rc1) ✗ kubectl get po
NAME READY STATUS RESTARTS AGE
sam-test-oxd-server-6b8f456cb6-5gwwd 1/1 Running 0 3h2m
现在,我有一个 docker 映像,其中包含一个env
需要此服务器 URL 的变量。
我从这里有 2 个问题。
docker镜像如何获取URL或访问URL?
如何在终端中访问相同的 URL,以便通过它发出一些 curl 命令?
我希望我的解释清楚。
解决方案
您可以使用
oxd-server
同一命名空间中任何其他 pod 的服务名称来访问它,即,如果该服务由提供 HTTPS 的 pod 支持,您可以在https://oxd-server:8443/
.如果要访问此服务的客户端 pod 位于不同的命名空间中,则可以使用
oxd-server.<namespace>
name。在您的情况下,这是oxd-server.default
因为您的服务位于默认命名空间中。要从集群外部(从您的终端)访问此服务以进行本地调试,您可以使用端口转发。
然后,您可以使用 URL
localhost:8443
发出任何请求,请求将被端口转发到服务。
kubectl port-forward svc/oxd-server 8443:8443
- 如果您想从集群外部访问此服务以进行生产使用,您可以将服务设置为
type: NodePort
或type: LoadBalancer
。在此处查看服务类型。
推荐阅读
- spring - 文件完全加载时制作 IntegrationFlowBuilder 进程文件
- amazon-web-services - 如何从 docker 容器内的主机工作站获取 aws 凭据
- excel - 科学记数法的QueryTables问题
- node.js - 错误:找不到模块'@angular-devkit/build-angular/package.json'
- java - 使用流检查除数检查数组
- react-native - 反应原生显示状态栏而不是全屏
- c++ - 为什么下面的代码会显示No output?
- html - 如何在 MS Access 中使用 VBA 在没有类、ID、仅标签名称输入的情况下单击 HTML 按钮
- angular - 使用 ngModel 将 MatRadioGroup 绑定到枚举
- unity3d - 未找到 UnityEngine.XR.WSA.WorldManager 命名空间,它现在位于何处?