更新k8s镜像版本的三种方式

2023-05-16

一、知识准备

更新镜像版本是在k8s日常使用中非常常见的一种操作,本文主要介绍更新介绍的三种方法


二、环境准备

组件版本
OSUbuntu 18.04.1 LTS
docker18.06.0-ce


三、准备镜像

首先准备2个不同版本的镜像,用于测试(已经在阿里云上创建好2个不同版本的nginx镜像)

docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
docker pull registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2

这两个镜像只有版本号不同,其他的都一样

root@k8s-master:~# docker run -d --rm -p 10080:80 nginx:v1
e88097841c5feef92e4285a2448b943934ade5d86412946bc8d86e262f80a050
root@k8s-master:~# curl http://127.0.0.1:10080
----------
version: v1
hostname: f5189a5d3ad3

四、更新镜像的三种方法

我们首先准备一个yaml文件用于测试:

root@k8s-master:~# more image_update.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: image-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: image-update
    spec:
      containers:
      - name: nginx
        image: registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1
        imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
    selector:
      app: image-update
    ports:
    - protocol: TCP
      port: 10080
      targetPort: 80

简单验证一下:

root@k8s-master:~# kubectl apply -f image_update.yaml
deployment.extensions "image-deployment" created
service "nginx-service" created
root@k8s-master:~# kubectl get svc
NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
nginx-service   ClusterIP   10.254.240.225   <none>        10080/TCP   1m
root@k8s-master:~# kubectl get pod  -owide
NAME                                READY     STATUS    RESTARTS   AGE       IP              NODE
image-deployment-58b646ffb6-d4sl7   1/1       Running   0          1m        10.10.169.131   k8s-node2
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v1
hostname: image-deployment-58b646ffb6-d4sl7

已经正常工作了,并且当前版本是v1

下面介绍修改镜像的方法

(1)修改配置文件

这应该是最常用的方法了

修改配置文件,将nginx:v1改成nginx:v2

root@k8s-master:~# sed -i 's/nginx:v1/nginx:v2/g' image_update.yaml

应用配置文件:

root@k8s-master:~# kubectl apply -f image_update.yaml
deployment.extensions "image-deployment" configured
service "nginx-service" unchanged
root@k8s-master:~# kubectl get pod  -owide
NAME                                READY     STATUS              RESTARTS   AGE       IP              NODE
image-deployment-55cb946d47-7tzp8   0/1       ContainerCreating   0          16s       <none>          k8s-node1
image-deployment-58b646ffb6-d4sl7   1/1       Terminating         0          11m       10.10.169.131   k8s-node2

等待一段时间之后,v2版本ready之后

root@k8s-master:~# kubectl get pod  -owide
NAME                                READY     STATUS    RESTARTS   AGE       IP              NODE
image-deployment-55cb946d47-7tzp8   1/1       Running   0          1m        10.10.36.119    k8s-node1
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v2
hostname: image-deployment-55cb946d47-7tzp8

成功更新为v2

(2)使用patch命令

首先找到deployment:

root@k8s-master:~# kubectl get deploy
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
image-deployment   1         1         1            1           20m

通过patch更新:

root@k8s-master:~# kubectl patch deployment image-deployment --patch '{"spec": {"template": {"spec": {"containers": [{"name": "nginx","image":"registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v1"}]}}}}'
deployment.extensions "image-deployment" patched

等待一段时间之后:

root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v1
hostname: image-deployment-58b646ffb6-hbzk9

通过patch更新之后,镜像版本更新回v1

(3)使用set image命令

使用set image命令将镜像版本更新到v2

root@k8s-master:~# kubectl set image deploy image-deployment *=registry.cn-beijing.aliyuncs.com/mrvolleyball/nginx:v2
root@k8s-master:~# curl http://10.254.240.225:10080
----------
version: v2
hostname: image-deployment-55cb946d47-zsdc6

等待一段时间之后,版本又更新到v2

五、小结

● 本文介绍了3种方法更新镜像版本,分别是:配置文件;patch方式;set image方式



