4.Pod控制器
Controller-manager:
Kube-controller-manager
Cloud-controller-manager:在K8S上启用CloudProvider的时候才需要,用来配合云服务提供商的控制(NodeController,RouteController,ServiceController)
一、Pod控制器
ReplicationController:
ReplicaSet:是新一代的ReplicationController。帮助用户管理无状态的资源,并确保能够精确反映用户定义的目标数量。
核心组件:用户期望的副本数,标签选择器,pod资源模板
Deployment:建立在ReplicaSet之上。支持扩缩容,支持滚动更新,回滚等,提供声明式定义资源。是目前管理无状态应用的最好的控制器。
DaemonSet:用于确保集群的每一个节点只运行一个特定的Pod副本,或者仅在满足条件的节点上,运行一个Pod副本。通常用来实现系统级别的后台任务(以守护进程形式运行),托管到K8S上,。不用定义pod的期望数量,因为副本数量取决于集群规模。
Job:是否重建Pod取决于任务是否完成。只能执行一次性的任务。
CronJob:周期性运行任务。
StatefulSet:管理有状态应用。把需要手动做的运维操作步骤封装成脚本,放在pod模板中,让控制器按脚本去做。 --- 有状态应用托管到K8S很难,因为有状态应用,无法抽取共同特点,并定义出一种模式来,只能每一种应用都单独对待。
二、ReplicaSet

[kubelet@master yaml]$ cat rs-demo.yaml
[kubelet@master ~]$ kubectl get pods --show-labels
[kubelet@master yaml]$ kubectl edit rs myapp ## 在线修改yaml,动态扩容缩容(更改replicas);动态更新(更改container的image版本),已存在的pod版本不会改变,只有重建的才会是新版本。
三、Deployment
一个deployment管理多个ReplicaSet。只有一个是处于活动状态。可以提供声明式更新创建。通常用apply,而不使用create。提供滚动式自定义自控制更新;可以实现控制更新逻辑和更新节奏,更新粒度。
[kubelet@master yaml]$ kubectl explain deployment.spec.strategy # 更新策略
[kubelet@master yaml]$ kubectl explain deployment.spec.revisionHistoryLimit # 历史版本数

[kubelet@master yaml]$ vim deploy-demo.yaml # 直接修改yaml文件replicas
[kubelet@master yaml]$ kubectl apply -f deploy-demo.yaml # 再次apply,得到如下效果。


[kubelet@master yaml]$ kubectl rollout history deployment myapp-deploy # 查看滚动更新的历史
[kubelet@master yaml]$ kubectl patch deployment myapp-deploy -p '{"spec":{"replicas":5}}' # 打补丁
[kubelet@master yaml]$ kubectl patch deployment myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}' #修改更新策略
[kubelet@master yaml]$ kubectl set image deployment myapp-deploy myapp-container=ikubernetes/myapp:v3 && kubectl rollout pause deployment myapp-deploy #更新,然后暂停更新。金丝雀发布
[kubelet@master yaml]$ kubectl rollout resume deployment myapp-deploy # 恢复操作,继续进行更新。
[kubelet@master yaml]$ kubectl rollout status deployment myapp-deploy # 查看更新进度
[kubelet@master yaml]$ kubectl rollout undo deployment myapp-deploy --to-revision= #回滚到版本1(不指定默认回滚为上一版本)
查看使用的是v1版本:

[kubelet@master yaml]$ kubectl delete pod myapp-ds-ljlh5 --force --grace-period= #强制删除pod,当pod长时间处于Terminating状态时可使用。
四、DaemonSet
也支持滚动更新

kubelet@master yaml]$ kubectl expose deployment redis --port= #暴露端口

