Deployment、ReplicaSet、ReplicationController控制器
kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制pod的具体状态和行为。 部分控制器类型如下: ReplicationController、ReplicaSet 、Deployment DaemonSet StatefulSet Job/CronJob HorizontalPodAutoscaler 控制器:ReplicationController、ReplicaSet Deployment • Replication Controller:副本控制器,对选择器的支持为KV值,键值对为:等于或不等于(selector = !=) • ReplicaSet:副本控制集,和副本控制器的区别是:对选择器的支持集合式(selector 还支持in notin)。 • Deployment:比rs更高一级的控制器,除了有rs的功能之外,还有很多高级功能,,比如说最重要的:滚动升级、回滚等、扩容和缩容、暂停和继续Deployment Deployment 提供了一种机制,方便用户通过自动(selector)的方式来管理 Pod 的生命周期,提供一种便捷的方式来解决应用的升级、回滚和扩容操作。 当我们期望对应用进行升级、回滚和扩容的时候,都会涉及到 Pod 的销毁和重建。在 Deployment 中可以描述我们期望 Pod 升级到的版本、回滚到的版本或者是期望扩容到的 Pod 的数量。 然后 Kubernetes 中的 Replication Controller 会执行我们的预期,让生产环境中的 Pod 状态和预期的状态一致
ReplicationController
#Replication Controller:副本控制器,对选择器的支持为KV值,键值对为:等于或不等于(selector = !=)
apiVersion: v1 kind: ReplicationController metadata: name: ng-rc namespace: linux39 spec: replicas: 2 selector: app: ng-rc-80 #KV值 #app1: ng-rc-81 template: metadata: labels: app: ng-rc-80 #app1: ng-rc-81 spec: containers: - name: ng-rc-80 image: nginx ports: - containerPort: 80
ReplicaSet
ReplicaSet:副本控制集,和副本控制器的区别是:对选择器的支持集合式(selector 还支持in notin)。 #apiVersion: extensions/v1beta1 apiVersion: apps/v1 kind: ReplicaSet metadata: name: ng-rs namespace: linux39 spec: replicas: 3 selector: #matchLabels: # app: ng-rs-80 matchExpressions: - {key: app, operator: In, values: [ng-rs-80,ng-rs-81]} template: metadata: labels: app: ng-rs-80 spec: containers: - name: ng-rs-80 image: nginx ports: - containerPort: 80
Deployment
Deployment:比rs更高一级的控制器,除了有rs的功能之外,还有很多高级功能,,比如说最重要的:滚动升级、回滚等、扩容和缩容、暂停和继续Deployment
#apiVersion: extensions/v1beta1 apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: linux39 spec: replicas: 2 selector: #app: ng-deploy-80 #rc支持 #matchLabels: #rs or deployment # app: ng-deploy-80 matchExpressions: #app指的是template: metadata:labels:下的app,即ng-deploy-80的键。 #operator 关键字 #In 相当于变量,后面有值。 - {key: app, operator: In, values: [ng-deploy-80,ng-rs-81]} template: metadata: labels: app: ng-deploy-80 spec: containers: - name: ng-deploy-80 image: nginx ports: - containerPort: 80 # 这就是说明selector为什么要跟模板中的lables一样,起到描述要创建的pod的作用 # Deployment 可以把之前通过手动管理 Pod 的操作管理起来,然后通过 Replication Controller 来自动执行这些过程