当前位置: 首页 > news >正文

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

在k8s中部署应用程序流程

1、使用Deployment部署Java应用

kubectl create deployment web --image=XXX/java-demokubectl get deployment,pods

2、使用Service发布Pod

kubectl expose deployment web --port=80 --type=NodePort --target-port=8080 --name=webkubectl 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.containerskubectl 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.yamlkubectl set image deployment/web nginx=nginx:1.17kubectl 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 testkubectl rollout undo deployment web1 --to-revision=1 -n test

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

Deployment:删除

kubectl delete deploy/webkubect delete svc/web

http://www.lryc.cn/news/7842.html

相关文章:

  • 类和对象(下)(二)
  • MapBox-draw绘制插件的使用教程(含修改样式和方法封装)
  • 使用 ONLYOFFICE 转换 API 构建在线文档转换器
  • Kubernetes的负载均衡方案:MetalLB
  • 【项目】Vue3+TS CMS 基本搭建相关配置
  • ros2 dds
  • chain33架构介绍
  • Lucene学习笔记
  • 动态规划【Day01】| 669 · 换硬币、114 · 不同的路径、116 · 跳跃游戏
  • 1.Hello Python
  • C语言实例|编写C程序在控制台打印余弦曲线
  • 《Hadoop篇》------大数据及Hadoop入门
  • TCP核心机制详解(三)
  • 最易上手的爬虫请求库:Requests核心功能速览(下)
  • 生产故障|Kafka ISR频繁伸缩引发性能急剧下降
  • c++终极螺旋丸:₍˄·͈༝·͈˄*₎◞ ̑̑“类与对象的结束“是结束也是开始
  • 【Python--torch.nn.functional】F.normalize用法 + 代码说明
  • 【算法题】1887. 使数组元素相等的减少操作次数
  • GD库图片裁剪指定形状解决办法(PHP GD库 海报)
  • redis的简介及应用场景
  • 2、HAL库利用滴答定时器systick(1ms中断)实现时间计数戳
  • Spring入门学习
  • webpack(4版本)使用
  • Linux安装ElasticSearch
  • Linux中C语言编程经验总结
  • jvisualvm工具使用
  • redis五大IO网络模型、内存回收
  • 【C/C++】内存管理详解
  • Android ProcessLifecycleOwner 观察进程生命周期
  • 如何编写一个 npm 插件?