[kubelet@master yaml]$ kubectl explain pods.spec.hostNetwork #共享宿主机的网络命名空间,daemonset可以使用,就不需要用service单独暴露端口
日志收集是节点级别的,需要收集所有Pod的日志。
五、Tips
TPR:Third Party Resources 第三方资源 1.2+ 1.7废弃了
CDR:Custom Defined Resources 1.8+ 用户自定义资源
Operator:
Helm:类似于Yum
[kubelet@master yaml]$ kubectl explain deploy # 文档是落后于k8s集群本身的,所以此命令获得的群组可能是不正确的。
[kubelet@master yaml]$ kubectl get pods -l app=myapp –w # 查看pod的动态变化
4.Pod控制器的更多相关文章
- kubernetes系列07—Pod控制器详解
本文收录在容器技术学习系列文章总目录 1.Pod控制器 1.1 介绍 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无 ...
- 9.Pod控制器概念和基本操作2
利用一个简单的例子来启动一个deployment的Pod控制器 [root@master song]# cat deploy.yml apiVersion: apps/v1 kind: Deploym ...
- k8s学习笔记之六:Pod控制器(kube-controller-manager)
第一章.什么是kube-controller-manager? Controller Manager 由 kube-controller-manager 和 cloud-controller-mana ...
- kubernetes 的pod控制器
转载于网络 pod是kubernetes的最小单元,自主式创建的pod删除就没有了,但是通过资源控制器创建的pod如果删除还会重建.pod控制器就是用于实现代替我们去管理pod的中间层,并帮我们确 ...
- Kubernetes学习之路(十二)之Pod控制器--ReplicaSet、Deployment
一.Pod控制器及其功用 Pod控制器是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源. pod控制器 ...
- k8s的Pod控制器
pod的配置清单常见选项: apiVersion,kind,metadata,spec,status(只读) spec: containers: nodeSelector: nodeName: res ...
- k8s之pod控制器
1.生产中,很少会跑一个自主式pod,一般由控制器去创建pod,其配置文件中内嵌了pod的创建方式. pod控制器:ReplicaSet.Deployment.DaemonSet.Job.Cronjo ...
- 05-kubernetes Pod控制器应用进阶
目录 Pod 资源 标签 给资源打标签 标签选择器 Pod 生命周期 实际操作 livenessProbe 实战 livenessProbe exec 测试 livenessProbe httpGet ...
- (六)Kubernetes Pod控制器-ReplicaSet和Deployment和DaemonSet
Pod控制器相关知识 控制器的必要性 自主式Pod对象由调度器调度到目标工作节点后即由相应节点上的kubelet负责监控其容器的存活状态,容器主进程崩溃后,kubelet能够自动重启相应的容器.但对出 ...
- k8s之pod与Pod控制器
k8s中最为重要的基础资源,pod,pod controller,service pod controller类型有多种需要向控制器赋值之后使用: kubectl命令使用 kubectk get no ...
随机推荐
- 转:C语言inline详细讲解
本文介绍了GCC和C99标准中inline使用上的不同之处.inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而 ...
- fedora从22开始就用dnf代替yum了
yum有一些不好的缺点, 从fc22开始, 就用 dnf代替yum了 dnf: "毒奶粉" yum: "黄狗" dnf的用法根yum的用法完全一样, 只是用dn ...
- mount -o是什么意思
mount -o是用loop设备, 在 linux挂载本地的(可能是硬盘上的) iso文件时, 使用的. -o 就是loop回环设备的意思. loop回路文件系统: 是: 用来在一个文件系统上实现另一 ...
- JS - defer 和 async
普通 <script src="script.js"></script> 没有 defer 或 async,浏览器会立即加载并执行指定的脚本,"立 ...
- iOS OC中桥接swift第三方库
swift中有一些比较好的框架,比如绘图框架charts,最近项目中刚好用到,通过Pod的方式直接导入,xcode会自动生成charts-swift.h的文件,然后在需要导入的地方import < ...
- 使用js如何获取treeview控件的当前选中的节点
var selectedNodeID = theForm.elements["<%=treeView1.ClientID%>_SelectedNode"].value; ...
- 阶段3 1.Mybatis_12.Mybatis注解开发_5 mybatis注解建立实体类属性和数据库表中列的对应关系
创建新项目,一对多 复制刚才关闭的项目的文件 复制到们的新项目里面 复制包的依赖 删减相关代码.只保留这三个查询的方法 模糊查询改成传统的占位符的方式 之前是可以自定义实体类的属性字段,和数据库的字典 ...
- 【MM系列】SAP 物料凭证增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法 前言部 ...
- Scratch少儿编程系列:(一)版本的选择及安装
工欲善其事必先利其器,为了使用Scratch,首先要到官网上下载相关软件. 官网链接地址为:https://scratch.mit.edu/download,我用的是Windows系统,下载对应的安装 ...
- 【Qt开发】Qt Creator在Windows上的调试器安装与配置
Qt Creator在Windows上的调试器安装与配置 如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试 ...