成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Kubernetes之標(biāo)簽與Pod控制器詳解-創(chuàng)新互聯(lián)

一、標(biāo)簽

標(biāo)簽的主要作用:解決同類型的資源對象越來越多,為了更好的管理,按照標(biāo)簽分組;

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供東河網(wǎng)站建設(shè)、東河做網(wǎng)站、東河網(wǎng)站設(shè)計、東河網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、東河企業(yè)網(wǎng)站模板建站服務(wù),十余年東河做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

常用的標(biāo)簽分類:

  • release(版本):stable(穩(wěn)定版)、canary(金絲雀版本、可以理解為測試版)、beta(測試版)
  • environment(環(huán)境變量):dev(開發(fā))、qa(測試)、production(生產(chǎn))
  • application(應(yīng)用):ui、as(應(yīng)用軟件)、pc、sc
  • tier(架構(gòu)層級):frontend(前端)、backend(后端)、cache(緩存、隱藏)
  • partition(分區(qū)):customerA(客戶A)、customerB(客戶B)
  • track(品控級別):daily(每天)、weekly(每周)

K8s集群中雖然沒有對有嚴格的要求,但是標(biāo)簽還是要做到:見名知意!方便自己也方便別人!

常用的命令有:

[root@master yaml]# kubectl get pod --show-labels    //顯示pod的標(biāo)簽
[root@master yaml]# kubectl get pod -L env       //顯示鍵對應(yīng)的值
[root@master yaml]# kubectl get pod -l env             //通過小l查看僅包含env標(biāo)簽的資源
[root@master yaml]# kubectl get pod -l env  --show-labels      //顯示對應(yīng)的鍵值
[root@master yaml]# kubectl label pod labels app=pc     //給pod打標(biāo)簽
[root@master yaml]# kubectl label pod labels app-          //去除標(biāo)簽
[root@master yaml]# kubectl label pod labels env=dev --overwrite    //修改標(biāo)簽內(nèi)容

標(biāo)簽與標(biāo)簽選擇器的關(guān)系:

  • 如果標(biāo)簽有多個,標(biāo)簽選擇器選擇其中一個,也可以關(guān)聯(lián)成功!
  • 如果選擇器有多個,那么標(biāo)簽必須滿足標(biāo)簽選擇器的條件,才可關(guān)聯(lián)成功!

標(biāo)簽選擇器:標(biāo)簽的查詢過濾條件
基于等值關(guān)系的(equality-based):”=“、”==“、”!=“前兩個等于,最后一個不等于
基于集合關(guān)系(set-based):in、notin、exists三種;

selector:
  matchLables:                 //指定等值關(guān)系的標(biāo)簽選擇器
    app: nginx
  matchExpressions:             //基于集合的標(biāo)簽選擇器。選擇器列表間為”邏輯與“關(guān)系;使用In或NotIn操作是,其values不強制要求為空的字符串列表,而使用Exists或DostNotExists時,其values必須為空;
    - {key: name,operator: In,values: [zhangsan,lisi]}
    - {key: age,operator: Exists,values:}

使用標(biāo)簽選擇器的邏輯:

  • 同時指定的多個選擇器之間的邏輯關(guān)系為”與“操作;
  • 使用空值的標(biāo)簽選擇器意味著每個資源對象都將被選擇中;
  • 空的標(biāo)簽選擇器無法選中任何資源;

二、常見的Pod控制器

Pod控制器基本概念:

Pod是kubernetes的最小單元,自主式創(chuàng)建的pod刪除就沒有了,但是通過資源控制器創(chuàng)建的pod如果刪除還會重建。pod控制器就是用于實現(xiàn)代替我們?nèi)ス芾韕od的中間層,并幫我們確保每一個pod資源處于我們所定義或者所期望的目標(biāo)狀態(tài),pod資源出現(xiàn)故障首先要重啟容器,如果一直重啟有問題的話會基于某種策略重新編排。自動適應(yīng)期望pod數(shù)量。

Kubernetes中內(nèi)建了很多controller(控制器),這些相當(dāng)于?個狀態(tài)機,?來控制Pod的具體狀態(tài)和?為。

