标签:声明 结束 node 一致性 label mon ... ice col
Controller:执行运行POD的任务
控制器,Kubernetes一般情况人们不会直接创建 Pod,而是通过创建Controller来管理 Pod 的。Controller 中定义了 Pod 的部署特性,比如有几个副本,在什么样的 Node 上运行等。为了满足不同的业务场景,Kubernetes 提供了多种 Controller,包括 Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job 等,我们逐一讨论。一般创建POD,都是直接创建Deployment的kind,然后定义该Deployment下有几个pod的副本,一般情况至少有俩,保证pod的高可用。注意:deployment下创建的多个pod的功能和内容是一模一样的,多个pod被分配到多个节点,以便实现负载均衡和高可用,pod比较轻量,就算挂了一个,还可以自动销毁后再自动启动一个,所以,不要把一个deployment下的多个pod分开理解,他们是一个整体
Deployment #是最常用的 Controller。Deployment 可以管理 Pod 的多个副本,并确保 Pod 按照期望的状态运行。比ReplicaSet还多了几个功能支持滚动更新和回滚,支持声明式配置的功能
DaemonSet #用于每个 Node 最多只运行一个 Pod 副本的场景。正如其名称所揭示的,DaemonSet 通常用于运行 daemon。
StatefulSet #StatefulSet表示对Pod设定一致性身份(consistent identities)
Identities的定义:
StatefulSet能够保证 Pod 的每个副本在整个生命周期中名称是不变的,一般情况StatefulSet管理有状态的Pod。而其他 Controller 不提供这个功能,当某个 Pod 发生故障需要删除并重新启动时,Pod 的名称会发生变化。同时 StatefulSet 会保证副本按照固定的顺序启动、更新或者删除。
使用StatefulSet的说明:
HPA #Horizontal Pod Autoscaler
Job #用于运行结束就删除的应用。而其他 Controller 中的 Pod 通常是长期持续运行。
定义Deployment对象的yaml文件
apiVersion: XXXX kind: Deployment metadata: name: NAME #指定该资源的名字 sepc: #指明该Deployment的规格 replicas: NUM #指明运行Pod的副本数量,默认为1 selector: matchLabels: KYE: YALUE strategy: #定义用一个新的pod代替现有pod的部署策略(更新pod的策略) rollingUpdate: #当更新策略为rollingUpdate时,需要配置滚动更新的参数 maxSurge: NUM #设定在更新时最大可用的Pod数,就是先添加几个新的Pod再删除老的 maxUnavailable: NUM #设定在更新时最大不可用的Pod数 type: Recreate|RollingUpdate #指定更新策略的类型,默认为RollingUpdate(滚动更新);Recreate为重塑,删除一个更新一个 template: #定义pod的模板,即使用上文中Pod类型的metadata和spec metadata: #与Pod定义的内容基本一样 .... spec: #与Pod定义的内容基本一样 ......
Kubernetes概念-2.0Controller:执行运行POD的任务
标签:声明 结束 node 一致性 label mon ... ice col
原文地址:https://www.cnblogs.com/Forsake-dream/p/9980748.html