省流提醒:
- 本次解决的问题是
docker login
可以正常登录,docker pull
也可以正常拉取镜像,只是 k8s 在启动 pod 的时候,没有指定imagePullSecrets
,导致没权限拉取
基于现有凭据创建 Secret
- 执行过
docker login
命令后,会在~/.docker/config.json
生成凭据文件
参考命令,记得把
<>
去掉
kubectl create secret generic <secret 名字> \ -n <namespace 名字> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
通过命令行创建 Secret
如果有多个私有仓库,这种方式创建的 Secret 更好用一点
kubectl create secret docker-registry <secret 名字> \ -n <namespace 名字> \ --docker-server=<your-registry-server> \ --docker-username=<your-name> \ --docker-password=<your-pword> \ --docker-email=<your-email>
--docker-server
是你的私有 Docker 仓库全限定域名(FQDN)
- DockerHub 使用
https://index.docker.io/v1/
--docker-username
是你的 Docker 用户名
--docker-password
是你的 Docker 密码--docker-email
是你的 Docker 邮箱
pod 使用指定 secret 认证私有镜像仓库
apiVersion: v1 kind: Pod metadata: name: private-reg spec: containers: - name: private-reg-container image: <your-private-image> imagePullSecrets: - name: <secret 名字>