Pod控制器有很多種類型,但是目前kubernetes中常用的控制器有:

  • Replication Controller(RC):是Kubernetes系統(tǒng)中的核心概念,用于定義Pod副本的數(shù)量。在Master內(nèi),RC進程通過RC的定義來完成Pod的創(chuàng)建、監(jiān)控、啟停等操作。根據(jù)RC定義,Kubernetes能夠確保在任意時刻都能運行用于指定的Pod"副本"(Replica)數(shù)量。隨著kubernetes的迭代更新,RC即將被廢棄,逐漸被ReplicaSet替代;
  • ReplicaSet(RS):它的核心作用是代用戶創(chuàng)建指定數(shù)量的Pod副本,并確定Pod副本一直處于滿足用戶期望數(shù)量的狀態(tài),多退少補,同時支持擴縮容機制。主要有三個組件:用戶期望的Pod副本數(shù)量;標(biāo)簽選擇器,選擇屬于自己管理和控制的Pod;當(dāng)前Pod數(shù)量不滿足用戶期望數(shù)量時,根據(jù)資源模板進行新建;
  • Deployment:工作在ReplicaSet之上,用于管理無狀態(tài)應(yīng)用,除了ReplicaSet的機制,還增加了滾動更新和回滾功能,提供聲明式配置;
  • DaemonSet:用于確保集群中的每一個節(jié)點只運行特定的pod副本,通常用于實現(xiàn)系統(tǒng)級后臺任務(wù)。比如ELK服務(wù)。要求:服務(wù)是無狀態(tài)的;服務(wù)必須是守護進程;

Pod控制器通常包含三個組成部分:

  • replicas:期望的pod對象副本數(shù)量;
  • selector:當(dāng)前控制器匹配Pod對此項副本的標(biāo)簽選擇器;
  • template:pod副本的模板;

1)Replication Controller(RC)

基本概念

Replication Controller 簡稱RC,它能確保任何時候Kubernetes集群中有指定數(shù)量的pod副本(replicas)在運行, 如果少于指定數(shù)量的pod副本(replicas),Replication Controller會啟動新的Container,反之會殺死多余的以保證數(shù)量不變。Replication Controller使用預(yù)先定義的pod模板創(chuàng)建pods,一旦創(chuàng)建成功,pod 模板和創(chuàng)建的pods沒有任何關(guān)聯(lián),可以修改pod 模板而不會對已創(chuàng)建pods有任何影響,也可以直接更新通過Replication Controller創(chuàng)建的pods。對于利用pod 模板創(chuàng)建的pods,Replication Controller根據(jù)label selector來關(guān)聯(lián),通過修改pods的label可以刪除對應(yīng)的pods。

最初Replication Controller 是用于復(fù)制和在異常時重新調(diào)度節(jié)點的唯一kubernetes組件,后來逐漸被replicaSet代替了?,F(xiàn)在基本上很少見到Replication Controller,它即將被廢棄。但是有的kubernates容器環(huán)境還是有可能會有RC,所以還是有必要知道它的用法。

根據(jù)Replication Controller的定義,Kubernetes能夠確保在任意時刻都能運行用于指定的Pod"副本"(Replica)數(shù)量。如果有過多的Pod副本在運行,系統(tǒng)就會停掉一些Pod;如果運行的Pod副本數(shù)量太少,系統(tǒng)就會再啟動一些Pod,總之,通過RC的定義,Kubernetes總是保證集群中運行著用戶期望的副本數(shù)量。

Replication Controller(RC)的特點:

  • 確保Pod數(shù)量;
  • 確保Pod健康;
  • 彈性伸縮;
  • 滾動更新;

應(yīng)用示例

[root@master yaml]# vim rc.yaml 
kind:  ReplicationController 
apiVersion: v1
metadata:
  name: http-rc
spec:
  replicas: 2
    selector:
      name: http-rc
  template:
    metadata:
      labels:
        name: http-rc
    spec:
      containers:
      - name: http-rc
        image: httpd
[root@master yaml]# kubectl apply -f rc.yaml
[root@master yaml]# kubectl get rc http-rc 
NAME      DESIRED   CURRENT   READY   AGE
http-rc   2         2         2       103s
[root@master yaml]# kubectl get pod -o wide
NAME            READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
http-rc-l2sp6   1/1     Running   0          98s   10.244.1.5   node01   <none>           <none>
http-rc-xghkm   1/1     Running   0          98s   10.244.2.5   node02   <none>           <none>
[root@master yaml]# kubectl delete -f rc.yaml

2)ReplicaSet (RS)

基本概念

