k8s pod 镜像拉取策略

embedded/2024/9/20 3:57:36/ 标签: k8s, imagePullPolicy, pod, 镜像

在 Kubernetes (k8s) 中,Pod 容器镜像的拉取策略通过 imagePullPolicy 属性来控制。这一策略决定了 kubelet 如何以及何时从容器镜像仓库中拉取镜像。以下是三种主要的镜像拉取策略及其详细说明:

  1. Always:

    • 说明: 这是默认的拉取策略。当设置为 Always 时,kubelet 在每次创建 Pod 或者重启容器时,无论本地节点上是否已存在该镜像,都会尝试从镜像仓库中拉取最新的镜像。这确保了你总是使用仓库中最新的镜像版本,但可能会导致不必要的网络流量和拉取时间,尤其是在频繁重启容器的场景下。
    • 适用场景: 对于那些需要保证运行时镜像总是最新版本的应用特别有用,例如持续集成/持续部署(CI/CD)环境或对安全性要求极高的应用。
  2. IfNotPresent:

    • 说明: 当设置为 IfNotPresent 时,kubelet 首先检查本地节点上是否已存在指定的镜像。如果存在,就直接使用本地镜像;如果不存在,则会从镜像仓库中拉取。这种方式可以减少不必要的镜像拉取操作,加快启动速度,同时节省网络带宽。
    • 适用场景: 对于开发环境、测试环境或生产环境中不经常更新镜像的服务来说,此策略较为合适。它能够利用缓存提高效率,同时保持一定的灵活性。
  3. Never:

    • 说明: 当设置为 Never 时,kubelet 不会试图从镜像仓库拉取镜像,仅使用节点上已有的镜像。如果本地节点缺少请求的镜像,Pod 将无法启动,并报告错误。
    • 适用场景: 这个策略适用于那些完全离线部署的环境,或者确信节点上已预先放置好所有所需镜像的场景。此策略可以确保绝对不与外部网络交互以获取镜像,增加安全性,但同时也限制了动态更新镜像的能力。

你可以针对每个容器单独设置 imagePullPolicy,或者在不显式设置时,默认采用镜像标签决定策略(例如,如果镜像:latest 标签,则默认为 Always,其他具体标签则可能为 IfNotPresent)。理解并正确配置这些策略对于优化 Kubernetes 集群的运行效率、安全性和资源管理至关重要。

imagePullPolicy_16">如何不配置imagePullPolicy,默认是什么?

在 Kubernetes 中,如果没有在 Pod 的 YAML 配置文件中明确设置 imagePullPolicy,其默认值取决于容器镜像的标签:

  • 如果容器镜像的标签是 :latest 或者没有明确指定标签(即默认为 :latest),那么默认的 imagePullPolicyAlways。这意味着每次创建或重启 Pod 时,Kubernetes 都会尝试从注册表中拉取最新的镜像

  • 对于带有明确标签(而非 :latest)的镜像,例如 :v1.0,默认的 imagePullPolicy 往往是 IfNotPresent。这意味着 kubelet 会检查本地是否存在该镜像,如果存在则使用,否则从注册表拉取。

pod_imagePullPolicy__25">修改pod imagePullPolicy 方法

要修改已运行 Pod 的 imagePullPolicyAlways,不能直接修改正在运行的 Pod,因为 Kubernetes 的 Pod 对象是不可变的。你需要采取以下步骤:

  1. 修改 Deployment 或 StatefulSet (或其他控制器) 的 YAML:如果你的 Pod 是由 Deployment、StatefulSet、DaemonSet 或其他控制器管理的,你需要编辑对应的 YAML 文件。找到容器定义的部分,添加或修改 imagePullPolicy 字段为 Always。例如:
    test.yaml

    apiVersion: apps/v1
    kind: Deployment
    metaname: test-app
    spec:replicas: 5template:metalabels:app: test-appspec:containers:- name: test-containerimage: test-image:1.9imagePullPolicy: Always   # 添加或修改此行
    
  2. 应用更新:保存 YAML 文件后,使用 kubectl apply -f test.yaml 命令来应用更改。这将会更新 Deployment(或相应的控制器),并按照新的 imagePullPolicy 设置滚动更新 Pod。

  3. 验证更改:使用 kubectl describe pod <pod-name> 命令检查 Pod 的详细信息,确认 imagePullPolicy 已经被正确设置为 Always。同时,注意观察 Pod 是否有因更新而重新调度和启动的情况。

