新建IBM Cloud Kubernetes集群无法拉取DockerHub公共镜像求助
验证节点网络连通性
登录集群worker节点,执行以下命令测试与DockerHub的连通性:curl -v https://registry-1.docker.io telnet registry-1.docker.io 443若无法连通,说明节点到DockerHub的链路存在故障,可能是IBM Cloud节点的出站规则限制或区域网络问题。同时执行
dig registry-1.docker.io检查DNS解析是否正常,若解析超时或IP异常,需排查集群DNS配置。检查镜像拉取配置
执行kubectl get secrets查看是否存在异常的镜像拉取Secret,若Pod YAML中配置了imagePullSecrets,尝试移除该配置(公共镜像无需认证Secret),确认是否因误配置私有仓库认证导致拉取失败。确认IBM Cloud出站流量限制
登录IBM Cloud控制台,检查集群worker节点的安全组规则,确保出站方向允许访问443端口(DockerHub使用的端口)。部分区域可能默认限制外部公共镜像仓库访问,需手动添加允许访问DockerHub IP段的出站规则。排查DockerHub拉取限制
IBM Cloud节点IP可能触发DockerHub匿名拉取限制(每6小时100次),可配置DockerHub认证Secret提升拉取额度:kubectl create secret docker-registry regcred --docker-server=registry-1.docker.io --docker-username=<你的DockerHub用户名> --docker-password=<你的DockerHub密码> --docker-email=<你的邮箱>之后在Pod YAML中添加
imagePullSecrets: - name: regcred,或为default服务账户配置该Secret,让所有Pod默认使用认证拉取。检查集群网络政策
执行kubectl get networkpolicy查看是否存在限制Pod出站流量的规则,若有禁止外部访问的NetworkPolicy,需修改或删除。同时确认IBM Cloud默认的Calico网络插件规则是否允许Pod访问外部网络。交叉验证其他公共镜像仓库
尝试拉取其他公共仓库镜像(如quay.io/nginx/nginx:latest或gcr.io/google-containers/nginx-slim:0.8),若其他仓库可正常拉取,说明问题聚焦在DockerHub侧;若同样失败,则为集群整体网络问题。
内容的提问来源于stack exchange,提问作者rubenhak

