gpt4 book ai didi

docker - Kubernetes 不从私有(private)注册表中提取图像

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:00 27 4
gpt4 key购买 nike

我正在尝试将镜像从我的私有(private)注册表 (harbor) 部署到我的 Kubernetes 环境。注册表已成功设置并且已经包含我的图像。

为了提供上下文,这是我的部署文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
name: sps-app
name: sps-app
spec:
replicas: 1
template:
metadata:
labels:
name: sps-app
spec:
containers:
- image: repo-harbor.test.com/sps_project/spsapp:23
env:
- name: MONGODB_URL
value: "mongodb://mongo.default.svc.cluster.local:27017/user"
name: sps-app
ports:
- containerPort: 4000
name: sps-app
imagePullSecrets:
- name: harbor

我已经使用下面的命令创建了我的 harbor secret

kubectl create secret docker-registry harbor \
--docker-server=https://repo-harbor.test.com \
--docker-username=admin \
--docker-password='xxxxxx!'

但是,当我对我的部署执行 kubectl apply -f 时,它总是会进入图像拉取回退。

经过进一步调查,我检查了 pod 的日志,它指出存在 x509 认证错误。

Kubernetes 事件:

Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 3m default-scheduler Successfully assigned default/private-image-test-1 to df56bd02-5e0e-4644-a565-c233ac2404fe
Normal Pulling 2m (x3 over 3m) kubelet, df56bd02-5e0e-4644-a565-c233ac2404fe pulling image "jur01-harbor.acepod.com/sps_project/spsapp:2"
Warning Failed 2m (x3 over 3m) kubelet, df56bd02-5e0e-4644-a565-c233ac2404fe Failed to pull image "jur01-harbor.acepod.com/sps_project/spsapp:2": rpc error: code = Unknown desc = Error response from daemon: Get https://jur01-harbor.acepod.com/v2/: x509: certificate signed by unknown authority
Warning Failed 2m (x3 over 3m) kubelet, df56bd02-5e0e-4644-a565-c233ac2404fe Error: ErrImagePull
Warning Failed 2m (x4 over 3m) kubelet, df56bd02-5e0e-4644-a565-c233ac2404fe Error: ImagePullBackOff
Normal SandboxChanged 2m (x7 over 3m) kubelet, df56bd02-5e0e-4644-a565-c233ac2404fe Pod sandbox changed, it will be killed and re-created.
Normal BackOff 2m (x5 over 3m) kubelet, df56bd02-5e0e-4644-a565-c233ac2404fe Back-off pulling image "jur01-harbor.acepod.com/sps_project/spsapp:2"

此时,我不确定如何解决这个问题。谁能解决这个问题?

最佳答案

根本原因

位于 jur01-harbor.acepod.com 的镜像注册中心使用自签名证书,Docker 不信任它。

解决方案

将该图像注册表提供的自定义 CA 证书复制到名为 /etc/docker/certs.d/jur01-harbor.acepod.com/ 的目录中的所有 Kubernetes 节点。

引用:Docker docs / Test an insecure registry .

关于docker - Kubernetes 不从私有(private)注册表中提取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56366046/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com