请注意,直接管理的静态 Pod(即不是由控制器管理的 Pod)需要先删除原有 Pod,然后使用更新了 imagePullPolicy 设置的新 YAML 文件重新创建。但这种方式不推荐,因为它缺乏自我修复能力,推荐使用控制器来管理 Pod。


http://www.ppmy.cn/embedded/22458.html

相关文章

从NoSQL到NewSQL——10年代大数据浪潮下的技术革新

引言 在数字化浪潮的推动下&#xff0c;数据库技术已成为支撑数字经济的坚实基石。腾讯云 TVP《技术指针》联合《明说三人行》特别策划的直播系列——【中国数据库前世今生】&#xff0c;我们将通过五期直播&#xff0c;带您穿越五个十年&#xff0c;深入探讨每个时代的数据库演…

mysql 开启远程连接

登录到mysql mysql -uroot -p 打开mysql数据库并查询user表 use mysql; select user, host from user;更改需要远程连接数据库为任何ip 可以连接&#xff0c; 并刷新系统权限相关的表 update user set host% where hostlocalhost and userroot; flush privileges;

Apache Flink 流处理-[CentOS|Rocky] 镜像

Flink Docker仓库包含了Dockerfiles用于为Flink构建docker images使用&#xff0c;这些 Dockerfile 由 Apache Flink 社区维护&#xff0c;但 Docker 社区负责在 Docker Hub 上构建和托管映像。目前市面上流行的Flink镜像都是基于Ubuntu镜像构建&#xff0c;由于项目需求变化&a…

3. uniapp开发工具的一些事

前言 新的一天&#xff0c;又要开始卷起来了&#xff0c;开发程序开发当前离不开开发工具&#xff0c;一个好的开发工具办事起来那必然是事倍功半的...本文主要分享了关于uniapp里开发工具的一些事~ 概述 阅读时间&#xff1a;约5&#xff5e;7分钟&#xff1b; 本文重点&am…

020Node.js的FS模块使用fs.mkdir创建目录

Node.js的FS模块使用fs.mkdir创建目录 //fs.mkdir 创建目录 /*path 将创建的目录路径mode 目录权限&#xff08;读写权限&#xff09;&#xff0c;默认777callback 回调&#xff0c;传递异常参数err*/ const fsrequire(fs);fs.mkdir(./css,(err)>{if(err){console.log(err)…

MySql:连接和关闭

c connector 下面是一个示例&#xff0c;世界使用c connector时注意release版本和debug版本要和响应的动态库匹配才可以 #include <mysql_driver.h> #include <mysql_connection.h> #include <cppconn/resultset.h> #include <cppconn/statement.h>i…

UDP和TCP(传输层)

这里写目录标题 UDPUDP的基本特点UDP协议报文格式 TCPTCP协议报文格式TCP特点可靠传输实现机制确认应答超时重传数据丢了应答报文丢了 小结 UDP UDP的基本特点 无连接不可靠传输面向数据报全双工 UDP协议报文格式 2个字节有效范围(无符号): 0 ~ 65535(2^16 - 1). 2个字节有效范…

Pytorch迁移学习训练病变分类模型

划分数据集 1.创建训练集文件夹和测试集文件夹 # 创建 train 文件夹 os.mkdir(os.path.join(dataset_path, train))# 创建 test 文件夹 os.mkdir(os.path.join(dataset_path, val))# 在 train 和 test 文件夹中创建各类别子文件夹 for Retinopathy in classes:os.mkdir(os.pa…

JS常用数据类型的方法函数调用,数组的方法、对象的方法、字符串的方法、数字的方法、集合的方法、映射的方法、栈的方法、队列的方法、链表的封装、树的封装、

JS常用数据类型的方法函数调用&#xff0c;数组的方法、对象的方法、字符串的方法、数字的方法、集合的方法、映射的方法、栈的方法、队列的方法、链表的封装、树的封装 1. 数组&#xff08;Array&#xff09;&#xff1a;数组是一组按顺序存储的元素的集合&#xff1a;2. 对象…

