接上去,我们将让 ZooKeeper 效劳器经过 ClusterIP 效劳停止点对点通讯。为此,我们将结合 ClusterIP 效劳的地址来修正配置文件。这里还需求配置 zk_quorum_listen_all_ips 标志,假设没有这个,ZooKeeper 实例将无法成功绑定到主机接口上不存在的 IP 地址,由于它是一个 Kube 效劳 IP。
server.1=zk1-kube-svc-0:2888:3888
server.2=zk2-kube-svc-1:2888:3888
server.3=zk3-kube-svc-2:2888:3888
zk_quorum_listen_all_ips: true
server.1=zk1-kube-svc-0:2888:3888server.2=zk2-kube-svc-1:2888:3888server.3=zk3-kube-svc-2:2888:3888zk_quorum_listen_all_ips: true
滚动重新启动这些主机,前面就可以末尾预备用 Pod 交流主机了。
图 4:ZooKeeper 实例如今经过 ClusterIP 效劳与其他实例通讯
运用 Pod 替代 ZooKeeper 主机
我们将停止以下这些步骤,每次操作一台效劳器:
选择一台 ZooKeeper 效劳器及其相应的 ClusterIP 效劳;
封锁效劳器上的 ZooKeeper 进程;
运用与被封锁的 ZooKeeper 具有相反效劳器列表配置和 myid 文件的 Pod;
等候,直到 Pod 中的 ZooKeeper 启动,并与其他 ZooKeeper 节点的数据同步。
就这样,ZooKeeper 集群如今运转在 Kubernetes 中,并带有之前一切的数据。
图 5:经过交流后的集群。ZK1 运转在一个 Pod 中,而 ZK2 不需求知道发作了什么
网络先决条件
要顺利完成这些步骤,需求确保一些网络设置契合条件。你需求确保:
可以从一切需求衔接到 ZooKeeper 的效劳重视新路由 Kubernetes Pod 的 IP 地址;
一切衔接到 ZooKeeper 的效劳器必须可以解析 Kubernetes 效劳主机名;
一切需求衔接到 ZooKeeper 的效劳器必须运转 kube-proxy,让它们可以拜访 ClusterIP 效劳。
这些可以经过几种方式来完成。我们运用了一个外部网络插件,相似于 Lyft 的插件:
https://github.com/aws/amazon-vpc-cni-k8s
或许 AWS 插件:
https://github.com/lyft/cni-ipvlan-vpc-k8s
可以直接将 AWS VPC IP 地址分配给 Pod,而不是运用虚拟叠加网络,所以可以从恣意实例重新路由 Pod 的 IP。叠加网络(如 flannel)也是可以的,只需一切的效劳器都可以衔接到叠加网络。
【编辑引荐】
基于Kubernetes的多云和混合云
Kubernetes中的不足也是坏事
用于监视 Kubernetes 和 Docker 的六大开源工具
如何轻松学习 Kubernetes?
开源、弱小的Linux效劳器集群管理工具!
(责任编辑:admin)