找到了解决方案:
第一步是在 pod 启动时在 nodes.conf 中更改当前的 pod ip。您可以使用此脚本来实现
#!/bin/sh
CLUSTER_CONFIG="/data/nodes.conf"
if [ -f ${CLUSTER_CONFIG} ]; then
if [ -z "${POD_IP}" ]; then
echo "Unable to determine Pod IP address!"
exit 1
fi
echo "Updating my IP to ${POD_IP} in ${CLUSTER_CONFIG}"
sed -i.bak -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${CLUSTER_CONFIG}
fi
exec "$@"
您应该通过调用此脚本并将原始 redis-server 启动命令传递给它来启动任何 pod。
现在集群中的每个 pod 都设置了正确的 IP。
- 确保集群的 pod 稳定且不会崩溃。
- 在其中一个 pod 中手动编辑 nodes.conf。设置正确的 IP 而不是弃用的 IP。
- 重新启动您编辑过的 pod
redis-cli shutdown
。Kubernetes 将为它设置一个新的 pod。新 pod 的 IP 将由我在上面添加的脚本设置。