基于 Spiderpool 的外部访问¶
配置目标¶
由于 Redis 本身并未提供集群外部访问的能力,因此需要通过其他网络功能,实现该访问需求。 本例中采用了 calico/cilium + macvlan standalone + spiderpool 的支持方式。
前提¶
DCE 5.0 集群内已部署 multus-underlay 和 spiderpool。
环境准备¶
-
确认 macvlan 部署情况。执行命令,查看部署状态,可见类似如下图中的返回信息
存在 macvlan-vlan0(standalone) 和 macvlan-overlay-vlan0(overlay) 则表示集群内已部署 macvlan。
Note
Redis 仅支持通过 macvlan standalone 模式实现外部访问
-
创建子网及 IP 池,具体操作可参见:创建子网及 IP 池¶
Note
Redis 仅可以使用现有子网及 IP 池,请务必先执行手工创建操作。
Redis 实例配置¶
集群模式¶
-
修改 redis 实例的 CR(rediscluster),在 metadata 字段下添加以下内容:
-
更新 CR 后,查看实例节点信息,可见类似下图的 IP 地址变化,则表示配置成功:
-
完成配置后可从集群外部访问节点,能成功访问。
哨兵模式¶
-
更新 Redis 实例 CR(redisfailover),分别在 spec.redis 和 spec.sentinel 字段添加以下内容:
podAnnotations: v1.multus-cni.io/default-network: kube-system/macvlan-vlan0 ipam.spidernet.io/ippools: '[{"interface":"eth0","ipv4":["ippool-redis"]}]'
Note
cilium:需要为 redis-operator 的 deployment 添加 annotations, 字段位置为 spec.template.metadata.annotations
calico:无需更新 redis-operator
-
更新 CR 后,查看实例节点信息,可见类似下图的 IP 地址变化,则表示配置成功:
-
完成配置后可从集群外部访问节点验证配置有效性,能成功访问。
注意事项
Reids 哨兵模式中的工作负载 updateStrategy
为 OnDelete
时, 更新 CR 之后不会立即删除旧版本的 Pod,需要手动去重启 Pod,重启 Pod 即可生效。
下图为更新 CR 后未更新的数据截图: