我正在尝试在Azure中托管的kubernetes集群上设置多代理kafka . 我有一个代理设置工作 . 对于多代理设置,目前我有一个管理kafka服务的zookeeper节点集合(3) . 我正在将kafka集群部署为复制控制器,复制因子为3.这是3个代理 . 如何向Zookeeper注册这三个代理,以便它们与Zookeeper注册不同的IP地址?
部署服务后,我会调出复制控制器,并在复制控制器yaml文件中使用群集IP来指定两个advertised.listeners,一个用于SSL,另一个用于PLAINTEXT . 但是,在这种情况下,所有代理都使用相同的IP注册并写入副本失败 . 我不希望将每个代理部署为单独的复制控制器/ pod和服务,因为扩展成为一个问题 . 我真的很感激任何想法/想法 .
编辑1:
我还试图将群集暴露给 Cloud 中的另一个VPC . 我必须使用advertised.listeners为客户端公开SSL和PLAINTEXT端口 . 如果我使用复制因子为3的statefulset并让kubernetes将pod的规范主机名作为主机名公开,则无法从外部客户端解析这些名称 . 我使用它的唯一方法是使用/公开与每个代理相对应的外部服务 . 但是,这不会扩展 .
1 回答
Kubernetes有
Statefulsets
的概念来解决这些问题 . statefulset的每个实例都有自己的DNS名称,因此您可以通过dns名称引用每个实例 .更详细地描述了该概念here . 你也可以看一下这个complete example: