ArgoCD 2.5.x高可用安装遇Redis Pod初始化失败问题求助
ArgoCD高可用安装中argocd-redis-ha-server Pod初始化失败的解决方法
问题背景
在Kubernetes v1.23.13集群部署ArgoCD 2.5.x高可用版本时,argocd-redis-ha-server-0 Pod无法完成初始化,config-init容器执行失败,报错如下:
Start... Initializing config.. Copying default redis config.. to '/data/conf/redis.conf' Copying default sentinel config.. to '/data/conf/sentinel.conf' Identifying redis master (get-master-addr-by-name).. using sentinel (argocd-redis-ha), sentinel group name (argocd) Could not connect to Redis at argocd-redis-ha:26379: Try again Could not connect to Redis at argocd-redis-ha:26379: Try again Could not connect to Redis at argocd-redis-ha:26379: Try again Did not find redis master () Identify announce ip for this pod.. using (argocd-redis-ha-announce-0) or (argocd-redis-ha-server-0) identified announce () /readonly-config/init.sh: line 239: Error: Could not resolve the announce ip for this pod.: not found
解决方案
1. 修复Pod IP解析问题
报错核心是无法自动获取Pod的announce IP,可通过手动注入Pod IP环境变量解决:
- 编辑
argocd-redis-ha-serverStatefulSet:kubectl edit statefulset argocd-redis-ha-server -n argocd - 在
spec.template.spec.initContainers中找到config-init容器,添加环境变量配置:env: - name: REDIS_HA_ANNOUNCE_IP valueFrom: fieldRef: fieldPath: status.podIP - 保存退出后,StatefulSet会自动重建Pod,此时
config-init容器可获取到正确的Pod IP。
2. 调整Headless Service的就绪地址发布策略
原安装清单中的argocd-redis-ha-announce Headless Service默认未开启publishNotReadyAddresses,导致未就绪的Pod无法被DNS解析,修改该Service:
apiVersion: v1 kind: Service metadata: name: argocd-redis-ha-announce namespace: argocd spec: clusterIP: None publishNotReadyAddresses: true # 新增该配置,允许未就绪Pod被DNS解析 ports: - port: 6379 name: redis - port: 26379 name: sentinel selector: app.kubernetes.io/name: argocd-redis-ha
应用修改:
kubectl apply -f <上述service文件路径> -n argocd
3. 检查Sentinel Service及端点状态
确认argocd-redis-ha Service关联的端点正常就绪:
- 查看Service状态:
kubectl get svc argocd-redis-ha -n argocd - 查看端点就绪情况:
kubectl get endpoints argocd-redis-ha -n argocd
如果端点未就绪,需排查argocd-redis-ha-server Pod是否有其他启动异常,比如资源不足、镜像拉取失败等。
4. 匹配兼容的Redis HA镜像版本
确保使用的Redis HA镜像版本与ArgoCD 2.5.x版本完全匹配,例如替换为对应版本的稳定镜像:
kubectl set image statefulset/argocd-redis-ha-server -n argocd redis-ha=quay.io/argoproj/argocd-redis-ha:v2.5.16
内容的提问来源于stack exchange,提问作者Prarthana MJ
相关产品推荐
相关产品推荐

