kubernetes资源清单之Deployment
Deployment为Pod和ReplicaSets提供声明性更新
示例
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-myweb
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: myweb
tier: frontend
template:
metadata:
namespace: default
labels:
app: myweb
tier: frontend
spec:
containers:
- name: container-myweb
image: mycloudedu/myweb:v1
imagePullPolicy: IfNotPresent
将清单提交给kubernetes集群,将创建定义的Deployment及其管理的ReplicaSet与pod
[root@master kubernetes]# kubectl apply -f deploy-myweb.yaml
验证
[root@master kubernetes]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
deploy-myweb 3/3 3 3 89s[root@master kubernetes]# kubectl get rs
NAME DESIRED CURRENT READY AGE
deploy-myweb-85996f4d65 3 3 3 111s[root@master kubernetes]# kubectl get pod
NAME READY STATUS RESTARTS AGE
deploy-myweb-85996f4d65-4dr58 1/1 Running 0 6s
deploy-myweb-85996f4d65-8vfhl 1/1 Running 0 6s
deploy-myweb-85996f4d65-qsfmj 1/1 Running 0 6s
这里只阐述几个字段:.spec.replicas、.spec.selector、.spec.strategy、.spec.revisionHistoryLimit、.spec.template五个字段。其他字段跟前两篇文章差不多,这里不作阐述。想了解请点击这里。
kubectl explain deployment.spec
replicas <integer> #是指期望值的pod数
selector <Object> -required- #标签选择器,kubernetes根据这个标签查看有几个pod。符不符ReplicaSet合期望值
strategy <Object> #更新pod的策略
template <Object> -required- #创建pod的模板
revisionHistoryLimit <integer> #保存几个历史版本,默认是10个
kubectl explain deployment.spec.selector有两种用法:
matchExpressions <[]Object>
matchLabels <map[string]string>
示例一:键与值的关系
matchExpressions:
- key:KEY
operator: (In, NotIn, Exists and DoesNotExist)
values: [VALUES1,VALUES2,…]
示例二:
matchLabels:
KEY:VALUES
kubectl explain deployment.spec.strategy
rollingUpdate <Object> #当type是RollingUpdate,这个字段才生效
type <string> #类型有两种Recreate与RollingUpdate,默认是RollingUpdate
当type=Recreate时,重新创建pod。当type=RollingUpdata时,重新创建pod是由策略规划。
这里讲解一下type=RollingUpdata。
kubectl explain deployment.spec.strategy.rollingUpdate有两个字段:
maxSurge <string> #最多能多几个pod
maxUnavailable <string> #最多能少几个pod
示例:
rollingUpdate:
maxSurge: <integer>
maxUnavailable: <integer>
这里template不阐述,说几个注意事项:
1.metadata.name这项可以不定义。因为定义了也不会生效。
2.metadata.labels必须含有selector的标签。
3.spec与pod的spec是一样的,这里就不在说明了。需要了解的查看上面文章。
综合示例
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-myweb
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: myweb
tier: frontend
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 1
revisionHistoryLimit: 3
template:
metadata:
namespace: default
labels:
app: myweb
tier: frontend
spec:
containers:
- name: container-myweb
image: mycloudedu/myweb:v1
imagePullPolicy: IfNotPresent
验证
[root@master kubernetes]# kubectl describe deploy deploy-myweb
…
RollingUpdateStrategy: 1 max unavailable, 1 max surge
用打补丁的方式修改策略
[root@master kubernetes]# kubectl patch deployments deploy-myweb -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":2,"maxUnavailable":0}}}}'
deployment.apps/deploy-myweb patched
验证
[root@master kubernetes]# kubectl describe deploy deploy-myweb
…
RollingUpdateStrategy: 0 max unavailable, 2 max surge
更新版本,定义更新一个版本暂停。是否跟定义更新策略进行更新
[root@master kubernetes]# kubectl set image deployments deploy-myweb container-myweb=mycloudedu/myweb:v2 && kubectl rollout pause deployment/deploy-myweb
deployment.apps/deploy-myweb image updated
deployment.apps/deploy-myweb paused[root@master ~]# kubectl get pod -w
NAME READY STATUS RESTARTS AGE
deploy-myweb-85996f4d65-4dr58 1/1 Running 0 57m
deploy-myweb-85996f4d65-8vfhl 1/1 Running 0 57m
deploy-myweb-85996f4d65-qsfmj 1/1 Running 0 57m
deploy-myweb-7fff44cfb8-cvbxf 0/1 Pending 0 0s
deploy-myweb-7fff44cfb8-h47lb 0/1 Pending 0 0s
deploy-myweb-7fff44cfb8-cvbxf 0/1 Pending 0 0s
deploy-myweb-7fff44cfb8-h47lb 0/1 Pending 0 0s
deploy-myweb-7fff44cfb8-cvbxf 0/1 ContainerCreating 0 0s
deploy-myweb-7fff44cfb8-h47lb 0/1 ContainerCreating 0 0s
deploy-myweb-7fff44cfb8-h47lb 1/1 Running 0 3s
deploy-myweb-7fff44cfb8-cvbxf 1/1 Running 0 3s原本三个pod还是运行,后面创建一个pod。上面定义的策略是:允许最多多两个,不能减少pod。结论:符合更新策略
取消暂时更新
[root@master kubernetes]# kubectl rollout resume deploy/deploy-myweb
deployment.apps/deploy-myweb resumed
验证
[root@master ~]# kubectl rollout status deploy deploy-myweb
Waiting for deployment "deploy-myweb" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment spec update to be observed...
Waiting for deployment spec update to be observed...
Waiting for deployment "deploy-myweb" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "deploy-myweb" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "deploy-myweb" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "deploy-myweb" rollout to finish: 1 old replicas are pending termination...
deployment "deploy-myweb" successfully rolled out[root@master kubernetes]# kubectl get deploy -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deploy-myweb 3/3 3 3 65m container-myweb mycloudedu/myweb:v2 app=myweb,tier=frontend
查看历史版本
[root@master kubernetes]# kubectl rollout history deployments deploy-myweb
deployment.apps/deploy-myweb
REVISION CHANGE-CAUSE
1 <none>
2 <none>
回滚历史版本
[root@master kubernetes]# kubectl rollout undo deploy/deploy-myweb --to-revision=1
deployment.apps/deploy-myweb rolled back
验证
[root@master kubernetes]# kubectl get deploy -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
deploy-myweb 3/3 3 3 67m container-myweb mycloudedu/myweb:v1 app=myweb,tier=frontend
kubernetes资源清单之Deployment的更多相关文章
- kubernetes系列06—kubernetes资源清单定义入门
本文收录在容器技术学习系列文章总目录 1.认识kubernetes资源 1.1 常用资源/对象 workload工作负载型资源:pod,ReplicaSet,Deployment,StatefulSe ...
- (四)Kubernetes 资源清单定义
Kubernetes常用资源对象 依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别,如下: 类型 名称 工作负载(Workload) Pod.ReplicaSet.D ...
- Kubernetes 学习5 kubernetes资源清单定义入门
一.kubernetes是有一个restful风格的 API,把各种操作对象都一律当做资源来管理.并且可通过标准的HTTP请求的方法 GET,PUT,DELETE,POST,等方法来完成操作,不过是通 ...
- kubernetes 资源清单定义入门
k8s中的资源 什么叫资源? k8s中所有的内容都抽象为资源, 资源实例化之后,叫做对象 在k8s中有哪些资源? 工作负载型资源(workload): Pod ReplicaSet Deploymen ...
- 4、kubernetes资源清单快速入门190625
一.资源清单概念 资源/对象的类型 工作负载型资源:Pod, ReplicaSet, Deployment, StatefulSet, DaemonSet, Job, Cronjob, ... 服务发 ...
- kubernetes资源清单之pod
什么是pod? Pod是一组一个或多个容器(例如Docker容器),具有共享的存储/网络,以及有关如何运行这些容器的规范. Pod的内容始终位于同一地点,并在同一时间安排,并在共享上下文中运行. Po ...
- 5、kubernetes资源清单定义入门
使用配置清单创建资源 定义pod时使用yaml格式 master ~]# kubectl get pod NAME READY STATUS RESTARTS AGE client / Error 1 ...
- kubernetes资源清单入门
创建nginx容器: kubectl run nginx-deploy8 --image=nginx:1.14-alpine --port=80 --replicas=2 deployment &qu ...
- kubernetes资源清单之DaemonSet
什么是 DaemonSet? DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本.当有节点加入集群时,也会为他们新增一个 Pod . 当有节点从集群移除时,这些 Pod 也会被回收 ...
随机推荐
- [转]SQL server 2008R2 中 C#Winfoirm 使用 SqlDependency 机制实现 数据库中某一张表的监视
转自:https://blog.csdn.net/u012183487/article/details/77776930 System.Data.SqlClient命名空间下的 sqlDependen ...
- Python统计分析可视化库seaborn(相关性图,变量分布图,箱线图等等)
Visualization of seaborn seaborn[1]是一个建立在matplot之上,可用于制作丰富和非常具有吸引力统计图形的Python库.Seaborn库旨在将可视化作为探索和理 ...
- php进程创建慢导致的502
转自: 作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除地址:http://www.jackxiang.com/post/926 ...
- C# CRC16 modbus
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- react 添加 react-redux 基本用法
安装 yarn add react-redux 创建文件.文件夹 |- redux |- actions.js |- reducer.js |- store.js actions.js export ...
- NetCore WebApi使用Jwtbearer实现认证和授权
1. 什么是JWT? JWT是一种用于双方之间传递安全信息的简洁的.URL安全的表述性声明规范.JWT作为一个开放的标准(RFC 7519),定义了一种简洁的,自包含的方法用于通信双方之间以Json对 ...
- 解析Health端点数据获取异常数据
问题: 由于健康节点响应类型是Health类,并且由于需要执行的健康状态类不固定,返回的类型数据的字段不是固定的,所以使用了@JsonAngGetter 注解,照成了解析这个JSON 结构非常不方便. ...
- 什么是负载均衡SLB
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务.负载均衡可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性. 请看视频简介 ...
- 洛谷P1603 斯诺登的密码(水题
不知道什么时候打开的,随手做掉了,没什么用...大概又熟悉了一下map吧...大概........一开始还因为没读清题没把非正规的英文表示数字存进去wa了...orz最近状态不行 题目描述 题目描述 ...
- tee、vi/vim命令
一.tee:多重定向 语法: tee [OPTION] ... [FILE] ... 参数: 将标准输入复制到每个FILE,也复制到标准输出. -a,--append ...