1.ReplicationController和ReplicaSet介绍

  RC(ReplicationController)主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数。即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收Kubernetes 
  官方建议使用RS(Replicaset)替代RC(ReplicationController)进行部署,RS跟RC没有本质的不同,只是名字不一样,并且RS支持集合式的 selector
⒉ReplicaSet资源文件示例
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: frontend
spec:
replicas: 3 #有3个副本
selector: #标签选择器
matchLabels:
tier: frontend
template: #模板
metadata:
1abels:
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google_samples/gb-frontend:v3
env:
- name: GET_HOSTS_FROM
value:dns
ports:
- containerPort: 80

⒊Deployment介绍

    

  Deployment通过RS去创建和管理对应的pod及不同的RS交替去完成滚动更新。 
  Deployment为Pod 和Replicaset 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationController 来方便的管理应用。典型的应用场景包括:
  ·定义Deployment来创建Pod和ReplicaSet
  ·滚动升级和回滚应用
  ·扩容和缩容
  ·暂停和继续Deployment
 
⒋Deployment示例
  1.资源清单
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80

  2.创建

kubectl create -f https://kubernetes.io/docs/user-guide/nginx-deployment.yaml --record
## --record参数可以记录命令,我们可以很方便的查看每次 revision 的变化 更新的时候可以记录状态,每一步是使用什么命令进行更新的

  3.扩容

kubectl scale deployment nginx-deployment --replicas  

  4.如果集群支持horizontal pod autoscaling的话,还可以为Deployment设置自动扩展

kubectl autoscale deployment nginx-deployment --min= --max= --cpu-percent= 

  5.更新容器中的镜像

kubectl set image deployment/nginx-deployment nginx=nginx:1.9.

  6.回滚

kubectl rollout undo deployment/nginx-deployment

  7.使用edit命令编辑Deployment

kubectl edit deployment/nginx-deployment

  8.查看rollout的状态

kubectl rollout status deployment/nginx-deployment

  9.查看历史RS

kubectl get rs

⒌Deployment 更新策略【如果我们需要更新时将会创建出两个RS,其中旧的RS一次减少25%的pod而新的RS一次创建25%的pod 】

  Deployment 可以保证在升级时只有一定数量的Pod是down的。默认的,它会确保至少有比期望的Pod数量少一个是up状态(最多一个不可用)
  Deployment同时也可以确保只创建出超过期望数量的一定数量的Pod。默认的,它会确保最多比期望的Pod数量多一个的Pod是up的(最多1个surge)
  未来的Kuberentes 版本中,将从1-1变成25%-25%$kubect1 describe deployments
 
⒍Rollover【多个rollout并行】  
 
回退Deployment 
  只要Deployment的rollout被触发,就会创建一个revision。也就是说当且仅当Deployment的Pod template(如`.spec.template`)被更改,例如更新template中的label和容器镜像时,就会创建出一个新的revision。其他的更新,比如扩容Deployment不会创建revision-因此我们可以很方便的手动或者自动扩容。这意味着当您回退到历史revision时,只有Deployment中的Pod template部分才会回退
  

#设置镜像
kubectl set image deployment/nginx-deployment nginx=nginx:1.91
#查看当前更新状态
kubectl rollout status deployments nginx-deployment
kubectl get pods
#查看可回滚的历史版本
kubectl rollout history deployment/nginx-deployment
kubectl rollout undo deployment/nginx-deployment
##可以使用--revision参数指定回退到某个历史版本
kubectl rollout undo deployment/nginx-deployment --to-revision=
##暂停 deployment的更新
kubectl rollout pause deployment/nginx-deployment

  

  您可以用kubectl rollout status 命令查看Deployment是否完成。如果 rollout成功完成,kubect1rollout status 将返回一个0值的Exit Code
kubect1 rollout status deploy/nginx
echo $?
  您可以通过设置.spec.revisonHistoryLimit 项来指定 deployment 最多保留多少revision历史记录。默认的会保留所有的revision;如果将该项设置为0,Deployment 就不允许回退了
  

  

