K8s管理应用生命周期-Deployment篇

news2024/10/3 4:38:36

在k8s中部署应用程序流程

1、使用Deployment部署Java应用

kubectl create deployment web --image=XXX/java-demo

kubectl get deployment,pods

2、使用Service发布Pod

kubectl expose deployment web --port=80 --type=NodePort --target-port=8080 --name=web

kubectl get service

服务编排:YAML文件格式说明

    缩进表示层级关系

    不支持制表符“tab”缩进,使用空格缩进

    通常开头缩进2个空格

    字符后缩进1个空格

    字符后缩进1个空格,如冒号、逗号等

    “---”表示YAML格式,一个资源(文件) 的开始

    "#" 注释

服务编排:YAML文件创建资源对象

创建应用:

发布应用:

标签定义:

标签:标记、过滤(-L) 、关联(主要体现在deployment、pod、service、三者标签保持一致)

官网创建Deployment应用案例

Deployments | Kubernetes

kubectl create     #只创建

kubectl apply      #创建、更新



kubectl apply -f xxx.yaml    #部署

kubectl delete -f xxx.yaml    #卸载

生成yaml文件方法

用create命令生成

kubectl create deployment nginx --image=nginx:1.16 -o yaml --dry-run=client > my-deploy.yaml

通过已有资源用get命令导出

kubectl get deployment  nginx -o yaml > my-deploy.yaml

Pod容器的字段拼写题诗

kubectl explain pods.spec.containers

kubectl explain deployment

Deployment:介绍

Deployment是最常用的K8s工作负载控制器(Workload Controllers),是K8s的一个抽象概念,用于更高级层级对象,部署和管理Pod。

其他控制器还有DaemonSet、StatefulSet等。

Deployment的主要功能

管理Pod和ReplicaSet

具有上线部署、副本设定、滚动升级、回滚等功能

应用场景:网站、API、微服务

Deployment:应用生命周期管理

第一步:部署应用

方法一:编写yaml文件部署:kubectl apply -f xxx.yaml

方法二:kubectl create deployment web --image=nginx:1.6 --replicas=3

第二步:应用升级

kubectl apply -f xxx.yaml

kubectl set image deployment/web nginx=nginx:1.17

kubectl edit deployment/web    #使用系统编辑器打开

应用升级分类

滚动发布    #批量分级

蓝绿发布    #进行分组升级

灰度发布:金丝雀、A/B    #逐步升级

滚动升级:

    滚动发布是指每次只生级一个或多个服务,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。

滚动升级在k8s中的实现:

1个Deployment

2个ReplicaSet

ReplicaSet控制器

ReplicaSet:副本集,主要维护Pod副本数量,不断对比当前Pod数量与期望Pod数量。

主要用途:Deployment每次发布都会创建一个RS作为记录,用于实现滚动升级和回滚

查看滚动升级过程

kubectl describe deployment web

ReplicaSet控制器

ReplicaSet:

  • 副本集,主要维护Pod副本数量, 不断对比当前Pod数量与期望Pod数量。

ReplicaSet用途:

  • Deployment每次发布都会创建一个RS作为记录,用于实现滚动升级和回滚。

查看RS记录

kubectl get rs

版本对应RS记录

kubectl rolout history deployment web

Deployment:应用实例扩容和缩容

水平扩容(启动多实例,提高并发)

修改yaml里replicas值,再apply

kubectl scale deployment web --replicas=10

注意:replicas参数控制Pod副本数量

Deployment:应用发布失败回滚

回滚(项目升级失败恢复到正常版本)

kubectl rollout history deployment/web    #查看历史发布版本

kubectl rollout undo deployment/web    #回滚上一个版本

kubectl rollout undo deployment/web --to-revision=2    #回滚历史指定版本

注:回滚是重新部署某一次部署时的状态,即当时版本所有配置

rollout 查看历史版本

rs 可以看到历史版本号与rs对应关系,从rs可以再得知当前对应的镜像

# 获取发布版本与对应镜像

kubectl describe $(kubectl get rs -o name -n test |grep "web1-") -n test |grep -E "revision:|Image:"

# 回滚到上一个版本或者指定版本

kubectl rollout undo deployment web1 -n test

kubectl rollout undo deployment web1 --to-revision=1 -n test

常规健康检查方法:端口监听、运行进程、HTTP状态码、端口探测

Deployment:删除

kubectl delete deploy/web

kubect delete svc/web

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347764.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入【虚拟列表】动态高度、缓冲、异步加载... Vue实现

前言🎀 在前文中我们了解到: 1.在某种特殊场景下,我们需要将 大量数据 使用不分页的方式渲染到列表上,这种列表叫做长列表。 2.因为事件循环的机制,一次性大量的渲染耗时较长,并且渲染期间会阻塞页面交互…

Centos安装OpenResty

文章目录一. OpenResty是什么二. OpenResty的安装1. 安装开发库2. 安装OpenResty仓库3. 安装OpenResty4. 安装opm工具5. 目录结构6. 配置nginx的环境变量7. 启动和运行8. 配置文件修改三. 小案例1. 案例说明2. OpenResty监听请求3. 编写业务代码4. 获取请求参数一. OpenResty是…

深度解析React性能优化API

性能优化一直是前端领域讨论的一个热门问题,但在平时沟通及code review过程中发现很多人对于React中性能优化理解很模糊,讲不清楚组件什么时候更新,为什么会更新,关于React性能优化的文章虽然比较多,但大多数都是在罗列…

【C/C++】内存管理详解

