Kubernetes 我是否可以在K8s DNS中添加服务名称别名,就像链接在Docker中具有别名一样?
在Docker中,客户端容器可以使用链接别名以不同的名称引用服务器容器:Kubernetes 我是否可以在K8s DNS中添加服务名称别名,就像链接在Docker中具有别名一样?,kubernetes,kube-dns,Kubernetes,Kube Dns,在Docker中,客户端容器可以使用链接别名以不同的名称引用服务器容器: --link server-container:my_preferred_server --link server_container 第二个客户端可以使用自己选择的名称 -- link server-container:server 我能在K8s中通过在K8s的DNS中添加不同的记录更好地实现这一点吗 注意我们现在使用的解决方案是,客户机容器不使用服务器容器的硬编码名称,而是使用env变量server_HOSTNA
--link server-container:my_preferred_server
--link server_container
第二个客户端可以使用自己选择的名称
-- link server-container:server
我能在K8s中通过在K8s的DNS中添加不同的记录更好地实现这一点吗
注意我们现在使用的解决方案是,客户机容器不使用服务器容器的硬编码名称,而是使用env变量server_HOSTNAME='server-container'的值,并且链接不带别名:
--link server-container:my_preferred_server
--link server_container
编辑:回答回复中的一些问题:*有多个客户机容器,否则别名就没有意义了。每个客户端通过不同的名称了解服务器
*客户端和服务器不在同一个pod中,有几种方法可以实现这一点
- 您只需为服务器容器创建一个服务(在其自己的Pod中),如果Pod位于同一Kubernetes集群中,则一个典型的服务,如果服务器容器位于Kubernetes之外,您可以使用
创建服务来定义端点的IPExternalIPs
- 如果这是并排部署(即1客户端1服务器),您可以考虑保持客户端和服务器处于相同的“强> POD < /强>定义:在单个POD中,客户端容器可以在其特定端口上通过<代码>本地主机< /代码>到达服务器容器。
- 您可以通过摆弄kube dns来注入任意dns名称(甚至覆盖公共dns名称),但您真的不必这样做
apiVersion: v1
kind: Service
metadata:
name: "my-alias"
spec:
type: ExternalName
externalName: "other-service.my-namespace.svc.cluster.local"
现在,我可以从集群和名称空间中访问
其他服务
作为我的别名
。需要相互通信的容器是否驻留在同一个pod上?您是否尝试添加另一个选择同一pod的不同名称的服务?另外,如果您熟悉kubernetes服务,并且有kube DNS设置,那么这些问题都不应该是您需要解决的。@Yaron differentpods@iamnat添加另一个服务将附带其自己的端口定义和容器的至少另一个实例,虽然我想要的只是名称别名。添加另一个服务不需要另一个实例,服务A只是注册POD,它们不会创建任何实例。