至此,本文结束
在下才疏学浅,有撒汤漏水的,请各位不吝赐教...

转载于:https://www.cnblogs.com/MrVolleyball/p/10315698.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新k8s镜像版本的三种方式 的相关文章

  • (5)minikube玩转k8s集群之访问pod里的服务

    配套视频教程 1 Minikube介绍 简单说 创建k8s集群很麻烦 minikube可以让我们快速搭建一个k8s集群用于学习 Minikube 是一种可以让您在本地轻松运行 Kubernetes 的工具 Minikube 在笔记本电脑上的
  • Kubernetes Pod 故障归类与排查方法

    1 Pod 概念 Pod是kubernetes集群中最小的部署和管理的基本单元 协同寻址 协同调度 Pod是一个或多个容器的集合 是一个或一组服务 进程 的抽象集合 Pod中可以共享网络和存储 可以简单理解为一个逻辑上的虚拟机 但并不是虚拟
  • 局域网使用kubeadm安装高可用k8s集群

    主机列表 ip 主机名 节点 cpu 内存 192 168 23 100 k8smaster01 master 2核 2G 192 168 23 101 k8smaster02 node 2核 2G 192 168 23 102 k8sma
  • Harbor镜像仓库搭建

    1 安装docker comprose docker comprose是docker容器批量管理工具 curl L https get daocloud io docker compose releases download 1 25 0
  • Liveness、Readiness 和 Startup Probes

    liveness apiVersion v1 kind Pod metadata labels test liveness name liveness exec spec containers name liveness image k8s
  • kubernetes08(kubernetes的资源对象)

    文章目录 kubernetes08 kubernetes的资源对象 一 引子 二 kubernetes资源 一 kubernetes的资源对象作用 二 kubernetes的资源对象分类 三 kubernetes资源清单 一 kubenet
  • k8s-3:集群的三种网络

    k8s集群一共有三种网络模型 Node IP Node节点的IP地址 即物理网卡的IP地址 Pod IP Pod的IP地址 即docker容器的IP地址 此为虚拟IP地址 Cluster IP Service的IP地址 此为虚拟IP地址 N
  • Deployment Controller 典型使用场景

    1 重新调度 Rescheduling 不管想运行 1 个副本还是 1000 个副本 副本控制器都能确保指定数量的副本存在于集群中 即使发生节点故障或 Pod 副本被终止运行等意外状况 2 弹性伸缩 Scaling 手动或者通过自动扩容代理
  • 初学容器:Docker

    1 环境初始化 1 1 安装git vim curl等常用工具 sudo apt update sudo apt install y git vim curl jq 1 2 ubuntu是不支持远程连接的 需要安装ssh服务 sudo ap
  • k8s中Endpoint是什么

    在Kubernetes K8s 中 Endpoint是一种资源对象 用于表示一个Service所依赖的真实后端节点的Pod信息 它存储了一组IP地址和端口号的列表 这些IP地址和端口号对应着提供相同服务的Pod实例 主要作用 Endpoin
  • k8s之nginx-ingress做tcp或udp的4层网络负载

    检查nginx ingress是否开启tcp udp转发 test test02 ingress kubectl get pod n ingress nginx o yaml grep i configmap configmap POD N
  • kube-flannel.yml

    flannel作为k8s的集群中常用的网络组件 其yml文件的获取 建议去github中获取 具体的获取方式如下 apiVersion policy v1beta1 kind PodSecurityPolicy metadata name
  • CentOS 7 下 minikube 部署 && 配置

    CentOS 7 下 minikube 部署 配置 文章目录 CentOS 7 下 minikube 部署 配置 下载 安装 下载安装脚本 安装 minikube 启动 minikube 环境 安装 kubectl 工具 启动 miniku
  • k8s-node节点未找到flannel网络

    k8s node节点的flannel的IP地址不正确 问题描述 问题分析 1 检查node节点的cni和flannel网卡地址 2 检查master节点的flannel服务 如何重置flannel网络 1 删除node节点 master 2
  • k8备份与恢复-Velero

    简介 Velero 是一款可以安全的备份 恢复和迁移 Kubernetes 集群资源和持久卷等资源的备份恢复软件 Velero 实现的 kubernetes 资源备份能力 可以轻松实现 Kubernetes 集群的数据备份和恢复 复制 ku
  • 决战k8s,Kubernetes、Master节点部署组件,部署kube-proxy、测试、部署Dashboard(Web UI)、超细详解 ,安装篇③完结篇

    文章目录 下面这些操作在master节点完成 创建kubeconfig文件 创建kube proxy kubeconfig文件 下面这些操作在node节点完成 俩个节点上面拉取镜像 systemd管理kubelet组件 部署kube pro
  • K8S暴露端口-dubbo应用远程Debug

    1 Dockerfile增加环境变量 ENV JAVA OPTS Xdebug Xrunjdwp transport dt socket address 9901 server y suspend n 2 暴露端口 template ser
  • kubernetes报错Error from server (AlreadyExists): error when creating "kubernetes-dashboard.yaml": serv

    在执行 kubectl apply f kubernetes dashboard yaml 报错 Error from server AlreadyExists error when creating kubernetes dashboar
  • k8s部署Prometheus抓取pods的metrics

    1 暴露pods给Prometheus抓取 spec replicas app replicas template metadata annotations prometheus io scrape true prometheus io p
  • flannel和calico区别

    k8s网络模式 Flannel数据包在主机间转发是由backend实现的 目前已经支持UDP VxLAN host gw等多种模式 VxLAN 使用内核中的VxLAN模块进行封装报文 也是flannel推荐的方式 host gw虽然VXLA

