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 来自动执行这些过程

 

posted @ 2023-03-07 16:28  yuanbangchen  阅读(124)  评论(0编辑  收藏  举报