ReplicaSet是Replication Controller的替代者,確保Pod副本數(shù)在任一時刻都精確滿足期望值。用來確保容器應(yīng)用的副本數(shù)始終保持在用戶定義的副本數(shù),即如果有容器異常退出,會自動創(chuàng)建新的Pod來替代;而如果異常多出來的容器也會自動回收。雖然ReplicaSet可以獨立使用,但一般還是建議使用 Deployment 來自動管理ReplicaSet,這樣就無需擔(dān)心跟其他機制的不兼容問題(比如ReplicaSet不支持rolling-update但Deployment支持)。也就是說Replicaset通常不會直接創(chuàng)建,而是在創(chuàng)建高層級的deployment資源時自動創(chuàng)建。

RS與RC相比,RS不僅支持等值的標(biāo)簽器,而且還支持基于集合的標(biāo)簽選擇器;

ReplicaSet(RS)主要功能:

  • 確保Pod數(shù)量;
  • 確保Pod健康;
  • 彈性伸縮;
  • 滾動更新;

應(yīng)用示例

[root@master yaml]# cat rs.yaml 
kind:  ReplicaSet
apiVersion: apps/v1
metadata:
  name: http-rs
spec:
  replicas: 2
  selector:
    matchLabels:
      name: http-rs
  template:
    metadata:
      labels:
        name: http-rs
    spec:
      containers:
      - name: http-rs
        image: httpd
[root@master yaml]# kubectl apply -f rs.yaml 
[root@master yaml]# kubectl get rs http-rs 
NAME      DESIRED   CURRENT   READY   AGE
http-rs   2         2         2       11s
[root@master yaml]# kubectl get pod -o wide
NAME            READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
http-rs-2sstf   1/1     Running   0          19s   10.244.1.6   node01   <none>           <none>
http-rs-jm8ph   1/1     Running   0          19s   10.244.2.6   node02   <none>           <none>
[root@master yaml]# kubectl delete -f rs.yaml

根據(jù)上面的yaml文件可以看出,ReplicaSet和Replication Controller的template部分是一樣的,但是selector處不一樣。Replication Controller用selector , ReplicaSet用 selector.matchLables選擇器 ,這樣更簡單,更具有表達力!

RS支持的spec.selector 支持matchLabels和matchExpressions兩種匹配機制!

ReplicaSet 與 Replication Controller 的區(qū)別

  • ReplicaSet 標(biāo)簽選擇器的能力更強;
  • Replication Controller只能指定標(biāo)簽名:標(biāo)簽值;
  • Replicaset 可以指定env=pro,env=devel ,也可以指定只要包含env標(biāo)簽就行,理解為env=*;

總之,目前來說,RS可以代替RC的所有的功能,而且RC已經(jīng)處于快被淘汰的邊緣!

3)Deployment

基本概念

Deployment構(gòu)建于ReplicaSet之上,支持事件和狀態(tài)查看、回滾、版本記錄、暫停和啟動升級;Deployment有多種自動更新方案:Recreate,先刪除再新建;RollingUpdate,滾動升級,逐步替換。Deployment為Pod和Replica Set(下一代Replication Controller)提供聲明式更新,它可以更加方便的管理Pod和Replica Set。只需要在 Deployment 中描述想要的目標(biāo)狀態(tài)是什么,Deployment controller 就會幫您將 Pod 和ReplicaSet 的實際狀態(tài)改變到您的目標(biāo)狀態(tài)。此外,也可以定義一個全新的 Deployment 來創(chuàng)建 ReplicaSet 或刪除已有Deployment 并創(chuàng)建一個新的來替換。

Deployment控制器典型的應(yīng)用如下:

  • 使用Deployment來創(chuàng)建ReplicaSet (即RS)。RS在后臺創(chuàng)建pod。檢查啟動狀態(tài),看它是成功還是失?。?/li>
  • 接著通過更新Deployment的PodTemplateSpec字段來聲明Pod的新狀態(tài);這會創(chuàng)建一個新的RS,Deployment會按照控制的速率將pod從舊的RS移動到新的RS中;
  • 如果當(dāng)前狀態(tài)不穩(wěn)定,回滾到之前的Deployment revision。每次回滾都會更新Deployment的revision;
  • 擴容Deployment以滿足更高的負載;
  • 暫停Deployment來應(yīng)用PodTemplateSpec的多個修復(fù),然后恢復(fù)上線;
  • 根據(jù)Deployment 的狀態(tài)判斷上線是否hang住了;
  • 清除舊的不必要的 ReplicaSet;