目录内存布局思维导图1.C/C内存分布数据段:栈:代码段:堆:2.C语言中动态内存管理方式3.C内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型4.operator new 与 operator delete函数5.new和delete的实现原理5.1内置类型5.2自定…

ChatGPT is not all you need,一文看尽SOTA生成式AI模型:6大公司9大类别21个模型全回顾(二)

文章目录ChatGPT is not all you need,一文看尽SOTA生成式AI模型:6大公司9大类别21个模型全回顾(二)Image-to-Text 模型FlamingoVisualGPTText-to-Video 模型PhenakiSoundifyText-to-Audio 模型AudioLMJukeboxWhisperChatGPT is n…

protoc-gen-go的使用和问题

最近 在网上查看关于proto文件编译为golang代码的文章,发现遇到的问题好多都是文件目录不对,参数不对的情况,这里主要解决,使用 不同版本的proto-gen-go 参数不一样和找不到文件问题 安装protoc-gen-go google.golang.org仓库版本…

互联网新时代要来了(二)什么是AIGC?

什么是AIGC? 最近,又火了一个词“**AIGC”**2022年被称为是AIGC元年。那么我们敬请期待,AIGC为我们迎接人工智能的下一个时代。 TIPS:内容来自百度百科、知乎、腾讯、《AIGC白皮书》等网页 什么是AIGC?1.什么是AIGC?…

Vue3篇.01-简介及基本使用,项目创建方式, 模板语法, 事件监听, 修饰符

一.简介1.概念Vue 是一款用于构建用户界面的 JS框架, 基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型, 高效地开发用户界面。渐进式框架, 适应不同需求进行开发。两个核心功能:声明式…

在云原生的趋势下,不掌握Go语言可能不太行

云原生技术已经是不可逆的趋势 云原生技术使组织能够在公共云、私有云和混合云等现代动态环境中构建和运行可扩展的应用程序,其中容器、服务网格、微服务、不可变基础设施和声明式 API 等都是云原生的重要技术内容。 这些新技术的出现使松散耦合的系统具有弹性、可管理和可观…

FPGA基于VDMA实现任意分辨率视频输出显示,高度贴近真实项目,提供工程源码和技术支持

目录1、前言2、任意分辨率视频输出理论基础3、VDMA实现数据缓存4、工程1:Kintex7使用VDMA5、工程2:Zynq7100使用VDMA6、上板调试验证并演示7、福利:工程代码的获取1、前言 之前写过一篇FPGA纯verilog实现任意分辨率视频输出显示,…

hume项目k8s的改造

hume项目k8s的改造 一、修改构建目录结构 1、在根目录下添加build-work文件夹 目录结构如下 [rootk8s-worker-01 build-work]# tree . . ├── Dockerfile ├── hume │ └── start.sh └── Jenkinsfile2、每个文件内容如下 Dockerfile FROM ccr.ccs.tencentyun…

数据结构与算法基础(王卓)(10):案例分析与实现(多项式;稀疏多项式;图书管理系统(略);)

题干: 用线性表和链表的方式,分别实现(稀疏)多项式的 定义(构造框架)创建加减乘(多项式)线性表的创建: (略,相较于其他操作难度不,以…

亚马逊真人测评好还是自养号测评好 深度剖析讲解

关于真人测评和自养号哪个好,一直都是老生常谈的问题了。实际操作下来到底哪一个更好呢?今天陈哥给大家详细分析一下。 先说自养号。所谓的自养号,说白了就是通过搭建国外的真实买家环境,然后购买资料自己注册的账号。 很多工作…

Java300集,学完即可就业

学习java首先我们要明白Java是什么?Java是一门面向对象的编程语言,不仅吸收了C语言的各种优点,还摒弃了C里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表&a…

K8s 架构简介(一)

一、前言 在开始学习K8s之前,让我们对容器有一个基本的了解 1.1 什么是容器 一个容器镜像是一个可运行的软件包,其中包含了一个完整的可执行程序,包括代码和运行时需要应用、系统库和全部重要设置的默认值。 通过将应用程序本身&#xff…

虹科新闻|虹科与Telco Systems正式建立合作伙伴关系

近日,虹科与美国Telco Systems达成战略合作,虹科正式成为Telco Systems在中国区域的认证授权代理商。未来,虹科将携手Telco Systems,共同为新一代边缘计算和企业网络提供创新通信软件产品。虹科及Telco Systems双方都对彼此的合作…

C语言(逻辑运算符和条件运算符)

目录 一.逻辑运算符 1.原理 2.等级排序 3.求值顺序 二.条件运算符:? 一.逻辑运算符 1.原理 && 与(条件都为真,才为真) || 或(一个条件为真,才为真) ! 非(条件为假&…

【R语言(二):Nomogram(诺莫图/列线图)绘制 / R语言逻辑回归分析】

R语言(二):Nomogram(诺莫图/列线图)绘制 1、基本概念 Nomogram,中文常称为诺莫图或者列线图。简单的说是将Logistic回归或Cox回归的结果进行可视化呈现。它根据所有自变量回归系数的大小来制定评分标准,给每个自变量的每个取值水平一个评分&…

怎样的目标管理能真正实现目标?做到这3点就对了

目标应该是每个人人生中接触最多的一样东西了,大到分分钟几百万上下的项目目标,小到一次考试。目标能不能完成,关键还是看目标管理有没有做好,做到下面这三点,不论是在职场中管团队,还是在生活中管个人&…

十四、平衡二叉树

1、看一个案例(说明二叉排序树可能的问题) 给你一个数列{1,2,3,4,5,6},要求创建一棵二叉排序树(BST),并分析问题所在。 上面二叉排序树存在问题分析: 左子树全部为空,从形式上看&…