ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
当我们需要从某个私有仓库拉取镜像时,可以使用 Secret 存储私有仓库的密码并借助 kubelet 传递密码,具体定义时通过指定 Pod 的字段`spc.ImagePullSecrets`来引用它。 这里有两个步骤: 1. 创建包含 Docker 镜像仓库证书的 Secret 2. 在 Pod 定义中使用字段 ImagePullSecrets 引用该 Secret 大家需要在[Docker Hub](https://hub.docker.com/)上创建一个账号,使用该账号创建一个私有仓库。 使用如下命令创建用于 Docker 镜像仓库鉴权的 Secret: ~~~bash # 这里的 xxxx 替换为你们自己的账号信息 $ kubectl create secret docker-registry mydockerhubsecret --docker-username=xxxx --docker-password=xxxx --docker-email=xxxx secret/mydockerhubsecret created ~~~ 查看详细信息: ~~~bash $ kubectl get secret mydockerhubsecret -o yaml apiVersion: v1 data: .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZGV4LmRvY2tlci5pby92MS8iOnsidXNlcm5hbWUiOiJ5dWFuY2h1bnJvbmciLCJwYXNzd29yZCI6Ik1ZbjRqdFM1QjZNcGNBbSIsImVtYWlsIjoiMjE5OTU1MzQxMEBxcS5jb20iLCJhdXRoIjoiZVhWaGJtTm9kVzV5YjI1bk9rMVpialJxZEZNMVFqWk5jR05CYlE9PSJ9fX0= kind: Secret metadata: creationTimestamp: "2019-09-26T06:57:15Z" name: mydockerhubsecret namespace: default resourceVersion: "6926" selfLink: /api/v1/namespaces/default/secrets/mydockerhubsecret uid: dd010027-4ab0-46c6-9f15-594b0c540e0a type: kubernetes.io/dockerconfigjson ~~~ 可以看到 mydockerhubsecret Secret 有一个隐藏的 .dockerconfigjson 文件,这个文件就是用于帮助验证的。 然后在创建 Pod 的时候引用这个 mydockerhubsecret: ~~~yaml apiVersion: v1 kind: Pod metadata: name: private-pod spec: imagePullSecrets: - name: mydockerhubsecret containers: - image: username/private:tag # 这里根据实际情况添加私有仓库的镜像名 name: main restartPolicy: Never ~~~ 执行创建,观察是否能够成功拉取到私有仓库中的镜像: ~~~text ...... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 54s default-scheduler Successfully assigned default/private-pod to kube-node-2 Normal Pulling 53s kubelet, kube-node-2 Pulling image "yuanchunrong/etcd:3.3.10" Normal Pulled 36s kubelet, kube-node-2 Successfully pulled image "xxxx" Normal Created 20s kubelet, kube-node-2 Created container main Normal Started 20s kubelet, kube-node-2 Started container main ~~~