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 @   yuanbangchen  阅读(133)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示