【问题标题】:Kubernetes: Outside endpoint as serviceKubernetes:外部端点即服务
【发布时间】:2020-04-06 11:07:14
【问题描述】:

在 Kubernetes 中,我们可以使用服务将内部部署公开为服务端点。但是,如何将外部域名映射到 Kubernetes 服务中,以便在外部服务之前调用内部服务?

【问题讨论】:

  • 您是在尝试将内部服务公开给外部,还是尝试将外部名称公开为内部服务?
  • 我需要消费外部服务。

标签: kubernetes


【解决方案1】:

ExternalName 类型的服务将服务映射到 DNS 名称,而不是典型的选择器,例如 my-service 或 cassandra。您可以使用 spec.externalName 参数指定这些服务。 例如,这个Service定义将prod命名空间中的my-serviceService映射到my.database.example.com

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: prod
spec:
  type: ExternalName
  externalName: my.database.example.com

注意:ExternalName 接受 IPv4 地址字符串,但作为由数字组成的 DNS 名称,而不是作为 IP 地址。类似于 IPv4 地址的 ExternalNames 不会由 CoreDNS 或 ingress-nginx 解析,因为 ExternalName 旨在指定规范的 DNS 名称。要对 IP 地址进行硬编码,请考虑使用无头服务。

https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-mapping-external-services

【讨论】:

  • EndPoint 和 ExternalName 有什么区别?
【解决方案2】:

您可以将外部名称公开为 Kubernetes 服务,以便集群中的 pod 可以访问该内部服务以与外部名称对话:

文档是:

https://kubernetes.io/docs/concepts/services-networking/service/#externalname

下面的方法会起作用:

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: ExternalName
  externalName: my.database.example.com

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2017-05-19
    • 2021-11-24
    相关资源
    最近更新 更多