首页 > 解决方案 > 如何从 Kubernetes 中的另一个命名空间访问服务

问题描述

我有下面的 zipkin 部署和服务,您可以看到 zipkin 位于监视命名空间下,我在每个在默认命名空间下运行的 pod 中有一个名为Zipkin_URL的 env 变量,这个变量采用这个 URL http://zipkin: 9411/api/v2/spans但由于 zipkin 在另一个命名空间中运行,我尝试了这个:

http://zipkin.monitoring.svc.cluster.local:9411/api/v2/spans

我也试过这种格式:

http://zipkin.monitoring:9411/api/v2/spans

但是当我检查我的豆荚的日志时,我看到连接被拒绝异常

当我执行到我的一个 pod 并尝试 curl http://zipkin.tools.svc.cluster.local:9411/api/v2/spans

它向我展示了强制参数缺失:serviceNameroot

这是 zipkin 资源:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: zipkin
  namespace: monitoring
spec:
  template:
    metadata:
      labels:
        app: zipkin
    spec:
      containers:
      - name: zipkin
        image: openzipkin/zipkin:2.19.3
        ports:
        - containerPort: 9411

---

apiVersion: v1
kind: Service
metadata:
  name: zipkin
  namespace: monitoring
spec:
  selector:
    app: zipkin
  ports:
    - name: http
      port: 9411
      protocol: TCP
  type: ClusterIP

标签: kuberneteskubernetes-service

解决方案


您所拥有的是正确的,您的问题可能不是 DNS。您可以通过仅进行 DNS 查找并将其与服务的 IP 进行比较来确认。


推荐阅读