Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 我是否可以在K8s DNS中添加服务名称别名,就像链接在Docker中具有别名一样?_Kubernetes_Kube Dns - Fatal编程技术网

Kubernetes 我是否可以在K8s DNS中添加服务名称别名,就像链接在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

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

--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之外,您可以使用
    ExternalIPs
    创建服务来定义端点的IP

  • 如果这是并排部署(即1客户端1服务器),您可以考虑保持客户端和服务器处于相同的“强> POD < /强>定义:在单个POD中,客户端容器可以在其特定端口上通过<代码>本地主机< /代码>到达服务器容器。

  • 您可以通过摆弄kube dns来注入任意dns名称(甚至覆盖公共dns名称),但您真的不必这样做


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

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,它们不会创建任何实例。