我可以在K8s DNS中添加服务名称别名,就像链接在Docker中可以拥有别名一样吗?

时间:2016-12-08 09:32:34

标签: kubernetes kube-dns

在Docker中,客户端容器可以使用链接别名来引用不同名称的服务器容器:

--link server-container:my_preferred_server

第二个客户可以使用自己的名称选择

-- link server-container:server

我可以在K8s中实现这一点,最好是在K8s的DNS中添加不同的记录吗?

注意我们现在使用的解决方案是让客户端容器不使用服务器容器的硬编码名称,但使用env变量SERVER_HOSTNAME ='server-container'的值并且不使用链接混叠:

--link server_container

编辑:回答回复中提到的一些问题:
*有多个客户端容器,否则别名没有任何意义。每个客户端通过不同的名称知道服务器 *客户端和服务器不在同一个窗格

2 个答案:

答案 0 :(得分:2)

有几种方法可以实现这一目标。

  • 如果 Pod 位于服务器容器中,您只需为服务器容器(在其自己的 Pod 中)创建服务相同的Kubernetes集群然后是典型的服务,如果服务器容器在Kubernetes之外,您可以使用ExternalIPs创建服务来定义端点的IP

  • 如果这是并行部署(即1个客户端< - > 1服务器),您可以考虑将客户端和服务器保持在相同的 Pod 定义中:单个Pod,客户端容器可以通过其特定端口上的localhost到达服务器容器。

  • 你可以使用kube-dns来注入任意dns名称(甚至覆盖公共名称),但你真的不需要这样做。

答案 1 :(得分:1)

我只是有同样的需求,我能够添加一个外部服务,它指向集群中其他服务的 FQDN:

apiVersion: v1
kind: Service
metadata:
  name: "my-alias"
spec:
  type: ExternalName
  externalName: "other-service.my-namespace.svc.cluster.local"

现在,我可以从集群和命名空间中以 other-service 的身份访问 my-alias