k8s节点的pod都报错拉不到镜像
【摘要】 场景:给测试集群新增了工作节点,但是发现调度到该节点上的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)