Kubernetes(五)之POD控制器對(duì)象ReplicaSet

kubernetes-card.png

POD控制器對(duì)象ReplicaSet

ReplicaSet介紹

什么是ReplicaSet?

ReplicaSet是下一代復(fù)本控制器,是Replication Controller(RC)的升級(jí)版本。ReplicaSet和 Replication Controller之間的唯一區(qū)別是對(duì)選擇器的支持。ReplicaSet支持labels user guide中描述的set-based選擇器要求, 而Replication Controller僅支持equality-based的選擇器要求。

如何使用ReplicaSet?

大多數(shù)kubectl 支持Replication Controller 命令的也支持ReplicaSets。rolling-update命令除外,如果要使用rolling-update,請(qǐng)使用Deployments來(lái)實(shí)現(xiàn)。

雖然ReplicaSets可以獨(dú)立使用,但它主要被 Deployments用作pod 機(jī)制的創(chuàng)建、刪除和更新。當(dāng)使用Deployment時(shí),你不必?fù)?dān)心創(chuàng)建pod的ReplicaSets,因?yàn)榭梢酝ㄟ^(guò)Deployment實(shí)現(xiàn)管理ReplicaSets

何時(shí)使用ReplicaSet?

ReplicaSet能確保運(yùn)行指定數(shù)量的pod。然而,Deployment 是一個(gè)更高層次的概念,它能管理ReplicaSets,并提供對(duì)pod的更新等功能。因此,我們建議你使用Deployment來(lái)管理ReplicaSets,除非你需要自定義更新編排。

這意味著你可能永遠(yuǎn)不需要操作ReplicaSet對(duì)象,而是使用Deployment替代管理 。

ReplicaSet對(duì)象定義

  • apiVersion: app/v1 版本
  • kind: ReplicaSet 類型
  • metadata: 元數(shù)據(jù)
  • spec: 期望狀態(tài)
    • minReadySeconds: 應(yīng)為新創(chuàng)建的pod準(zhǔn)備好的最小秒數(shù)
    • replicas: 副本數(shù); 默認(rèn)為1
    • selector: 標(biāo)簽選擇器
    • template: pod模板
      • metadata: pod模板中的元數(shù)據(jù)
      • spec: pod模板中的期望狀態(tài)

ReplicaSet創(chuàng)建示例

Yaml示例

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      name: myapp-pod
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp-container
        image: docker.io/busybox:latest
        command: ["sh","-c","sleep 3600"]

創(chuàng)建結(jié)果

  • 創(chuàng)建

      # kubectl create -f rs-demo.yaml
      replicaset.apps/myapp created
    
  • 查看Replicaset狀態(tài)

      # kubectl get rs
      NAME      DESIRED   CURRENT   READY     AGE
      myapp     2         2         2         23s
    
  • 查看pod 狀態(tài)

      # kubectl get pods
      NAME          READY     STATUS    RESTARTS   AGE
      myapp-r4ss4   1/1       Running   0          25s
      myapp-zjc5l   1/1       Running   0          26s
    

    生產(chǎn)的pod原則(多退少補(bǔ)):根據(jù)replicas配置保證生成相應(yīng)數(shù)量的pod。

ReplicaSet擴(kuò)所容

  • 使用edit 修改replicaset 配置,將副本數(shù)改為5;即可實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)容

      # kubectl edit rs myapp
      ... ...
      spec:
      replicas: 5
      ... ...
      replicaset.extensions/myapp edited
    
  • 查看結(jié)果

      # kubectl get pods
      NAME          READY     STATUS    RESTARTS   AGE
      myapp-bck7l   1/1       Running   0          16s
      myapp-h8cqr   1/1       Running   0          16s
      myapp-hfb72   1/1       Running   0          6m
      myapp-r4ss4   1/1       Running   0          9m
      myapp-vvpgf   1/1       Running   0          16s
    

ReplicaSet在線升級(jí)

原理同擴(kuò)所容同樣,進(jìn)行編輯replicaset 對(duì)containers對(duì)應(yīng)的image進(jìn)行版本升級(jí)修改。:修改完并沒有升級(jí)需刪除pod,再自動(dòng)生成新的pod時(shí),就會(huì)升級(jí)成功;即可以實(shí)現(xiàn)灰度發(fā)布:刪除一個(gè),會(huì)自動(dòng)啟動(dòng)一個(gè)版本升級(jí)成功的pod

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容