Deployment和RC、RS一樣都是Kubernetes的一個核心內(nèi)容,主要職責(zé)同樣是為了保證pod的數(shù)量和健康,90%的功能與Replication Controller完全一樣,可以看做新一代的Replication Controller。

但是,它又具備了Replication Controller之外的新特性:

  • RC的全部功能;
  • 事件和狀態(tài)查看;
  • 回滾;
  • 版本記錄;
  • 暫停和啟動;
  • 多種升級方案;

一般情況下,個人推薦使用Deployment!

應(yīng)用示例

[root@master yaml]# cat deployment.yaml 
kind:  Deployment
apiVersion: extensions/v1beta1
metadata:
  name: http-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      name: http-deployment
  template:
    metadata:
      labels:
        name: http-deployment
    spec:
      containers:
      - name: http-deployment
        image: httpd
[root@master yaml]# kubectl apply -f deployment.yaml 
[root@master yaml]# kubectl get deployments. http-deployment 
NAME              READY   UP-TO-DATE   AVAILABLE   AGE
http-deployment   2/2     2            2           9s
[root@master yaml]# kubectl get pod -o wide
NAME                               READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
http-deployment-548ddf7b65-77vfk   1/1     Running   0          18s   10.244.1.7   node01   <none>           <none>
http-deployment-548ddf7b65-hdczk   1/1     Running   0          18s   10.244.2.7   node02   <none>           <none>
[root@master yaml]# kubectl delete -f deployment.yaml

4)DaemonSet(DS)

基本概念

DaemonSet確保全部(或者一些)Node節(jié)點上運行一個Pod 的副本,可使用節(jié)點選擇器及節(jié)點標(biāo)簽指定Pod僅在部分Node節(jié)點運行。當(dāng)有Node加入集群時,會為他們新增一個Pod;當(dāng)有Node從集群移除時,這些Pod也會被回收。刪除 DaemonSet將會刪除它創(chuàng)建的所有Pod。DaemonSet常用于存儲、日志、監(jiān)控類守護進程。

DeamonSet簡單的用法是,在所有的 Node 上都存在一個 DaemonSet,將被作為每種類型的 daemon 使用。 一個稍微復(fù)雜的用法可能是,對單獨的每種類型的 daemon 使用多個 DaemonSet,但具有不同的標(biāo)志,和/或?qū)Σ煌布愋途哂胁煌膬?nèi)存、CPU要求。

應(yīng)用示例

[root@master yaml]# cat ds.yaml 
kind:  DaemonSet
apiVersion: extensions/v1beta1
metadata:
  name: http-ds
spec:
  selector:
    matchLabels:
      name: http-ds
  template:
    metadata:
      labels:
        name: http-ds
    spec:
      containers:
      - name: http-ds
        image: httpd
[root@master yaml]# kubectl apply -f ds.yaml 
daemonset.extensions/http-ds created
[root@master yaml]# kubectl get ds http-ds 
NAME      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
http-ds   2         2         2       2            2           <none>          17s
[root@master yaml]# kubectl get pod
NAME            READY   STATUS    RESTARTS   AGE
http-ds-gkscx   1/1     Running   0          39s
http-ds-nbq69   1/1     Running   0          39s
[root@master yaml]# kubectl delete -f ds.yaml

注意:DaemonSet中不可寫replicas(副本)數(shù)量。它會根據(jù)當(dāng)前k8s集群中的node自動生成!

——————————本文到此結(jié)束,感謝閱讀——————————————

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站題目:Kubernetes之標(biāo)簽與Pod控制器詳解-創(chuàng)新互聯(lián)
本文來源:http://jinyejixie.com/article34/dedope.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、App開發(fā)、企業(yè)網(wǎng)站制作、做網(wǎng)站、App設(shè)計、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
泰和县| 玉环县| 乌鲁木齐市| 怀集县| 镇赉县| 若尔盖县| 如皋市| 汾阳市| 那坡县| 吐鲁番市| 潞城市| 苏尼特左旗| 沙雅县| 巴林右旗| 三台县| 慈利县| 广宁县| 宣城市| 安义县| 方山县| 页游| 汶川县| 霍邱县| 廊坊市| 潮州市| 大同市| 会同县| 满洲里市| 昭觉县| 密山市| 亚东县| 建湖县| 京山县| 彝良县| 肇源县| 宜兴市| 宁阳县| 长泰县| 光山县| 来凤县| 周宁县|