k8s节点的pod都报错拉不到镜像

举报
fsifdds 发表于 2023/08/17 15:17:04 2023/08/17
【摘要】 场景:给测试集群新增了工作节点,但是发现调度到该节点上的pod都报错拉不到镜像。但是在节点上用docker pull 指令能拉取镜像。然后去看看kubelet的日志kubelet_pods.go:891] "Unable to retrieve pull secret, the image pull may not succeed." pod="xxx" secret="" err="sec...
场景:给测试集群新增了工作节点,但是发现调度到该节点上的pod都报错拉不到镜像。但是在节点上用docker pull 指令能拉取镜像。

然后去看看kubelet的日志
kubelet_pods.go:891] "Unable to retrieve pull secret, the image pull may not succeed." pod="xxx" secret="" err="secret \"mirror-registry-aliyun\" not found"
原来是设置了阿里云的密文。
然后发现有些项目没有设置密文,于是给所有命名空间加密文(没办法全局创建secret的)
[root@master-101 ~]# vi  /home/scripts/kubernetes/create_secret.sh
#!/bin/bash
ns_list=`kubectl get ns | awk '{print $1}' | grep -v NAME`
for ns in $ns_list;
do
kubectl create secret docker-registry registry-aliyun \
--docker-server=https://registry.cn-hangzhou.aliyuncs.com \
--docker-username=账号 \
--docker-password=密码 \
-n $ns
done;

[root@master-101 ~]# sh  /home/scripts/kubernetes/create_secret.sh

[root@master-101 ~]# kubectl get secret 
NAME                                                  TYPE                                  DATA   AGE
cephfs-csi-nodeplugin-token-sq85m                     kubernetes.io/service-account-token   3      100d
cephfs-csi-provisioner-token-qv6pg                    kubernetes.io/service-account-token   3      100d
default-token-fnttx                                   kubernetes.io/service-account-token   3      498d
my-release-vertical-pod-autoscaler-crds-token-tnkx2   kubernetes.io/service-account-token   3      96d
netchecker-agent-token-jzfsm                          kubernetes.io/service-account-token   3      497d
netchecker-server-token-4rbf2                         kubernetes.io/service-account-token   3      497d
registry-aliyun                                       kubernetes.io/dockerconfigjson        1      3s
sh.helm.release.v1.my-release.v1                      helm.sh/release.v1                    1      96d
sh.helm.release.v1.recruit-mini-fandow-com.v1         helm.sh/release.v1                    1      136d
最后,要给每个pod加registry-aliyun密文。
因为每个命名空间都有一个名为 default 的服务账户资源,当你创建 Pod 时,如果没有指定服务账户,Pod 会被指定给命名空间中的 default 服务账户,通过把 ImagePullSecrets添加到默认账户default中。
[root@master-101 kubernetes]# cat /home/scripts/kubernetes/image_serviceaccount.sh 
#!/bin/bash
ns_list=`kubectl get ns | awk '{print $1}' | grep -v NAME`
for ns in $ns_list;
do
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "registry-aliyun"}]}' -n $ns
done;

[root@master-101 kubernetes]# sh /home/scripts/kubernetes/image_serviceaccount.sh
最后发现,即使imagepullsecret是空也能成功拉到镜像,因为已经成为默认了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。