侧边栏壁纸
  • 累计撰写 23 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论
标签搜索

目 录CONTENT

文章目录

k8s运维(十)Kubernetes 集群拉取私有仓库镜像

爱喝酸梅汤的小猫咪
2023-05-30 / 0 评论 / 0 点赞 / 386 阅读 / 398 字

k8s运维(十)Kubernetes 集群拉取私有仓库镜像

在使用kubectl apply -f web.yaml的时候,出现pod ImagePullBackOff状态,Back-off pulling image "registry.cn-qingdao.aliyuncs.com/jameswu-web/web-deploy-demo:v1"

原因:registry.cn-qingdao.aliyuncs.com/jameswu-web/web-deploy-demo:v1 存放在自建的私有镜像仓库中。kubernetes 并不能直接使用 docker 的 /root/.docker/config.json 凭证拉取这个镜像,需要单独配置自己的凭证来拉取镜像。

一、密钥编排容器

指定Pod 上指定 ImagePullSecrets

// 查看 kubernetes 的 secret
$ kubectl get secret -o wide
NAME                  TYPE                                  DATA   AGE
default-token-4l9j5   kubernetes.io/service-account-token   3      11d

// 创建
$ kubectl create secret docker-registry aliyun-registry  \
  -n ns-web \
  --docker-server=registry.cn-qingdao.aliyuncs.com \
  --docker-username=xxx \
  --docker-password=xxx \
  --docker-email=2746665602@qq.com
  
kubectl create secret docker-registry foobar-registry 
-n default 命名空间
--docker-server=私有镜像仓库地址 
--docker-username=用户名 
--docker-password=密码 
--docker-email=邮箱

//再次查看
$ kubectl get secret -o wide
NAME                  TYPE                                  DATA   AGE
aliyun-registry       kubernetes.io/dockerconfigjson        1      16s
default-token-4l9j5   kubernetes.io/service-account-token   3      11d

创建yaml,并指定imagePullSecrets

16720355345814

二、无密钥编排容器

Add ImagePullSecrets to a service account

  • 查看验证secret
$ kubectl get secrets aliyun-registry
NAME              TYPE                             DATA   AGE
aliyun-registry   kubernetes.io/dockerconfigjson   1      18h
  • 添加secret到账号
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "aliyun-registry"}]}'
  • 上面是自动添加,也可以手动添加
$ kubectl edit serviceaccount/default

修改成:
apiVersion: v1
kind: ServiceAccount
metadata:
  creationTimestamp: 2021-07-07T22:02:39Z
  name: default
  namespace: default
  uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
imagePullSecrets:
  - name: aliyun-registry    # 新增
  • 验证
$ kubectl run nginx --image=nginx --restart=Never
$ kubectl get pod nginx -o=jsonpath='{.spec.imagePullSecrets[0].name}{"\n"}'

验证输出
aliyun-registry
0
  • 0

评论区