我有不同elk栈的docker映像,我想在它们之间通信,我已经通过创建一个docker网络并通过主机名访问它们来实现它,我想知道我们是否可以在kubernetes中传递这些属性?我们可以在那里创建一个docker网络吗?我们如何在部署yaml中传递这些属性?
我已经创建了一个名为“elk”的docker网络,然后在run参数中传递它(作为docker run --network=elk -h elasticsearch...)我希望在kubernetes集群中创建此网络,然后将这些属性传递给部署yaml
1条答案
按热度按时间olmpazwi1#
Kubernetes没有Docker的概念,即每个应用程序独立的网络。您无法在Kubernetes中复制此Docker设置,也不需要这样做。另请参阅Kubernetes文档中的Services, Load Balancing, and Networking。
在Kubernetes中,您通常不直接与Pod(容器)通信,而是创建与每个部署匹配的Service,然后创建make calls to the Service name和端口。
如果您当前正在使用
docker run --net=...
部署container,那么在迁移到Kubernetes时可以忽略该选项。如果您正在使用Composes,我建议您首先尝试更新Composes设置,以仅使用Composes提供的default
网络,删除所有networks:
块。对于Elasticsearch之类的应用程序,您可能希望在StatefulSet中运行它,StatefulSet还可以管理每个副本的存储。这对相应的服务有特定的要求,而且它确实提供了一种在需要时连接到特定副本的方法。与此问题相关的是,如果StatefulSet命名为
elasticsearch
,则Pod将命名为elasticsearch-0
、elasticsearch-1
、等等,这些名称在容器中也将显示为hostname(8),与docker run -h
选项匹配。