pod基础和镜像拉取策略
目录
pod概念
pod的分类
1.基础容器 pause
2.初始化容器 init
实验:定义初始化容器
init容器的作用
实验:如何在容器内部进行挂载
镜像拉取策略
pod概念
pod是k8s里面的最小单位,pod也是最小化运行容器的资源对象。容器是基于pod在k8s集群当中工作的。在k8s集群当中,一个pod就代表着一个运行的进程,k8s的大部分组件都是围绕pod来进行的,主要是对pod进行支撑和扩展。deployment和service都是围绕pod来进行部署的。
k8s的pod有两种使用方式:
1.一个pod里面只有一个容器。这是最常见的方式。k8s管理的是pod,而不是容器
2.一个pod里面有多个容器。即使有多个容器,它们之间也是共享网络、共享挂载卷。
现在容器的技术要求:一个pod下的容器必须运行在同一个节点上。因为它们之间要共享网络、共享挂载卷,所以并不是pod自身提供的功能,而是pause容器提供共享网络和共享挂载卷。
流向图

流程:要在k8s集群上创建pod,此时集群分配到一个节点上,在节点上r创建pod的过程:先把pause镜像运行起来(初始化镜像),然后才拉取nginx镜像,在运行过程中,pause镜像不参与,只有删除的时候才参与,在删除镜像的过程中回收容器的资源和容器内的僵尸进程,然后再通知kubelet,kubelet回收pod,然后通知apiserver,然后通过apiserver存储到etcd
注:其中要先有pause基础容器,然后才拉取nginx镜像
pod的分类
1.基础容器 pause
用来共享网络、共享挂载卷
2.初始化容器 init
这种初始化容器包含在pod内部,属于pod的组成部分之一,而且伴随着pod的生命周期当中的一个环节:启动环节。
当我们拉起一个pod时,先构建pause,构建完成之后,如果包含初始化容器,必须要等到初始化容器部署完成之后,才会部署应用容器。
实验:定义初始化容器
mkdir k8s-yaml
cd k8s-yaml/
vim init.yaml
apiVersion: v1
kind: Pod
metadata:name: init-podlabels:app: test1
spec:initContainers:
#定义pod内部的初始化容器,一个pod里面可以有多个容器,它包含初始化容器- name: centos1image: centos:7command: ["/bin/bash","-c","echo 123 > /opt/123.txt && sleep 2"]
#多个命令用 ; 表示逻辑或,用 && 表示逻辑且 - name: centos2image: centos:7command: ["/bin/bash","-c","echo 456 > /opt/456.txt && sleep 2"]containers:
#业务容器- name: centos3image: centos:7command: ["/bin/bash","-c","echo system is running && sleep 3600"]
这里会有三个问题:
1.怎么查看这三个容器
kubectl exec -it pod名称 -c 容器名 bash
kubectl logs -f pod名称 -c 容器名 bash 查看日志
初始化容器运行完成之后,即使命完成之后就退出了,但是节点上的容器还在,这个时候只能查询到业务容器的日志和状态。
初始化容器运行完毕之后必须要退出,否则后续的容器无法继续构建。也就是初始化容器后要加command
2.这三个容器的启动先后顺序是什么

启动的先后顺序:先启动初始化的容器,再启业务容器。
3.初始化容器启动失败后pod能否进入ready状态
不能
init容器的作用
1.创建pod的时候,可以为业务容器初始化运行条件以及提供环境变量和一些软件(自定义)
2.初始化容器可以访问Secrets权限,不需要配置。业务容器必须要配置之后才能访问Secrets
初始化容器的核心作用:可以为业务容器运行之前,提供一些必要的条件。只有前置条件满足之后,那么业务容器才能运行。
实验:如何在容器内部进行挂载

