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

Kubernetes pod 控制器 之 Deployment

1.基本概念

 

 新版本选择器必须要选择的

说白了就是,我匹配的你必须要有,多了不管,少了不干,要是匹配标签写两个,必须两个全全匹配

2.实验一

创建 1.deployment.yaml文件 

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: myapp-deploy
 name: myapp-deploy
spec:
 replicas: 1
 selector:
  matchLabels:
   app: myapp-deploy
 template:
  metadata:
   labels:
    app: myapp-deploy
  spec:
   containers:
     - image: wangyanglinux/myapp:v1.0
       name: myapp
kubectl apply -f 1.deployment.yaml

不写replicas 默认值为1

kubectl get deployment [deployment名] -o yaml

将deployment的详细清单打印出来

修改副本数量

kubectl scale deployment [deployment名字] --replicas=10
kubectl scale deployment myapp-deploy --replicas=10

当前版本是1.0版

我们想升级为2.0

 

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: myapp-deploy
 name: myapp-deploy
spec:
 replicas: 1
 selector:
  matchLabels:
   app: myapp-deploy
 template:
  metadata:
   labels:
    app: myapp-deploy
  spec:
   containers:
     - image: wangyanglinux/myapp:v2.0
       name: myapp

直接将版本改为2.0

kubectl apply -f 1.deployment.yaml

就更新了

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: myapp-deploy
 name: myapp-deploy
spec:
 selector:
  matchLabels:
   app: myapp-deploy
 template:
  metadata:
   labels:
    app: myapp-deploy
  spec:
   containers:
     - image: wangyanglinux/myapp:v3.0
       name: myapp

 执行

kubectl replace -f 1.deployment.yaml

重新替换 就变成一个 了 

版本号 为 3.0

对比我现在的资源清单 与 我已经运行的资源清单运行出来的对象 发生了哪些变化 

kubectl diff -f 1.deployment.yaml

   

deployment 下面管控这 rs 由rs 去管理pod 当实现更新的时候 他会滚动更新 来逐渐替换下面的pod这就是 apply的原理

 金丝雀部署 黑白 蓝绿部署

​​​​左边这个rs 是不会删除的 如果需要回滚到上一个版本 它可以利用上一个版本的 rs 回滚到上一个版本

deployment 实际本质 就是 管理rs 滚动更新 或者滚动回滚 

如果 用RS 只能 全部重新创建 ,不能实现滚动回滚

 

1.kubectl create -f deployment.yaml --record

--record 基于这个一个deployment 资源清单 去实现我们创建  并记录我们当前的命令 在我回滚的时候  给到一个信息提示的作用 现在也可以不加

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: deployment-demo
 name: deployment-demo
spec:
 replicas: 5
 selector:
  matchLabels:
   app: deployment-demo
 template:
  metadata:
   labels:
    app: deployment-demo
  spec:
   containers:
     - image: wangyanglinux/myapp:v1.0
       name: deployment-demo-container

我们改成 2.0版本

apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
  app: deployment-demo
 name: deployment-demo
spec:
 replicas: 5
 selector:
  matchLabels:
   app: deployment-demo
 template:
  metadata:
   labels:
    app: deployment-demo
  spec:
   containers:
     - image: wangyanglinux/myapp:v2.0
       name: deployment-demo-container

 create 报错

 因为已经创建过了 不允许重复创建

资源对象已经有了 就不会去创建的

先基于此文件删除对应的deployment对象

kubectl delete -f 2.deployment.yaml

再看看apply命令

kubectl apply -f 2.deployment.yaml

 

 2.scale 改变pod 的副本数量 扩缩容

 3.autoscale


[root@k8s-master01 deployment]#  kubectl top pod
error: Metrics API not available
现在暂时没办法测

 查看pod的资源使用情况

kubectl top pod

4.set image

更新容器的镜像 

kubectl set image 类型/类型名 容器名=镜像名

 创建一个service 名字 会匹配 app= {service名} 的pod 做对应的负载均衡

 kubectl create svc clusterip deployment-demo --tcp=80:80

现在版本已经变成 25%~25% 

kubectl get deployment deployment-demo -o yaml

 

Recreate:适合可以容忍短暂停机的场景,更新速度快,但会有停机时间。 

 

相关文章:

  • pytorch中的基础数据集
  • CSS引入方式、字体与文本
  • Flask中使用WTForms处理表单验证
  • 前端学习记录:解决路由缓存问题
  • 东芝2323AMW复印机安装纸盒单元后如何添加配件选项
  • 【商城实战(38)】Spring Boot:从本地事务到分布式事务,商城数据一致性的守护之旅
  • 嵌入式系统中的Board Support Package (BSP)详解:以Xilinx Zynq为例
  • AndroidStudio+Android8.0下的Launcher3 导入,编译,烧录,调试
  • BSP、设备树和HAL的关系:以Xilinx Zynq为例与PC BIOS的对比
  • nginx请求限流设置:常见的有基于 IP 地址的限流、基于请求速率的限流以及基于连接数的限流
  • 结构体定义与应用
  • 查看分析日志文件、root密码不记得了,那应该怎么解决这些问题
  • Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数
  • SGMEA: Structure-Guided Multimodal Entity Alignment
  • 【AWS入门】AWS云计算简介
  • 文档搜索引擎
  • PyTorch使用-张量数值计算
  • element-plus中DatePicker 日期选择器组件的使用
  • 【GPT入门】第24课 langfuse介绍
  • An Introduction to Stable Diffusion
  • vuejs做视频网站/推广网站的方法
  • 自己做网站怎么加定位/直通车怎么开效果最佳
  • 网站关键词标签/seo优化服务公司
  • 网站开发的工作流程/网站优化排名易下拉软件
  • 网站免费建立/湛江百度seo公司
  • 万盛经开区建设局官方网站/无锡网站排名公司