创建deployment

[root@master deploy]# kubectl create deploy nginx-deploy --image=nginx:1.7.9
deployment.apps/nginx-deploy created
// kubectl create 资源类型 资源名称(deployment的名称) 指定镜像
// 都是在动态的更新pod副本的数量 deployment和replicaSet是嵌套关系, [root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 1/1 1 1 66s
[root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 1 1 1 75s
[root@master deploy]# kubectl get replicaset
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 1 1 1 4m5s
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1 Running 1 (19m ago) 4d19h
nginx-demo 1/1 Running 2 (19m ago) 4d23h
nginx-deploy-68c658776b-z9rc6 1/1 Running 0 4m48s
nginx-po 1/1 Running 2 (19m ago) 4d23h
[root@master deploy]# //先是有deployment,然后有replicaSet,然后有pod //vim :set paste 粘贴模式 [root@master deploy]# vim nginx-deploy.yaml apiVersion: apps/v1 #deployment api 版本
kind: Deployment # 资源类型为deployment
metadata: # 元数据
labels: # 标签
app: nginx-deploy # 具体的 k:y配置形式
name: nginx-deploy # deployment的名字
namespace: default # 所在的命名空间
spec:
replicas: 1 # 期望的副本数
revisionHistoryLimit: 10 # 进行滚动更新后,保留的历史版本数
selector: # 选择器,用于找到匹配的rs
matchLabels: # 按照标签匹配
app: nginx-deploy # 匹配的标签k:y
strategy: # 更新策略
rollingUpdate: # 滚动更新配置
maxSurge: 25% # 进行滚动更新时候,更新的个数最多可以超过预期副本数的个数/比

maxUnavailable: 25% #进行滚动更新时,最大不可用更新比例,表述在所有副本数中,最>多可以有多少个不更新成功
type: RollingUpdate # 更新类型,采用滚动更新
template: # pod模版
metadata: # pod原信息
labels: # pod标签
app: nginx-deploy
spec: # pod的期望信息
containers: # pod 的容器
- image: nginx:1.7.9 # 镜像
imagePullPolicy: IfNotPresent # 拉取策略
name: nginx # 容器名称
restartPolicy: Always # 重启策略
terminationGracePeriodSeconds: 30 #删除操作最多宽限多久

滚动更新

[root@master deploy]# kubectl edit deploy nginx-deploy
deployment.apps/nginx-deploy edited [root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 3/3 3 3 28m
[root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 3 3 3 29m
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1 Running 1 (44m ago) 4d19h
nginx-demo 1/1 Running 2 (44m ago) 4d23h
nginx-deploy-68c658776b-hgppq 1/1 Running 0 23s
nginx-deploy-68c658776b-vld7l 1/1 Running 0 23s
nginx-deploy-68c658776b-z9rc6 1/1 Running 0 29m
nginx-po 1/1 Running 2 (44m ago) 4d23h
[root@master deploy]# //开两个终端
[root@master deploy]# kubectl set image deployment/nginx-deploy nginx=nginx:1.7.9
deployment.apps/nginx-deploy image updated
[root@master deploy]# [root@master deploy]# kubectl rollout status deplloy nginx-deploy
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 2 out of 3 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "nginx-deploy" rollout to finish: 1 old replicas are pending termination...
deployment "nginx-deploy" successfully rolled out
[root@master deploy]#
# 滚动更新过程
1.创建一个空的rs2
2.在空的rs2中创建pod1,在rs1中关闭原pod1
3. 在rs2中创建pod2,在rs1中关闭原pod2
//整个过程中保持2个pod的存在 # 查看rs可以看到2个rs
[root@master deploy]# kubectl get rs --show-labels
NAME DESIRED CURRENT READY AGE LABELS
nginx-deploy-68c658776b 3 3 3 40m app=nginx-deploy,pod-template-hash=68c658776b
nginx-deploy-7c97fc8644 0 0 0 9m21s app=nginx-deploy,pod-template-hash=7c97fc8644
[root@master deploy]#

回滚

// 当你的更新存在问题,可以回滚
//可以使用如下命令查看更新的历史版本
[root@master deploy]# kubectl rollout history deployment/nginx-deploy
deployment.apps/nginx-deploy
REVISION CHANGE-CAUSE
2 <none>
3 <none> // 查看历史版本
[root@master deploy]# kubectl rollout history deployment/nginx-deploy --revision=2
deployment.apps/nginx-deploy with revision #2
Pod Template:
Labels: app=nginx-deploy
pod-template-hash=7c97fc8644
Containers:
nginx:
Image: nginx:1.9.1
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none> [root@master deploy]# kubectl rollout history deployment/nginx-deploy --revision=3
deployment.apps/nginx-deploy with revision #3
Pod Template:
Labels: app=nginx-deploy
pod-template-hash=68c658776b
Containers:
nginx:
Image: nginx:1.7.9
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none> // 会记录修改的值
// 回退操作
[root@master deploy]# kubectl rollout undo deployment/nginx-deploy --to-revision=2
deployment.apps/nginx-deploy rolled back
[root@master deploy]# kubectl rollout status deployment/nginx-deploy
deployment "nginx-deploy" successfully rolled out
[root@master deploy]# // 回退操作 在.spec.revisionHistoryLimit 中指定deploment保留多少revision,如果设置0,则不允许回滚

扩容和缩容

扩容

[root@master deploy]# kubectl scale --replicas=6 deploy nginx-deploy
deployment.apps/nginx-deploy scaled
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1 Running 1 (81m ago) 4d20h
nginx-demo 1/1 Running 2 (81m ago) 5d
nginx-deploy-7c97fc8644-62dpp 1/1 Running 0 13m
nginx-deploy-7c97fc8644-g48zt 1/1 Running 0 10s
nginx-deploy-7c97fc8644-jlhfn 1/1 Running 0 13m
nginx-deploy-7c97fc8644-lqpxj 1/1 Running 0 13m
nginx-deploy-7c97fc8644-v69f4 1/1 Running 0 10s
nginx-deploy-7c97fc8644-zslj4 1/1 Running 0 10s
nginx-po 1/1 Running 2 (81m ago) 5d
[root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 0 0 0 66m
nginx-deploy-7c97fc8644 6 6 6 36m
[root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 6/6 6 6 67m
[root@master deploy]#

缩容

[root@master deploy]# kubectl scale --replicas=3 deploy nginx-deploy
deployment.apps/nginx-deploy scaled
[root@master deploy]# kubectl get po
NAME READY STATUS RESTARTS AGE
my-pod 1/1 Running 1 (83m ago) 4d20h
nginx-demo 1/1 Running 2 (83m ago) 5d
nginx-deploy-7c97fc8644-62dpp 1/1 Running 0 14m
nginx-deploy-7c97fc8644-jlhfn 1/1 Running 0 14m
nginx-deploy-7c97fc8644-lqpxj 1/1 Running 0 14m
nginx-po 1/1 Running 2 (83m ago) 5d
[root@master deploy]# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deploy 3/3 3 3 68m
[root@master deploy]#

暂停与恢复

暂停

// 由于每次对pod template的修改都会触发更新,所以可以通过暂停更新来避免频繁更新。我们可以先暂停更新,然后修改pod template,最后恢复更新。

[root@master deploy]# kubectl rollout pause deployment nginx-deploy
deployment.apps/nginx-deploy paused
[root@master deploy]# kubectl edit deploy nginx-deployment
Error from server (NotFound): deployments.apps "nginx-deployment" not found
[root@master deploy]# kubectl edit deploy nginx-deploy
deployment.apps/nginx-deploy edited [root@master deploy]# kubectl rollout history deployment nginx-deploy
deployment.apps/nginx-deploy
REVISION CHANGE-CAUSE
3 <none>
4 <none> [root@master deploy]# kubectl rollout history deployment nginx-deploy --revision=4
deployment.apps/nginx-deploy with revision #4
Pod Template:
Labels: app=nginx-deploy
pod-template-hash=7c97fc8644
Containers:
nginx:
Image: nginx:1.9.1
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none> [root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 0 0 0 80m
nginx-deploy-7c97fc8644 3 3 3 49m
[root@master deploy]#

恢复

[root@master deploy]#
[root@master deploy]# kubectl rollout resume deployment nginx-deploy
deployment.apps/nginx-deploy resumed
[root@master deploy]# kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx-deploy-68c658776b 0 0 0 82m
nginx-deploy-6cbbdbbf8b 3 3 3 10s
nginx-deploy-7c97fc8644 0 0 0 51m
[root@master deploy]# kubectl rollout history
daemonset deployment statefulset
[root@master deploy]# kubectl rollout history deployment nginx-deploy
deployment.apps/nginx-deploy
REVISION CHANGE-CAUSE
3 <none>
4 <none>
5 <none> [root@master deploy]# kubectl rollout history deployment nginx-deploy --revision=5
deployment.apps/nginx-deploy with revision #5
Pod Template:
Labels: app=nginx-deploy
pod-template-hash=6cbbdbbf8b
Containers:
nginx:
Image: nginx:1.9.1
Port: <none>
Host Port: <none>
Limits:
cpu: 500m
memory: 512Mi
Requests:
cpu: 100m
memory: 128Mi
Environment: <none>
Mounts: <none>
Volumes: <none> [root@master deploy]#

k8s——deployment的更多相关文章

  1. 【转帖】K8S Deployment 命令

    K8S Deployment 命令 https://www.cnblogs.com/Tempted/p/7831604.html 今天学习了一下 kubectl scale deployment xx ...

  2. 详细聊聊k8s deployment的滚动更新(二)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 ● 相关的参数介绍:   livenessProbe:存活性探测.判断pod是否已经停止   readinessProbe:就绪 ...

  3. 详细聊聊k8s deployment的滚动更新(一)

    一.知识准备 ● 本文详细探索deployment在滚动更新时候的行为 二.环境准备 组件 版本 OS Ubuntu 18.04.1 LTS docker 18.06.0-ce 三.准备镜像 首先准备 ...

  4. k8s deployment controller源码分析

    deployment controller简介 deployment controller是kube-controller-manager组件中众多控制器中的一个,是 deployment 资源对象的 ...

  5. K8S Deployment 命令

    创建 Deployment kubectl create -f https://kubernetes.io/docs/user-guide/nginx-deployment.yaml --record ...

  6. k8s deployment yam 文件分析

    apiVersion: extensions/v1beta1 kind: Deployment metadata: name: namespace: labels:spec: replicas: #设 ...

  7. Centos 7 k8s Deployment新副本控制器

    一.概念 Kubernetes提供了一种更加简单的更新RC和Pod的机制,叫做Deployment.通过在Deployment中描述你所期望的集群状态,Deployment Controller会将在 ...

  8. K8s Deployment YAML 名词解释

    Deployment 简述 Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义 (declarative) 方法,用来替代以前的 ReplicationControlle ...

  9. k8s deployment

    案例01 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabe ...

  10. k8s deployment 金丝雀发布 更新的 暂停 恢复 回滚

    假设现在有业务需求,计划将所有的nginx 从镜像版本1.14更新到1.15,这一次发布不紧需要平滑发布,还需要 金丝雀发布,及确认其中一个Pod没有问题后在进行剩余的更新. 暂停与恢复也可以使用ym ...

随机推荐

  1. ST语言

    CODESYS平台的ST语言笔记 前言: 基于汇川plc软件,底层是CODESYS平台.这回ST语言正儿八经要用 所以要学,做笔记是为了梳理加深基础要点印象,顺便分享交流学习.codesys平台包括汇 ...

  2. 通过一个非常简单的SSM项目来将SpringMVC配置整理清晰。

    所有的文件在Git上面都能找到,由于把代码搞上来看的很不舒服,结构不清晰. 第一步:确定环境 IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 第二步:创建数据库 参考GIT上 ...

  3. T级内存,创建效率提升10倍以上,阿里云 KVM异构虚拟机启动时间优化实践

    简介: 阿里云工程师李伟男和郭成在 KVM Forum 2020 上详细介绍了阿里云 KVM 虚拟机创建及启动时间优化的具体技术实现,本文根据其演讲整理而成. 对于云计算用户来说,过长的 KVM 虚拟 ...

  4. 阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态

    ​简介:近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态. 近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态.在此之 ...

  5. 节省 58% IT 成本,调用函数计算超过 30 亿次,石墨文档的 Serverless 实践

    简介:石墨文档使用函数计算搭建文档实时编辑服务,由函数计算的智能调度系统自动分配执行环境,处理多用户同时编写文档带来的峰值负载,函数计算的动态扩缩容能力保障应用的可靠运行. ​ 作者 | 金中茜 对石 ...

  6. 阿里云EMR Remote Shuffle Service在小米的实践

    ​简介:阿里云EMR自2020年推出Remote Shuffle Service(RSS)以来,帮助了诸多客户解决Spark作业的性能.稳定性问题,并使得存算分离架构得以实施,与此同时RSS也在跟合作 ...

  7. WebAssembly + Dapr = 下一代云原生运行时?

    简介: 云计算已经成为了支撑数字经济发展的关键基础设施.云计算基础设施也在持续进化,从 IaaS,到容器即服务(CaaS),再到 Serverless 容器和函数 PaaS (fPaaS 或者 Faa ...

  8. Flink 1.13,面向流批一体的运行时与 DataStream API 优化

    简介: 在 1.13 中,针对流批一体的目标,Flink 优化了大规模作业调度以及批执行模式下网络 Shuffle 的性能,以及在 DataStream API 方面完善有限流作业的退出语义. 本文由 ...

  9. 5分钟搞定AlertManager接入短信、语音等10+种通知渠道

    ​简介: Alert Manager是开源监控系统Prometheus中用于处理告警信息的服务,通过将日志服务开放告警配置为Alert Manager中的一个Receiver,可以将Alert Man ...

  10. 2019-4-29-Roslyn-将这个文件放在你的项目文件夹,无论哪个控制台项目都会输出林德熙是逗比...

    title author date CreateTime categories Roslyn 将这个文件放在你的项目文件夹,无论哪个控制台项目都会输出林德熙是逗比 lindexi 2019-4-29 ...