zoukankan      html  css  js  c++  java
  • 容器镜像

    在 Kubernetes 的 Pod 中使用容器镜像之前,您必须将其推送到一个镜像仓库(或者使用仓库中已经有的容器镜像)。在 Kubernetes 的 Pod 定义中定义容器时,必须指定容器所使用的镜像,容器中的 image 字段支持与 docker 命令一样的语法,包括私有镜像仓库和标签。

    例如:my-registry.example.com:5000/example/web-example:v1.0.1 由如下几个部分组成:

    my-registry.example.com:5000/example/web-example:v1.0.1

    registry 地址:registry 端口/repository 名字/image 名字:image 标签

    如果您使用 hub.dokcer.com Registry 中的镜像,可以省略 registry 地址和 registry 端口。例如:nginx:latesteipwork/kuboard

    # 更新镜像

    Kubernetes中,默认的镜像抓取策略是 IfNotPresent,使用此策略,kubelet在发现本机有镜像的情况下,不会向镜像仓库抓取镜像。如果您期望每次启动 Pod 时,都强制从镜像仓库抓取镜像,可以尝试如下方式:

    • 设置 container 中的 imagePullPolicyAlways
    • 省略 imagePullPolicy 字段,并使用 :latest tag 的镜像
    • 省略 imagePullPolicy 字段和镜像的 tag
    • 激活 AlwaysPullImages管理控制器

    imagePullPolicy 字段和 image tag的可能取值将影响到 kubelet 如何抓取镜像:

    • imagePullPolicy: IfNotPresent 仅在节点上没有该镜像时,从镜像仓库抓取
    • imagePullPolicy: Always 每次启动 Pod 时,从镜像仓库抓取
    • imagePullPolicy 未填写,镜像 tag 为 :latest 或者未填写,则同 Always 每次启动 Pod 时,从镜像仓库抓取
    • imagePullPolicy 未填写,镜像 tag 已填写但不是 :latest,则同 IfNotPresent 仅在节点上没有该镜像时,从镜像仓库抓取
    • imagePullPolicy: Never,Kubernetes 假设本地存在该镜像,并且不会尝试从镜像仓库抓取镜像

    重要

    • 在生产环境部署时,您应该避免使用 :latest tag,如果这样做,您将无法追踪当前正在使用的镜像版本,也无法正确地执行回滚动作
    • 如果要 100% 确保所有的容器都使用了同样的镜像版本,可以尝试使用镜像的 digest,例如 sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2。 Digest 唯一地标识了容器镜像的版本,并且永远不会改变。
    $ docker pull ubuntu:14.04
    
    14.04: Pulling from library/ubuntu
    5a132a7e7af1: Pull complete
    fd2731e4c50c: Pull complete
    28a2f68d1120: Pull complete
    a3ed95caeb02: Pull complete
    Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
    Status: Downloaded newer image for ubuntu:14.04
    
    $ docker pull ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
    
    sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2: Pulling from library/ubuntu
    5a132a7e7af1: Already exists
    fd2731e4c50c: Already exists
    28a2f68d1120: Already exists
    a3ed95caeb02: Already exists
    Digest: sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
    Status: Downloaded newer image for ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
    
    # Dockerfile 使用digest示例
    FROM ubuntu@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2
    MAINTAINER some maintainer <maintainer@example.com>
    
    

    容器引擎的镜像缓存机制使得 imagePullPolicy: Always 仍然是高效的。在 Docker 中,如果镜像已经存在,抓取尝试非常快速,先检查镜像所有的 layer 是否有更新,如果该镜像在镜像仓库中所有 layer 的 digest 与本地所有 layer 的 digest 相同,则不会再下载镜像。

  • 相关阅读:
    webstorm11.0下载地址和webstorm11.0破解程序patcher.exe下载使用方法说明 前端IDE工具的利器
    20151224今天发现到的两篇关于CSS架构、可复用可维护CSS和CSS学习提升能有改变思想观念意识的文章 分别是CSS架构目标和说说CSS学习中的瓶颈
    GOF提出的23种设计模式是哪些 设计模式有创建形、行为形、结构形三种类别 常用的Javascript中常用设计模式的其中17种 详解设计模式六大原则
    HTML过滤器,用于去除XSS漏洞隐患。
    springboot的快速集成多数据源的启动器
    Springboot根据url后缀返回json或者xml或者html
    Springboot打包成War包并使其可以部署到Tomcat中直接运行
    数据脱敏工具类(包含手机号,银行卡号,邮箱,中文名称等)
    MySQL函数find_in_set介绍
    防止同一IP多次请求攻击
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13424489.html
Copyright © 2011-2022 走看看