apiVersion: v1
kind: Pod
matadata:name: init-podlabels:app: test1
spec:volumes:- name: testdataemptyDir: {}
#容器卷,容器内部挂载的数据卷initContainers:
#定义pod内部的初始化 一个pod里面有多个容器 初始化容器- name: centos1image: centos7command: ["/bin/bash","-c","echo 123 > /opt/123.txt && sleep 2"]volumeMounts:- name: testdata
#需要和上面的保持一致mountPath: /opt/data
#多个命令用 ; 表示逻辑或,用 && 表示逻辑且name: centos2image: centos7command: ["/bin/bash","-c","echo 456 > /opt/456.txt && sleep 2"]volumeMounts:- name: testdata
#需要和上面的保持一致mountPath: /opt/datacontainers:- name: centos3image: centos7command: ["/bin/bash","-c","echo system is running && sleep 3600"]volumeMounts:- name: testdata
#需要和上面的保持一致mountPath: /opt/data
镜像拉取策略
1. IfNotPresent :镜像在本地已经存在,就不会到镜像仓库再一次拉取镜像 (默认方式)
2. Always :每次创建pod都会拉取镜像
3. Never :从来不去仓库拉取镜像,只使用本地镜像

镜像的标签:nginx:1.22
如果不加标签就是nginx 默认就是nginx:laster laster指的是最新版
如果没有镜像拉取策略,默认策略就是ifNotPresent,但是如果镜像没有指定标签,即使没有声明镜像的拉取策略,那么默认策略也是 Always
相关文章:
pod基础和镜像拉取策略
目录 pod概念 pod的分类 1.基础容器 pause 2.初始化容器 init 实验:定义初始化容器 init容器的作用 实验:如何在容器内部进行挂载 镜像拉取策略 pod概念 pod是k8s里面的最小单位,pod也是最小化运行容器的资源对象。容器是基于pod在k…...
53 mysql pid 文件的创建
前言 接上一篇文章 mysql 启动过程中常见的相关报错信息 在 mysql 中文我们在 “service mysql start”, “service mysql stop” 经常会碰到 mysql.pid 相关的错误信息 比如 “The server quit without updating PID file” 我们这里来看一下 mysql 中 mysql.pid 文件的…...
前端---对MVC MVP MVVM的理解
就需要从前端这些年的从无到有、从有到优的变迁过程讲一下。 1. Web1.0时代 在web1.0时代并没有前端的概念,开发一个web应用多数采用ASP.NET/Java/PHP编写,项目通常用多个aspx/jsp/php文件构成,每个文件中同时包含了HTML、CSS、JavaScript、…...
深度学习 --- VGG16能让某个指定的feature map激活值最大化图片的可视化(JupyterNotebook实战)
VGG16能让某个指定的feature map激活值最大化图片的可视化 在前面的文章中,我用jupyter notebook分别实现了,预训练好的VGG16模型各层filter权重的可视化和给VGG16输入了一张图像,可视化VGG16各层的feature map。深度学习 --- VGG16卷积核的可…...
1990-2022年各地级市gdp、一二三产业gdp及人均gdp数据
1990-2022年各地级市gdp、一二三产业gdp及人均gdp数据 1、时间:1990-2022年 2、来源:城市统计年鉴 3、指标:年度、城市名称、城市代码、城市类别、省份标识、省份名称、国内生产总值/亿元、第一产业占GDP比重(%)、第二产业占GDP比重(%)、第…...
c++ 原型模式
文章目录 什么是原型模式为什么要使用原型模式使用场景示例 什么是原型模式 用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象,简单理解就是“克隆指定对象” 为什么要使用原型模式 原型模式(Prototype Pattern)是…...
论tomcat线程池和spring封装的线程池
Tomcat 中的线程池是什么? 内部线程池:Tomcat 确实有一个内部的线程池,用于处理 HTTP 请求,通常是org.apache.tomcat.util.threads.ThreadPoolExecutor 类的实例。这个线程池专门用于处理进入的 HTTP 请求和发送响应。可以通过 T…...
阿里P7大牛整理自动化测试高频面试题
最近好多粉丝咨询我,有没有软件测试方面的面试题,尤其是Python自动化测试相关的最新面试题,所以今天给大家整理了一份,希望能帮助到你们。 接口测试基础 1、公司接口测试流程是什么? 从开发那边获取接口设计文档、分…...
vue如何实现路由缓存
(以下示例皆是以vue3vitets项目为例) 场景一:所有路由都可以进行缓存 在渲染路由视图对应的页面进行缓存设置,代码如下: <template><router-view v-slot"{ Component, route }"><transiti…...
基于Openjdk容器打包运行jar程序
文章目录 应用场景基于Openjdk容器打包运行jar程序1.编译项目成jar包2.构建Dockerfile文件精简版-含jar包精简版-不含jar包带注释版-含jar包 3.编译Dockerfile成镜像。4.运行镜像: 应用场景 部署多版本jdk的应用程序。 基于Openjdk容器打包运行jar程序 1.编译项目…...
DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3)
DNN学习平台(GoogleNet、SSD、FastRCNN、Yolov3) 前言相关介绍1,登录界面:2,主界面:3,部分功能演示如下(1)识别网络图片(2)GoogleNet分类…...
HTTP协议(超文本传输协议)
HTTP请求消息 http请求消息组成: 请求行 :包含请求的方法 操作资源的地址 协议的版本号 http请求方法: GET:从服务器获取资源 POST:添加资源信息 PUT:请求服务器更新资源信息 DELETE:请…...
FFmpeg的日志系统(ubuntu 环境)
1. 新建.c文件 vim ffmpeg_log.c2. 输入文本 #include<stdio.h> #include<libavutil/log.h> int main() {av_log_set_level(AV_LOG_DEBUG);av_log(NULL,AV_LOG_INFO,"hello world");return 0; }当log level < AV_LOG_DEBUG 都可以印出来 #define A…...
浅析VO、DTO、DO、PO
一、概念介绍 POJO(plain ordinary java object) : 简单java对象,个人感觉POJO是最常见最多变的对象,是一个中间对象,也是我们最常打交道的对象。一个POJO持久化以后就是PO,直接用它传递、传递…...
android kotlin基础复习 enum
1、kotlin中,关键字enum来定义枚举类型。枚举类型可以包含多个枚举常量,并且每个枚举常量可以有自己的属性和方法。 2、测试代码: enum class Color{RED,YELLOW,BLACK,GOLD,BLUE,GREEN,WHITE }inline fun <reified T : Enum<T>>…...
个股场外期权怎么交易?场外期权交易流程是怎样的?
今天带你了解个股场外期权怎么交易?场外期权交易流程是怎样的?个股场外期权是一种非标准化的期权合约,通常在场外市场(OTC市场)由金融机构和投资者之间进行交易。 场外个股期权主要功能 风险管理: 帮助投…...
企业选ETL还是ELT架构?
作为数据处理的重要工具,ETL工具被广泛使用,同时ETL也是数据仓库中的重要环节。本文将从解释ETL工具是怎么处理数据,同时介绍ELT和ETL工具在企业搭建数据仓库的重要优势。 一、什么是ETL? ETL是Extract-Transform-Load的缩写,将…...
【Spring Boot 3】【Web】同时启用 HTTP 和 HTTPS
【Spring Boot 3】【Web】同时启用 HTTP 和 HTTPS 背景介绍开发环境开发步骤及源码工程目录结构背景 软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是…...
【Android】最好用的网络库:Retrofit
最好用的网络库:Retrofit 文章目录 最好用的网络库:RetrofitRetrofit的基本用法Retrofit的使用逻辑Retrofit的基本操作处理复杂的接口地址类型进阶删除提交header中指定参数 Retrofit构建器的最佳写法Retrofit的使用封装 用户网络请求的接口配置繁琐&…...
SpringBoot自动化配置原理
SpringBoot自动化配置原理 01-SpringBoot2高级-starter依赖管理机制 目的:通过依赖能了解SpringBoot管理了哪些starter 讲解: 通过依赖 spring-boot-dependencies 搜索 starter- 发现非常多的官方starter,并且已经帮助我们管理好了版本。 …...
CSS自定义变量在JS中动态读取_利用setProperty处理兼容赋值
JS读取CSS自定义变量需确保变量已作用于目标元素(如:root或元素自身),再用getComputedStyle(el).getPropertyValue(--var)获取,注意双短横、返回字符串、空字符串非undefined;动态修改用setProperty仅限当前元素&#…...
保姆级教程!小程序开发只需3步,Gemini设计 + Trae开发 + 微信开发者工具预览上架
大家好,我是李奔腾。今天我想分享一下,如何通过AI工具快速设计和开发一个万年历小程序。借助 Gemini、Trae 和 微信开发者工具,几分钟时间就能让小程序顺利运行起来,极大地提升开发效率。第一步:使用Gemini设计小程序首…...
OpenClaw日志分析:百川2-13B-4bits模型自动化排查系统错误
OpenClaw日志分析:百川2-13B-4bits模型自动化排查系统错误 1. 为什么需要智能日志分析 每次系统半夜报错时,我都会被报警电话惊醒,然后手忙脚乱地登录服务器查日志。那些密密麻麻的报错信息就像天书,经常需要反复搜索、比对历史…...
【仅限头部AI团队内部流通】Python智能内存策略白皮书V3.2:基于LLM驱动的动态内存预测模型实测报告
第一章:Python智能体内存管理策略安全性最佳方案概览Python智能体在高并发、长周期运行场景下面临内存泄漏、引用循环、敏感数据残留等安全风险。其内存管理机制虽以引用计数为主、辅以分代垃圾回收(GC),但默认行为不足以保障智能…...
基于Vue的社区老年人健康管理与服务预约网站[vue]-计算机毕业设计源码+LW文档
摘要:随着人口老龄化的加剧,社区老年人健康管理与服务预约的需求日益增长。为了提高社区老年人健康管理的效率和服务质量,本文设计并实现了一个基于Vue的社区老年人健康管理与服务预约网站。文章详细阐述了系统的开发背景、相关技术、需求分析…...
React Native Tab View与状态管理库集成:Redux、MobX实战指南
React Native Tab View与状态管理库集成:Redux、MobX实战指南 【免费下载链接】react-native-tab-view A cross-platform Tab View component for React Native 项目地址: https://gitcode.com/gh_mirrors/re/react-native-tab-view 在React Native应用开发中…...
gpu算力与图形处理
核心本质 图形处理(Graphics):GPU 天生本职工作 —— 画画面、渲染 3D、光栅化、纹理、着色、显示输出。GPU 算力(Compute / GPGPU):利用 GPU 超多小核心 做通用并行计算 —— AI、科学计算、挖矿、渲染、仿…...
ADS(Advanced Design System)高效集成供应商库(Vendor Libraries)的实战指南
1. 为什么需要供应商库? 刚接触ADS的射频工程师常会遇到这样的困境:设计一个简单的滤波器,光是找合适的电容电感模型就要花半天时间。Murata的0402封装电容该用哪个SPICE模型?AVX的叠层电感参数怎么设置?这时候**供应商…...
利用快马平台快速搭建stm32f103c8t6最小系统板LED闪烁原型
最近在做一个嵌入式小项目,用到了经典的stm32f103c8t6最小系统板。作为嵌入式开发新手,最头疼的就是搭建开发环境和写各种初始化代码。不过这次尝试用InsCode(快马)平台后,整个过程顺畅多了,分享下我的经验。 项目背景 stm32f103c…...
AI大模型系统学习指南:掌握大模型,从入门到精通
随着技术的进步,大模型如OpenAI的GPT-4和Sora、Google的BERT和Gemini等已经展现出了惊人的能力-从理解和生成自然语言到创造逼真的图像及视频。所以掌握大模型的知识和技能变得越来越重要。 下面是学习大模型的一些建议,供大家参考。 必备基础知识 **数学…...
