Kubernetes--Deployment使用
一. Replication Controller与Deployment的区别
1. Replication Controller
Replication Controller为Kubernetes的一个核心内容,应用托管到Kubernetes之后,Replication Controller需要保证应用能够持续的运行,主要的功能如下:
1)确保pod数量:它会确保Kubernetes中有指定数量的Pod在运行。如果少于指定数量的pod,Replication Controller会创建新 的,反之则会删除掉多余的以保证Pod数量不变。
2)确保pod健康:当pod不健康,运行出错或者无法提供服务时,Replication Controller也会杀死不健康的pod,重新创建新的。
3)弹性伸缩 :在业务高峰或者低峰期的时候,可以通过Replication Controller动态的调整pod的数量来提高资源的利用率。同时,配置相应的监控功能(Hroizontal Pod Autoscaler),会定时自动从监控平台获取Replication Controller关联pod的整体资源使用情况,做到自动伸缩。
4)滚动升级:滚动升级为一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定,在初始化升级的时候就可以及时发现和解决问题,避免问题不断扩大。
2. Deployment
Deployment同样为Kubernetes的一个核心内容,主要职责同样是为了保证pod的数量和健康,90%的功能与Replication Controller完全一样,可以看做新一代的Replication Controller。但是,它又具备了Replication Controller之外的新特性:
1)Deployment继承了Replication Controller的全部功能。
2)可以查看Deployment的升级详细进度和状态。
3)回滚:当升级pod镜像或者相关参数的时候发现问题,可以使用回滚操作回滚到上一个稳定的版本或者指定的版本。
4)版本记录: 每一次对Deployment的操作,都能保存下来,给予后续可能的回滚使用。
5)暂停和启动:对于每一次升级,都能够随时暂停和启动。
6)多种升级方案:Recreate:删除所有已存在的pod,重新创建新的; RollingUpdate:滚动升级,逐步替换的策略,同时滚动升级时,支持更多的附加参数,例如设置最大不可用pod数量,最小升级间隔时间等等。
二. Deployment功能全部演示一遍
1. 演示文件docker-project.yaml
apiVersion: apps/v1 #当前格式的版本
kind: Deployment #当前创建资源的类型, 当前类型是Deployment
metadata: #当前资源的元数据name: docker-project #当前资源的名字 是元数据必须的项annotations:kubernetes.io/change-cause: "初始化版本v1" #记录到revision中的内容
spec:selector:matchLabels:app: web_server #是当前Deployment的规格说明replicas: #指当前创建的副本数量 默认不填 默认值就为‘1’template: #定义pod的模板metadata: #当前pod的元数据labels: #至少顶一个labels标签,可任意创建一个 key:valueapp: web_serverspec: #当前pod的规格说明containers: #容器- name: my-docker-project #是容器的名字容器名字是必须填写的image: 192.168.214.128:5000/docker-project:v1 #镜像 镜像的名字和版本imagePullPolicy: Always #拉取策略: Always--总是拉取 IfNotPresent--默认值,本地有则使用本地镜像,不拉取 Never--只使用本地镜像,从不拉取ports:- containerPort: 8080livenessProbe:httpGet:path: api/heathyport: 8080---kind: Service
apiVersion: v1
metadata:name: docker-project-service
spec:type: NodePortports:- port: 8080targetPort: 8080nodePort: 31000selector:app: web_server
2. 执行docker-project.yaml文件
kubectl apply -f docker-project.yaml
kubectl get deployment
kubectl get pod
kubectl get services;
执行结果
查看详细的pod信息
kubectl get pods --show-labels
执行结果
页面查看结果
3. 增加滚动升级
1)升级策略:
minReadySeconds: 5
strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1
2)参数含义
minReadySeconds:Kubernetes在等待设置的时间后才进行升级如果没有设置该值,Kubernetes会假设该容器启动起来后就提供服务了如果没有设置该值,在某些极端情况下可能会造成服务服务正常运行
maxSurge:升级过程中最多可以比原先设置多出的POD数量例如:maxSurage=1,replicas=5,则表示Kubernetes会先启动1一个新的Pod后才删掉一个旧的POD,整个升级过程中最多会有5+1个POD。
maxUnavaible:升级过程中最多有多少个POD处于无法提供服务的状态当maxSurge不为0时,该值也不能为0例如:maxUnavaible=1,则表示Kubernetes整个升级过程中最多会有1个POD处于无法服务的状态。
3)修改后的文件:
apiVersion: apps/v1 #当前格式的版本
kind: Deployment #当前创建资源的类型, 当前类型是Deployment
metadata: #当前资源的元数据name: docker-project #当前资源的名字 是元数据必须的项annotations:kubernetes.io/change-cause: "将v1版本升级到v2" #记录到revision中的内容
spec:minReadySeconds: 5strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 1selector:matchLabels:app: web_server #是当前Deployment的规格说明replicas: #指当前创建的副本数量 默认不填 默认值就为‘1’template: #定义pod的模板metadata: #当前pod的元数据labels: #至少顶一个labels标签,可任意创建一个 key:valueapp: web_serverspec: #当前pod的规格说明containers: #容器- name: my-docker-project #是容器的名字容器名字是必须填写的image: 192.168.214.128:5000/docker-project:v2 #镜像 镜像的名字和版本imagePullPolicy: Always #拉取策略: Always--总是拉取 IfNotPresent--默认值,本地有则使用本地镜像,不拉取 Never--只使用本地镜像,从不拉取ports:- containerPort: 8080livenessProbe:httpGet:path: api/heathyport: 8080---kind: Service
apiVersion: v1
metadata:name: docker-project-service
spec:type: NodePortports:- port: 8080targetPort: 8080nodePort: 31000selector:app: web_server
4)执行docker-project.yaml文件
kubectl apply -f docker-project.yaml
执行结果
5)查看升级状态
kubectl rollout status deployment docker-project
执行结果(节点比较少,升级过程没有体现出来)
6)暂停升级
kubectl rollout pause deployment <deployment>
7)继续升级
kubectl rollout resume deployment <deployment>
8)页面查看升级结果:
9)查看升级历史
kubectl rollout history deployment docker-project
执行结果:
10)查看deployment信息
kubectl describe deployment docker-project
执行结果:
11)回滚到上一个版本
kubectl rollout undo deployment docker-project
执行结果:
12) 回滚到指定版本
kubectl rollout undo deployment docker-project --to-revision=1
执行结果:
13) 删除deployment
kubectl delete deployment docker-project
Kubernetes--Deployment使用相关推荐
- WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS
2019独角兽企业重金招聘Python工程师标准>>> WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS The con ...
- 容器编排技术 -- Kubernetes Deployment
容器编排技术 -- Kubernetes Deployment 1 创建 Deployment 1.1 Pod-template-hash label 2 更新Deployment 2.1 Rollo ...
- kubernetes deployment,pod 实践
本文同步gitlab 更新 https://github.com/lifalin0802/falin_repos/blob/master/kubernetes_manual.md 创建自主pod ku ...
- 2021完整版:Kubernetes Deployment故障排除的可视化指南
原文发表于kubernetes中文社区,为作者原创翻译 更多kubernetes文章,请多关注kubernetes中文社区 文章目录 连接Deployment 和 Service 连接 Service ...
- Kubernetes Deployment控制器(二十)
前面我们学习了 ReplicaSet 控制器,了解到该控制器是用来维护集群中运行的 Pod 数量的,但是往往在实际操作的时候,我们反而不会去直接使用 RS,而是会使用更上层的控制器,比如我们今天要学习 ...
- Kubernetes Deployment
什么是Deployment? Deployment提供了运行Pod能力,并且为Pod提供滚动升级.伸缩.副本等功能,一般用于运行无状态的应用.目前建议使用Deployment来代替RelicaSet及 ...
- Kubernetes Deployment与Replica Set
Deployment相对于RC的优势 RS与Deployment主要用于替代RC.RS的全称为Replica Set.相对于RC,RS与Deployment的优势如下: RC只支持基于等式的selec ...
- Kubernetes:全面了解 Deployment
本文为作者的 Kubernetes 系列电子书的一部分,电子书已经开源,欢迎关注,电子书浏览地址: https://k8s.whuanle.cn[适合国内访问] https://ek8s.whuanl ...
- 容器编排技术 -- Kubernetes 联邦 Deployment
容器编排技术 -- Kubernetes 联邦 Deployment 1 Before you begin 2 创建联邦 Deployment 2.1 在底层集群中分布副本 3 更新联邦 Deploy ...
- kubernetes1.4 基础篇:Learn Kubernetes 1.4 by 6 steps(3):Step 2. Using kubectl to Create a Deployment
在上一篇文章中我们学习到了如何快速搭k8s的集群.本文将会将会学到Kubernetes的应用部署(Deployment),以及如何使用kubectl来部署我们的应用.被部署的应用我们将直接使用kube ...
最新文章
- SAP获利能力报表常用Tcode的区别
- matlab 自再现模,平行平面腔自再现模FoxLi数值迭代解法及MATLAB实现
- Canvas-drawImage 绘制图片模糊问题
- html53d正方形,利用HTML5绘制点线面组成的3D图形的示例
- Python之“可变”的tuple
- Golang开发环境配置
- 1 源码安装Zabbix agent 3.4
- linux gcc百度经验,详解Linux安装GCC方法
- 淘宝客APP源码 社交电商uniapp开发源码 前端源码自营商城
- Excel中关于数组函数的研究
- arcos的matlab定义,想用matlab解一个带arccos的方程。可是结果好像没有解析解。求帮助解数值解...
- 华东交通大学计算机考研资料汇总
- 那些在风雨中依然坚守的人们
- 2022第三届全国大学生网络安全精英赛练习题(1)
- win10 内存溢出修复
- c++打印心形_C语言控制台打印3D爱心图案
- API函数之SetParent
- Opencv配置VS2010,配置成功后如何成功使用完成vs调用opencv库
- 高分通过CKA认证考试指南
- MSN的邮箱,真不好用!