K8ssandra安装遇cass-management-api镜像拉取授权失败求助
问题:K8ssandra单集群安装镜像拉取授权失败
环境与现象
按照K8ssandra单集群Helm安装文档操作后,执行kubectl get pods -n k8ssandra-operator得到如下输出:
NAME READY STATUS RESTARTS AGE demo-dc1-default-sts-0 1/2 ErrImagePull 0 81m demo-dc1-default-sts-1 1/2 ImagePullBackOff 0 81m demo-dc1-default-sts-2 1/2 ImagePullBackOff 0 81m k8ssandra-operator-7568db8d8f-7l6vb 1/1 Running 0 84m k8ssandra-operator-cass-operator-f6df9b874-gmsbp 1/1 Running 0 84m
查看异常Pod详情,执行kubectl describe pod demo-dc1-default-sts-1 -n k8ssandra-operator得到核心错误:
Warning Failed 101s (x8 over 65m) kubelet Failed to pull image "k8ssandra/cass-management-api:4.0.1": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/k8ssandra/cass-management-api:4.0.1": failed to copy: httpReadSeeker: failed open: server message: invalid_token: authorization failed
解决方案
1. 验证Docker Hub访问凭据有效性
- 手动在本地测试Docker Hub登录与镜像拉取,确认账号或令牌是否有效:
如果本地拉取失败,说明凭据过期或无效,需重新生成Docker Hub个人访问令牌。docker login docker.io -u <你的Docker Hub用户名> -p <你的访问令牌/密码> docker pull k8ssandra/cass-management-api:4.0.1
2. 检查并配置ImagePullSecret
- 确认
k8ssandra-operator命名空间下是否存在有效的镜像拉取Secret:kubectl get secret -n k8ssandra-operator - 若不存在,创建新的Docker Registry Secret:
kubectl create secret docker-registry regcred \ --docker-server=docker.io \ --docker-username=<你的Docker Hub用户名> \ --docker-password=<你的访问令牌/密码> \ --namespace=k8ssandra-operator - 更新Helm Release,指定该Secret用于镜像拉取:
helm upgrade demo k8ssandra/k8ssandra \ --namespace k8ssandra-operator \ --set cassandra.datacenters[0].imagePullSecrets[0]=regcred
3. 确认镜像标签可用性
- 检查
k8ssandra/cass-management-api:4.0.1标签是否在Docker Hub上存在,若标签不存在,修改Helm配置中的镜像版本为现有可用标签。
4. 排查集群网络连通性
- 在K8s节点上测试Docker Hub访问:
若无法访问,检查节点的防火墙、网络策略或代理配置,确保允许访问Docker Hub的HTTPS端口(443)。curl -I https://index.docker.io/v2/k8ssandra/cass-management-api/manifests/4.0.1
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