GPT的全面历史和演变:从GPT-1到GPT-4

人工智能新篇章&#xff1a;GPT-4与人类互动的未来&#xff01; 本文探讨了生成式预训练 Transformer (GPT) 的显着演变&#xff0c;提供了从开创性的 GPT-1 到复杂的 GPT-4 的旅程。 每次迭代都标志着重大的技术飞跃&#xff0c;深刻影响人工智能领域以及我们与技术的互动。 我…

feign整合sentinel做降级知识点

1&#xff0c;配置依赖 <!-- Feign远程调用依赖 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> <!--sentinel--><dependency>…

微软开源了 MS-DOS 4.00

DOS的历史源远流长&#xff0c;很多现在的年轻人不知道DOS了。其实早期的windows可以看做是基于DOS的窗口界面的模拟器&#xff0c;系统的本质其实是DOS。后来DOS的漏洞还是太多了&#xff0c;微软重新写了windows的底层内核。DOS只是一个辅助终端的形式予以保留了。 微软是在…

golang上传文件到ftp服务器

之前有个业务需要把文件上传到ftp服务器&#xff0c;写了一个上传ftp的功能 package ftpimport "context"type Client interface {// UploadFile 上传文件UploadFile(ctx context.Context, opt *UploadFileOpt) error }type UploadFileOpt struct {Data […

操作系统——优先权算法c++实现

变量描述 测试数据 5 A 0 4 4 B 1 3 2 C 2 5 3 D 3 2 5 E 4 4 1 先来先服务算法 简述 该算法实现非常简单就是对到达时间排个序&#xff0c;然后依次进行即可&#xff0c;对结构体的sort进行了重载 代码 void FCFS() {//先来先服务算法std::cout<<"\n\t\t\t\t\…

灌溉排涝乙级资质升级甲级,这些材料你准备好了吗?

在灌溉排涝行业&#xff0c;资质的升级不仅是企业实力的一种体现&#xff0c;更是开拓新市场、参与更多大型项目的必要条件。从乙级资质升级到甲级&#xff0c;企业需要跨越一个较高的门槛&#xff0c;准备一系列详尽而严谨的材料。以下就是你需要准备的关键材料清单&#xff0…

Cocos Creator 3D物理引擎的物理参数控制详解

前言 Cocos Creator是一款基于JavaScript和TypeScript的开源游戏引擎&#xff0c;它提供了强大的3D物理引擎&#xff0c;可以帮助开发者实现各种物理效果。在Cocos Creator中&#xff0c;我们可以通过控制物理参数来实现不同的物理效果&#xff0c;比如重力、碰撞检测、摩擦力…

后端学习记录~~JavaSE篇(Module08-异常 上 )

总览&#xff1a; Java概述&#xff1a; 思维导图文件在本人个人主页上-----资源模块 资源详情&#xff08;免费下载&#xff09;&#xff1a;Java学习思维导图异常篇资源-CSDN文库https://download.csdn.net/download/m0_61589682/89238330 整体展示&#xff1a;

动手学深度学习——矩阵

1. 基本概念 1.1 标量 标量由只有一个元素的张量表示。 所以标量计算与程度开发中的普通变量计算没有差异。 import torchx torch.tensor(3.0) y torch.tensor(2.0)x y, x * y, x / y, x**y(tensor(5.), tensor(6.), tensor(1.5000), tensor(9.))1.2 向量 向量泛化自标量…

水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)

是自己利用LabelImg工具进行手工标注&#xff0c;数据集制作不易&#xff0c;请尊重版权&#xff08;稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫&#xff09; 如果需要yolv8检测模型和数据集放在一起的压缩包&#xff0c;可以关注&#xff1a;最新最…

什么是跨域? 出现原因及解决方法

什么是跨域? 出现原因及解决方法 什么是跨域 跨域&#xff1a;浏览器对于javascript的同源策略的限制 。 同源政策的目的&#xff0c;是为了保证用户信息的安全&#xff0c;防止恶意的网站窃取数据。 设想这样一种情况&#xff1a;A 网站是一家银行&#xff0c;用户登录以后…