k8s使用本地镜像

背景

在机器上使用Dockerfile,打包了自己的镜像,但是没有push到仓库里,想本地直接通过k8s测试一下,但是通过yaml文件创建rc后,一直显示镜像拉取错误。从describe的信息看,k8s一直从远端拉取。

[root@CentOS-7-2 /home/k8s]# kubectl describe pod myweb-2959s
......
  58s		25s		2	{kubelet 127.0.0.1}	spec.containers{myweb}	Normal	      BackOff			Back-off pulling image "myweb8"
  58s		25s		2	{kubelet 127.0.0.1}				Warning	      FailedSync		Error syncing pod, skipping: failed to "StartContainer" for "myweb" with ImagePullBackOff: "Back-off pulling image \"myweb8\""

  1m	10s	3	{kubelet 127.0.0.1}	spec.containers{myweb}	Normal	Pulling		pulling image "myweb8"
  58s	4s	3	{kubelet 127.0.0.1}	spec.containers{myweb}	Warning	Failed		Failed to pull image "myweb8": Error: image library/myweb8 not found
  58s	4s	3	{kubelet 127.0.0.1}				Warning	FailedSync	Error syncing pod, skipping: failed to "StartContainer" for "myweb" with ErrImagePull: "Error: image library/myweb8 not found"

解决方案

实际上,k8s默认会从远端拉取镜像,其配置参数imagePullPolicy为Always。所以,如果yaml文件中没有定义那就是使用默认的,因此我们可以通过将该参数显示设置为Never或者IfNotPresent,k8s就会从本地拉取镜像了。

      containers:
      - name: myweb
        image: myweb-image
        imagePullPolicy: Never
  • 18
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
要在本地的 Kubernetes 集群中导入本地镜像文件,可以使用以下步骤: 1. 打标签:首先,需要给镜像打上标签,使其符合 Kubernetes 的要求。标签应该包含仓库地址、镜像名称和版本号。 例如,如果要将本地的镜像文件 hello-world.tar.gz 导入到 Kubernetes 中,则可以使用以下命令为其打标签: ``` docker tag hello-world:latest 127.0.0.1:5000/hello-world:latest ``` 其中,127.0.0.1:5000 是仓库地址,hello-world 是镜像名称,latest 是版本号。 2. 启动本地仓库:Kubernetes 默认使用 Docker Hub 作为镜像仓库,如果要使用本地镜像文件,需要启动一个本地仓库,可以使用以下命令启动: ``` docker run -d -p 5000:5000 --restart=always --name registry registry:2 ``` 这将在容器中启动一个名为 registry 的本地仓库,并将其映射到主机的 5000 端口。 3. 推送镜像到本地仓库:接下来,需要将标记后的镜像推送到本地仓库中。可以使用以下命令将其推送: ``` docker push 127.0.0.1:5000/hello-world:latest ``` 这将把镜像文件上传到本地仓库中。 4. 创建 Kubernetes Pod:最后,需要创建一个 Kubernetes Pod,并将其配置为使用刚才推送到本地仓库中的镜像。可以使用以下 YAML 文件来创建 Pod: ``` apiVersion: v1 kind: Pod metadata: name: hello-world spec: containers: - name: hello-world image: 127.0.0.1:5000/hello-world:latest ports: - containerPort: 80 ``` 将上述 YAML 文件保存为 hello-world.yaml,并使用以下命令创建 Pod: ``` kubectl create -f hello-world.yaml ``` 这将创建一个名为 hello-world 的 Pod,并将其配置为使用本地仓库中的 hello-world 镜像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值