SRN*_*SRN 3 kubernetes kubernetes-pod
我在访问另一个命名空间中存在的服务时遇到问题。
我有 2 个命名空间(在同一集群中)airflow-dev 和 dask-dev。

在 dask-dev 命名空间中,我部署了 dask 集群(dask 调度程序和工作人员)。此外,还为 dask-scheduler pod 创建了一个服务(集群 IP)。我可以使用“kubectl port-forward”命令从 chrome 访问 dask-scheduler pod。
kubectl port-forward --namespace dask-dev svc/dask-dev-scheduler 5002:80
但是,我无法从airflow-dev命名空间中存在的pod(airflow-scheduler)访问服务(或dask-scheduler pod)。尝试使用以下命令访问它时出现“找不到主机或服务”错误
dask-dev-scheduler.dask-dev.svc.cluster.local:8786
以下是我为 dask-dev-scheduler 创建的服务。您能否让我知道如何从 airflow-dev 命名空间访问该服务。
apiVersion: v1
metadata:
name: dask-dev-scheduler
namespace: dask-dev
labels:
app: dask-dev
app.kubernetes.io/managed-by: Helm
chart: dask-dev-4.5.7
component: scheduler
heritage: Helm
release: dask-dev
annotations:
meta.helm.sh/release-name: dask-dev
meta.helm.sh/release-namespace: dask-dev
spec:
ports:
- name: dask-dev-scheduler
protocol: TCP
port: 8786
targetPort: 8786
- name: dask-dev-webui
protocol: TCP
port: 80
targetPort: 8787
selector:
app: dask-dev
component: scheduler
release: dask-dev
clusterIP: 10.0.249.111
type: ClusterIP
sessionAffinity: None
status:
loadBalancer: {}
[1]: https://i.stack.imgur.com/UrA7u.jpg
Run Code Online (Sandbox Code Playgroud)
您可以使用服务externalName Type来使用本地服务来引用外部服务(不同命名空间中的服务) 。
ExternalName服务没有选择器,也没有任何定义的端口或端点,因此,您可以使用ExternalName 服务将流量定向到外部服务。
apiVersion: v1
kind: Service
metadata:
name: service-b
namespace: namespace-b
spec:
selector:
app: my-app-b
ports:
- protocol: TCP
port: 3000
targetPort: 3000
Run Code Online (Sandbox Code Playgroud)
apiVersion: v1
kind: Service
metadata:
name: service-b-ref
namespace: namespace-a
spec:
type: ExternalName
externalName: service-b.namespace-b.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
namespace-a连接到的任何流量都service-b-ref:<port>将被路由到service-b( namespace-b) service-b.namespace-b.svc.cluster.local,因此,对 的调用service-b-ref:3000将路由到我们的服务-b。
在您的示例中,您只需要创建一个服务airflow-dev,将流量路由到dask-dev-scheduler命名dask-dev空间:
apiVersion: v1
kind: Service
metadata:
name: dask-dev-svc
namespace: airflow-dev
spec:
type: ExternalName
externalName: dask-dev-scheduler.dask-dev.svc.cluster.local
Run Code Online (Sandbox Code Playgroud)
因此,所有airflow-dev需要连接的资源dask-dev-scheduler都会调用:dask-dev-svc:8786
apiVersion: v1
metadata:
name: dask-dev-scheduler
namespace: dask-dev
spec:
ports:
- name: dask-dev-scheduler
protocol: TCP
port: 8786
targetPort: 8786
# ...
selector:
app: dask-dev
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12269 次 |
| 最近记录: |