k8s~ExternalName的使用

发布时间 2023-10-24 09:43:16作者: 张占岭

在Kubernetes中,Service资源的type字段有多种选项,其中之一是ExternalNameExternalName类型的服务用于将外部服务引入到Kubernetes集群中,通常会将外部服务的域名映射到Kubernetes集群中的一个DNS名称。

ExternalName服务类型不涉及端口映射或负载均衡。它只是一个DNS别名,将Kubernetes内部的服务名称映射到一个外部域名,而不更改端口号。这对于需要在Kubernetes集群内部引用外部服务的情况非常有用,但它不涉及端口的映射。

这是一个示例ExternalName服务的YAML配置:

apiVersion: v1
kind: Service
metadata:
  name: my-external-service
spec:
  type: ExternalName
  externalName: example.com  # 这里是外部域名

在这个示例中,my-external-service是一个ExternalName服务,它将example.com映射到Kubernetes集群中,但没有更改端口。你可以在Kubernetes内部使用my-external-service来访问example.com,但端口将保持不变。如果外部服务使用非标准端口,你可能需要在访问时明确指定端口号。

要支持域名和端口的形式,你需要考虑使用其他服务类型,例如NodePortLoadBalancer,它们可以通过端口映射和负载均衡来处理外部服务的访问。

解析到example.com的8080端口

如果外部服务的端口不是标准的80端口,你可以在Service配置中使用端口字段来指定端口号。以下是一个示例,演示如何指定非80端口的ExternalName服务:

apiVersion: v1
kind: Service
metadata:
  name: my-external-service
spec:
  type: ExternalName
  externalName: example.com  # 这里是外部域名
  ports:
    - name: http
      port: 8080  # 这里是外部服务的端口号