k3d 尝试拉取 Docker 镜像而不是使用本地镜像

naz*_*art 4 linux docker spring-boot kubernetes k3d

只需在本地机器(Linux Mint 20.2)上研究K8S的核心即可。

使用以下命令在本地创建一个节点集群:

k3d集群创建mycluster

现在我想在容器中运行 spring boot 应用程序。
我构建本地图像:

库:0.1.0

这是摘自Deployment.yml

spec:
  terminationGracePeriodSeconds: 40
  containers:
    - name: 'library'
      image: library:0.1.0
      imagePullPolicy: IfNotPresent
Run Code Online (Sandbox Code Playgroud)

尽管图像已经构建:

docker images
REPOSITORY    TAG       IMAGE ID       CREATED             SIZE
library       0.1.0     254c13416f46   About an hour ago   462MB
Run Code Online (Sandbox Code Playgroud)

启动容器失败:

pod/library-867dfb64db-vndtj    Pulling image "library:0.1.0"
pod/library-867dfb64db-vndtj    Failed to pull image "library:0.1.0": rpc error: code = Unknown desc = failed to pull and unpack image "library:0.1.0": failed to resolve reference "library:0.1.0": failed to do request: Head "https://...com/v2/library/manifests/0.1.0": x509: certificate signed by unknown authority
pod/library-867dfb64db-vndtj    Error: ErrImagePull
pod/library-867dfb64db-vndtj    Error: ImagePullBackOff
pod/library-867dfb64db-vndtj    Back-off pulling image "library:0.1.0"
Run Code Online (Sandbox Code Playgroud)

如何解决k3d集群的本地图像可见性?


解决方案:

更新Deployment.yml

spec:
  terminationGracePeriodSeconds: 40
  containers:
    - name: 'library-xp'
      image: xpinjection/library:0.1.0
      imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)

并将图像导入集群:

k3d 图像导入 xpinjection/library:0.1.0 -c mycluster

Bgu*_*ess 10

如果您不想使用 docker 注册表,则必须将本地构建的映像导入到 k3d 集群中:

k3d image import [IMAGE | ARCHIVE [IMAGE | ARCHIVE...]] [flags]
Run Code Online (Sandbox Code Playgroud)

但不要忘记在部署中进行配置:

imagePullPolicy: Never
Run Code Online (Sandbox Code Playgroud)