6

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

--link server-container:my_preferred_server

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

-- link server-container:server

我可以通过在 K8s 的 DNS 中添加不同的记录来在 K8s 中实现这一点吗?

请注意,我们现在使用的解决方案是让客户端容器不使用服务器容器的硬编码名称,而是使用环境变量 SERVER_HOSTNAME='server-container' 的值并在没有别名的情况下进行链接:

--link server_container

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

4

2 回答 2

4

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

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

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

于 2021-04-28T15:01:04.353 回答
2

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

  • 您可以简单地为服务器容器创建一个Service(在它自己的Pod中),如果Pod在同一个 Kubernetes 集群中,那么典型的Service就可以了,如果服务器容器在 Kubernetes 之外,您可以创建一个 ServiceExternalIPs来定义端点的 IP

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

  • 您可以使用 kube-dns 来注入任意 dns 名称(甚至覆盖公共名称),但您实际上不必这样做。

于 2016-12-08T12:23:25.590 回答