随机推荐

  • 多项式与连分式函数的计算

    2019独角兽企业重金招聘Python工程师标准 gt gt gt include 34 stdafx h 34 include lt stdlib h gt include lt stdio h gt include lt math h
  • iPad适合写作吗

    我一直感觉对着电脑不利于思考 xff0c 当需要纯粹的思考时 xff0c 我习惯让视线离开屏幕 xff0c 起身走动两圈 xff0c 再用纸和笔整理思路 xff0c 想清楚后 xff0c 开始动手编码 双手端着iPad时 xff0c 似乎也
  • Dell服务器硬件,RAID等查询和维护软件OMSA

    Dell服务器硬件 RAID等查询和维护软件OMSA 2010 09 10 14 34 OMSA OpenManage Server Administrator 是Dell主机的硬件检测和维护软件 OMSA OpenManage 下载地址
  • GVIM设置背景颜色

    首先找到GVim的安装目录 xff0c 在安装目录下你可以发现一个 vimrc文件 使用文本编辑器打开后在里面添加两行代码即可 xff1a 代码如下 set gfn 61 Courier New h14 colorscheme torte
  • 实战ASP.NET访问共享文件夹(含详细操作步骤)

    博客园找找看 xff08 http zzk cnblogs com xff09 的索引文件占用空间太大 xff0c 需要移至另外一台服务器 xff0c 所以要解决 在ASP NET中通过共享文件夹访问索引文件 的问题 假设找找看的ASP N
  • Linux 后台开发工作中常用的开源库

    后台开发 xff0c 语言主要是 c 和 c 43 43 这里简单罗列一下工作中用的很频繁的那些开源软件 1 OpenSSL openssl OpenSSL 是一个安全套接字层密码库 xff0c 囊括主要的密码算法 常用的密钥和证书封装管理
  • [转载]三款SDR平台对比:HackRF,bladeRF和USRP

    这篇文章是 Taylor Killian 13年8月发表在自己的博客上的 他对比了三款平价的SDR平台 xff0c 认为这三款产品将是未来一年中最受欢迎的SDR平台 我觉得这篇文章很有参考价值 xff0c 简单翻译一份转过来 原文在这里 x
  • VINS-Mono运行与评测

    VINS Mono运行与评测 1 修改VINS mono轨迹保存代码1 1 修改 visualization cpp1 2 修改 pose graph cpp1 3 修改VINS mono运行参数 2 EVO 显示轨迹2 1 分析单条轨迹2
  • linux 虚拟机串口通信,单片机和虚拟机里的Linux进行串口通信

    最近在做单片机的火焰传感器采集数据并且并且将危险信息发送给PC端的Linux 一直卡在Linux端的 xff0c 所以 xff0c 做了各种尝试 xff0c 参考了网上一篇大神的代码 xff0c 终于把自己的东西弄了出来 先说明设备吧 xf
  • ArUco----一个微型现实增强库的介绍及视觉应用(二)

    ArUco 一个微型现实增强库的介绍及视觉应用 xff08 二 xff09 ArUco 一个微型现实增强库的介绍及视觉应用 xff08 二 xff09 一 第一个ArUco的视觉应用 首先介绍第一个视觉应用的Demo xff0c 这个应用场
  • ssh连接失败,排错经验

    一 场景描述 ssh连接服务器 xff0c 发现连接失败 xff0c 但是对应服务器的ip能够ping通 场景 xff1a root 64 yl web ssh root 64 10 1 101 35 ssh exchange identi
  • 什么是真正的程序员?

    什么是真正的程序员 这篇文章的原文来自 xff1a A Little Printf Story 作者仿照 小王子 中的情节 xff0c 通过小printf遇见的不同类型的程序员 xff0c 最后悟出什么才是真正的程序员 xff01 第一次翻
  • gpio引脚介绍 树莓派3b_树莓派介绍

    树莓派介绍 陈拓 chentuo 64 ms xab ac cn 2018 05 16 2018 05 16 1 什么是树莓派 xff08 Raspberry Pi xff09 树莓派是由树莓派基金会研发的一种只有信用卡大小的单板机电脑 x
  • 解析kubernetes架构

    一 简介 xff1a kubernetes是一个开源的容器管理工具 xff0c 是基于GO语言开实现的 xff0c 轻量级和便携式的应用 xff0c 可以把kubernetes cluster在linux主机上部署 管理和扩容docker容
  • STM32串口/RS232/RS485

    1 串口引脚 xff0c 如果是异步通讯将UART CLK共地即可 xff0c 如果同步需要时钟 a UART RX 数据接收引脚 b UART TX 数据发送引脚 c UART CLK 时钟引脚 2 UART描述 为全双工 xff0c 异
  • 又是一年年终总结

    起 这篇年终总结草稿是在12 03起的 xff0c 那是突然之间感觉到今年不大平常 xff0c 可以考虑写个年终总结来记录一下 xff0c 但是谁能料到今年真的是太不平常了 xff0c 到了12月中 xff0c 公司就解散了 xff0c 所
  • 开源自主导航小车MickX4(七)cartographer 室外3D建图

    开源自主导航小车MickX4 xff08 七 xff09 cartographer 室外3D建图 1 cartographer 3D建图demo1 1 cartographer 安装1 2 3D数据集建图1 3 3D定位 2 小车上的3D建
  • FreeRTOS+Trace(04) Xilinx Microblaze平台使用FreeRTOS+Trace

    本章节以 Xilinx Microblaze 平台为例 介绍如何在该目标平台上使用 FreeRTOS Trace 的快照记录功能 所使用的 Xilinx SDK 版本为 2018 2 并在 SDk 中已经创建好了一个目标平台为 Microb
  • Git子模块相关

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 添加子模块 如果项目分的模块比较多 xff0c 而且对每个模块需要独立管理的话 xff0c 子模块就派上用场了 每一个子模块都是一个独立的git仓库 xff0c 有点类似于
  • 更新k8s镜像版本的三种方式

    一 知识准备 更新镜像版本是在k8s日常使用中非常常见的一种操作 xff0c 本文主要介绍更新介绍的三种方法 二 环境准备 组件版本OSUbuntu 18 04 1 LTSdocker18 06 0 ce 三 准备镜像 首先准备2个不同版本