k8s部署nginx镜像拉取失败
时间: 2025-02-23 17:27:47 浏览: 172
### 解决 Kubernetes 中 Nginx 镜像拉取失败的方法
#### 更改镜像源地址
当遇到 `registry.k8s.io` 这样的官方镜像仓库在国内无法访问的情况时,可以考虑修改配置文件中的镜像源为国内可访问的镜像库。对于 Ingress-Nginx 的安装,编辑 `deploy.yaml` 文件,将其中涉及的镜像路径替换为阿里云或其他可靠的国内镜像源[^4]。
例如,在 YAML 文件中找到如下形式的镜像定义:
```yaml
image: registry.k8s.io/ingress-nginx/controller:v1.0.0@sha256:...
```
将其更改为:
```yaml
image: registry.cn-hangzhou.aliyuncs.com/google_containers/ingress-nginx-controller:v1.0.0@sha256:...
```
#### 删除并重新创建凭证密钥
如果之前尝试过自定义私有仓库来解决问题,则可能需要清理旧的秘密对象以防止冲突。执行命令删除指定名称空间下的特定秘密对象:
```bash
kubectl delete secret hub.test.company.com.key -n kube-system
```
这一步骤有助于移除可能导致新设置失效的历史残留数据[^1]。
#### 使用本地导入的方式加载镜像
另一种解决方案是在节点级别通过容器运行时工具直接导入预先下载好的 NGINX Docker 镜像包至集群内部存储。具体操作可以通过以下指令完成:
```bash
sudo ctr -n k8s.io images import nginx.tar
```
此方法适用于网络条件不佳或完全隔离于公网之外的工作场景下快速部署服务的需求[^2]。
#### 创建新的 Secret 对象用于认证(如有必要)
为了能够顺利从私有的 Harbor 或其他类型的注册中心获取所需资源,还需要建立相应的身份验证机制。通常做法是利用 base64 编码后的用户名密码组合构建 `.dockerconfigjson` 类型 Secrets 来实现自动化登录过程。
```bash
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
name: myregcred
namespace: default
data:
.dockercfg: <base64-encoded-auth-string>
type: kubernetes.io/.dockercfg
EOF
```
之后可以在 Pod Spec 中引用这个 Secret 实现无缝衔接式的镜像提取流程。
---
阅读全文
相关推荐

















