惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MongoDB | Blog
MongoDB | Blog
宝玉的分享
宝玉的分享
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
罗磊的独立博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
SegmentFault 最新的问题
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
博客园 - 司徒正美
博客园 - 叶小钗
T
Tailwind CSS Blog
博客园 - Franky
V
V2EX
有赞技术团队
有赞技术团队
美团技术团队
雷峰网
雷峰网
爱范儿
爱范儿
Jina AI
Jina AI
D
DataBreaches.Net
H
Help Net Security
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 黑米

卸载 nodejs 时报错 you must be an administrator to remove this application 的解决 真心觉得,WIN11就是一个笑话 为 centos7 编译 nginx rabbitmqctl set_permissions 报错 invalid command centos7 升级 openssh (用来避坑) 你见过最长的类名是什么 记一次 k8s master 节点被 reset 后恢复的过程 java.lang.UnsupportedOperationException: null 解决 calico/node is not ready: BIRD is not ready: BGP not established with 的问题 @Transactional 和 @DSTransactional 混用可能会造成事务死锁 问题解决:idea 中无法连接 sql server 数据库,报错 [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 用一个脚本定时清理被驱逐的pod java 里的正则表达式 为何实现了 Filter 的类,能自动添加到 filterChain 中? 如何正确填写 sonar.java.binaries 解决 Tasks support was removed in SonarQube 7.6. 的问题 部署了 prometheus, 在 target 中显示 cadvisor 与 nodes 的状态都是 down mvn deploy 到 nexus,报错 Return code is: 400, ReasonPhrase: Bad Request 关于 mybatis 的 @MapperScan 用法心得
k8s 部署了 redis 集群,节点重启后,ip 变化导致集群不可用...
黑米 · 2021-02-28 · via 博客园 - 黑米

通过命令查询集群状态:

k exec -it redis-app-0 -- redis-cli cluster info

第一行是 cluster_state:fail (正常应该是 ok)

如何解决?
这里参考了 https://github.com/redis/redis/issues/4289. 主要方法是启动参数中设置 --cluster-announce-ip 为当前 pod 的 ip. 对于已经错乱的 nodes.conf 文件,则修改其中的 ip.

修改 redis.yaml

# 略
            containers:
            - name: redis
              image: redis
              command:
              - "redis-server"
              args:
              - "/etc/redis/redis.conf"
              - "--protected-mode"
              - "no"
              - "--cluster-announce-ip"
              - "$(POD_IP)"
              env:
              - name: POD_IP
                valueFrom:
                  fieldRef:
                    fieldPath: status.podIP
# 略
  1. 启动参数增加了 --cluster-announce-ip, 其值来自环境变量 POD_IP. 注意 $(POD_ID) 这里是小括号而非大括号。
  2. 这个环境变量的值又来自 status.podIP, 即当前 pod 的 ip. 每次 pod 启动时会分配一个不同的 ip, 通过 status.podIP 可以拿这个 ip,进而通知集群。

修改错乱的 nodes.conf
可以直接到 pv 中找到对应的文件修改它。修改完成后重启各个 pod 即可。

重启集群各个 pod

k apply -f redis.yaml