Kubernetes---资源控制器之ReplicationController、ReplicaSet和Deployment的更多相关文章

  1. 十六、资源控制器之DaemonSet

    资源控制器之DaemonSet DaemonSet 确保全部(或者一些) Node上运行一个 Pod 的副本,当有 Node 加入集群时,也会为他们新增一个 Pod,当有 Node 从集群移除时,这些 ...

  2. Kubernetes的控制器之Deployment的定义

    Deploy 的控制器定义参数介绍 [root@master manifests]# kubectl explain deploy KIND: Deployment VERSION: extensio ...

  3. kubernetes学习控制器之StatefulSet控制器

    StatefulSet介绍 一.StatefulSet概述 StatefulSet是用来管理stateful(有状态)应用的StatefulSet管理Pod时,确保Pod有一个按序增长的ID与Depl ...

  4. 十四、资源控制器之RS

    RC (ReplicationController )主要的作用就是用来确保容器应用的副本数始终保持在用户定义的副本数 .即如果有容器异常退出,会自动创建新的 Pod 来替代:而如果异常多出来的容器也 ...

  5. 十五、资源控制之Deployment

    资源控制器之Deployment Deployment 为 Pod 和 ReplicaSet 提供了一个声明式定义(declarative)方法,用来替代以前的ReplicationControlle ...

  6. (四)Kubernetes 资源清单定义

    Kubernetes常用资源对象 依据资源的主要功能作为分类标准,Kubernetes的API对象大体可分为五个类别,如下: 类型 名称 工作负载(Workload) Pod.ReplicaSet.D ...

  7. Kubernetes 控制器之 Deployment 介绍(六)

    一.Deployment.ReplicaSet.Pod之间的关系 我们接着前面的文章说,如果不清楚的请查看之前的博文:http://blog.51cto.com/wzlinux/2322616 前面我 ...

  8. Kubernetes学习之路(十二)之Pod控制器--ReplicaSet、Deployment

    一.Pod控制器及其功用 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源. pod控制器 ...

  9. (六)Kubernetes Pod控制器-ReplicaSet和Deployment和DaemonSet

    Pod控制器相关知识 控制器的必要性 自主式Pod对象由调度器调度到目标工作节点后即由相应节点上的kubelet负责监控其容器的存活状态,容器主进程崩溃后,kubelet能够自动重启相应的容器.但对出 ...

随机推荐

  1. NVMe - NB的特性

    翻译一下,纯粹是为了记住这些特性: NVMe provides the following benefits: ● Ultra-low latency 非常低的延迟 ● Very high throu ...

  2. 内存管理2-set方法的内存管理

    1.对象之间的内存管理: 每个学生都有一本书 book类 @price 学生类  @age @book -------------------- #import "book.h" ...

  3. spring boot + swagger2

    spring boot集成swagger2:     swagger2是一个基于restful的开源设计,构建,文档,访问的开源工具集.开发中它的在线可视化文档功能,可以动态生成文档,简化前后对接工作 ...

  4. oracle insert into 多条数据

    mysql : insert into tablename (column1,column2) values ('aa','bb'), ('dd','cc'), ('ee','ff'); oracle ...

  5. 了解Spring Boot的自动配置

    摘自:https://www.jianshu.com/p/ddb6e32e3faf Spring Boot的自动配置给开发者带来了很大的便利,当开发人员在pom文件中添加starter依赖后,mave ...

  6. postgresql interval 字段拼接

    无拼接时: SELECT scan_time + '5 day' FROM tbl_temp_record SELECT scan_time + '-5 day' FROM tbl_temp_reco ...

  7. 如何修改layer-layui中的confirm

    需求: 改成 背景: 这个confirm是layui中的layer弹出框,要想修改这个弹出框的内容岂不是要去修改源码?当我在源码里扒拉半天梳理好了逻辑之后,突然意识到,其实我本可以不必这么麻烦的,直接 ...

  8. Android 自定义AlertDialog退出对话框

    Android 自定义AlertDialog退出对话框 转 https://blog.csdn.net/wkh11/article/details/53081634在项目中很多时候会出现点击返回键出现 ...

  9. 西湖论剑2019部分writeup

    做了一天水了几道题发现自己比较菜,mfc最后也没怼出来,被自己菜哭 easycpp c++的stl算法,先读入一个数组,再产生一个斐波拉契数列数组 main::{lambda(int)#1}::ope ...

  10. c++ throw异常(学习)

    #include <iostream>#include <stdio.h> using namespace std; void my_copy(const char* src_ ...