我在vm服务器(vm1(上托管了一个不安全的私有docker注册表。我正在尝试从推送到该注册表的映像创建一个k8s部署。令人惊讶的是,dockerpull命令运行良好,因为我已经用不安全的注册表配置了/etc/docker/daemon.json。
kubectl describe命令的详细错误如下。你知道可能出了什么问题吗?
谢谢。
Failed to pull image "vm1:5000/temp/leads:latest": rpc error: code = Unknown desc = failed to pull and unpack image "vm1:5000/temp/leads:latest": failed to resolve reference "vm1:5000/temp/leads:latest": failed to do request: Head "https://vm1:5000/v2/temp/leads/manifests/latest": http: server gave HTTP response to HTTPS client
docker pull命令是
docker pull vm1:5000/temp/leads:latest
k8s清单文件如下
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: oleads
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: vm1:5000/temp/leads:latest
resources:
requests:
memory: "64Mi"
cpu: 0.5
limits:
memory: "512Mi"
cpu: 0.5
ports:
- containerPort: 8980
imagePullPolicy: Always
我意识到我正在使用的kubernetes引擎k3s使用不同的容器运行时。它使用containerd而不是docker。对于k3s,使用私有注册表的配置是不同的。这里提到了。
我必须在/etc/rancher/k3s/registries.yaml
文件中添加的配置是
mirrors:
vm1:5000:
endpoint:
- "http://vm1:5000"
添加此文件后重新启动k3s服务解决了问题,k8s能够从我的私人不安全docker注册表中提取图像。
我们也遇到了同样的问题,解决方案可能是使用docker deamon添加不安全的注册表。
所有节点上的活动
在/etc/docker/daemon.json中创建一个文件,并添加不安全的注册表详细信息:
{ "insecure-registries":["vm1:5000"] }
和CCD_ 2。