91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

k8s的ReplicaSet,DaemonSet及標簽

發布時間:2020-03-01 17:19:27 來源:網絡 閱讀:776 作者:mb5cd21e691f31a 欄目:云計算

環境介紹

主機 IP地址 服務
master 192.168.1.21 k8s
node01 192.168.1.22 k8s
node02 192.168.1.23 k8s

基于[ https://blog.51cto.com/14320361/2464655]() 的實驗繼續進行

ReplicaSet簡單介紹

1. RC:ReplicationController(老一代的pod控制器)

用來確保由其管控的Pod對象副本數量,能夠滿足用戶期望,多則刪除,少則通過模本創建

特點:

  • ? 確保Pod資源對象的數量精準。
  • ? 確保pod健康運行。
  • ? 彈性伸縮

同樣,它也可以通過yaml或json格式的資源清單來創建。其中spec字段一般嵌套以下字段:

  • ? replicas:期望的Pod對象副本數量。
  • ? selector:當前控制器匹配Pod對此項副本的標簽選擇器
  • ? template:pod副本的模板

與RC相比而言,RS不僅支持基于等值的標簽選擇器,而且還支持基于集合的標簽選擇器。

2. 標簽:解決同類型的資源對象,為了更好的管理,按照標簽分組。

常用的標簽分類:

  • ? release(版本):stable(穩定版)、canary(金絲雀版本)、beta(測試版本)
  • ? environment(環境變量):dev(開發)、qa(測試)、production(生產)
  • ? application(應用):ui、as(application software應用軟件)、pc、sc
  • ? tier(架構層級):frontend(前端)、backend(后端)、cache(緩存)
  • ? partition(分區):customerA(客戶A)、customerB(客戶B)
  • ? track(品控級別):daily(每天)、weekly(每周)

標簽要做到:見名知意。

3.測試

(1)編寫一個pod的yaml文件

[root@master ~]# vim label.yaml 

kind: Pod
apiVersion: v1
metadata:
  name: labels
  labels:
    env: qa
    tier: frontend
spec:
  containers:
  - name: myapp
    image: httpd
<1>執行一下
[root@master ~]# kubectl apply -f label.yaml  --record 
<2>查看一下
[root@master ~]# kubectl get pod  --show-labels 
//通過--show-labels顯示資源對象的

k8s的ReplicaSet,DaemonSet及標簽

[root@master ~]# kubectl get po -L env,tier
//顯示某個鍵對應的值

k8s的ReplicaSet,DaemonSet及標簽

[root@master ~]# kubectl get po -l env,tier
//通過-l 查看僅包含某個標簽的資源。

k8s的ReplicaSet,DaemonSet及標簽

(2)添加標簽

[root@master ~]# kubectl label pod  labels app=pc
//給pod資源添加標簽

(3)修改標簽

[root@master ~]# kubectl label pod labels env=dev --overwrite
//修改標簽
[root@master ~]# kubectl get pod -l tier --show-labels 
//查看標簽

k8s的ReplicaSet,DaemonSet及標簽

(4)編寫一個service的yaml文件

[root@master ~]# vim service.yaml
kind: Service
apiVersion: v1
metadata:
  name: service
spec:
  type: NodePort
  selector:
    env: qa
  ports:
  - protocol: TCP
    port: 90
    targetPort: 80
    nodePort: 30123
<1>執行一下
[root@master ~]# kubectl apply -f service.yaml 
<2>查看一下
[root@master ~]# kubectl describe svc

k8s的ReplicaSet,DaemonSet及標簽

<3>訪問一下
[root@master ~]# curl 127.0.0.1:30123

k8s的ReplicaSet,DaemonSet及標簽

如果標簽有多個,標簽選擇器選擇其中一個,也可以關聯成功。相反,如果選擇器有多個,那么標簽必須完全滿足條件,才可以關聯成功。

4. 標簽選擇器:標簽的查詢過濾條件。

[基于等值關系的(equality-based)]():“=”,“==”,“! =”前面兩個都是相等,最后一個是不等于。

[基于集合關系(set-based)]():in、notin、exists三種。選擇器列表間為“邏輯與”關系,使用ln或者NotIn操作時,其valuas不強制要求為非空的字符串列表,而使用Exists或DostNotExist時,其values必須為空

使用標簽選擇器的邏輯:
  • 同時指定的多個選擇器之間的邏輯關系為“與”操作。
  • 使用空值的標簽選擇器意味著每個資源對象都將把選中。
  • 空的標簽選擇器無法選中任何資源。

(1)例子

k8s的ReplicaSet,DaemonSet及標簽

編寫一個selector的yaml'文件
[root@master ~]# vim selector.yaml
selector:
  matchLabels:
    app: nginx
  mathExpressions:
    - {key: name,operator: In,values: [zhangsan,lisi]}
    - {key: age,operator: Exists,values:}
  • selector:當前控制器匹配Pod對此項副本的標簽選擇器
  • matchLabels: 指定鍵值對表示的標簽選擇器。
  • mathExpressions::基于表達式來指定的標簽選擇器。

DaemonSet

它也是一種pod控制器。

RC,RS , deployment , daemonset.都是pod控制器。statfukSet,RBAC

1. 使用場景:

如果必須將pod運行在固定的某個或某幾個節點,且要優先于其他的pod的啟動。通常情況下,默認會將每一個節點都運行,并且只能運行一個pod。這種情況推薦使用DeamonSet資源對象。

  • 監控程序;
  • 日志收集程序;
  • 集群存儲程序;
[root@master ~]# kubectl get ds -n kube-system 
//查看一下DaemonSet

2. DaemonSet 與 Deployment 的區別

  • Deployment 部署的副本 Pod 會分布在各個 Node 上,每個 Node 都可能運行好幾個副本。
  • DaemonSet 的不同之處在于:每個 Node 上最多只能運行一個副本。

3. 運行一個web服務,在每一個節點運行一個pod。

[root@master ~]# vim daemonset.yaml

kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
  name: test-ds
spec:
  template:
    metadata:
      labels:
        name: test-ds
    spec:
      containers:
      - name: test-ds
        image: httpd
<1>執行一下
[root@master ~]# kubectl apply -f daemonset.yaml 
<2>查看一下
[root@master ~]# kubectl get ds

k8s的ReplicaSet,DaemonSet及標簽

總結

1)總結RC、RS、Deplyment、DaemonSet控制器的特點及使用場景。

<1>Replication Controller(RC)

介紹及使用場景

Replication Controller簡稱RCRCKubernetes系統中的核心概念之一,簡單來說,RC可以保證在任意時間運行Pod的副本數量,能夠保證Pod總是可用的。如果實際Pod數量比指定的多那就結束掉多余的,如果實際數量比指定的少就新啟動一些Pod,當Pod失敗、被刪除或者掛掉后,RC都會去自動創建新的Pod來保證副本數量,所以即使只有一個Pod,我們也應該使用RC來管理我們的Pod

主要功能
  • 確保pod數量:RC用來管理正常運行Pod數量,一個RC可以由一個或多個Pod組成,在RC被創建后,系統會根據定義好的副本數來創建Pod數量。在運行過程中,如果Pod數量小于定義的,就會重啟停止的或重新分配Pod,反之則殺死多余的。
  • 確保pod健康:當pod不健康,運行出錯或者無法提供服務時,RC也會殺死不健康的pod,重新創建新的。
  • 彈性伸縮 :在業務高峰或者低峰期的時候,可以通過RC動態的調整pod的數量來提高資源的利用率。同時,配置相應的監控功能(Hroizontal Pod Autoscaler),會定時自動從監控平臺獲取RC關聯pod的整體資源使用情況,做到自動伸縮。
  • 滾動升級:滾動升級為一種平滑的升級方式,通過逐步替換的策略,保證整體系統的穩定,在初始化升級的時候就可以及時發現和解決問題,避免問題不斷擴大。

<2>Replication Set(RS)

被認為 是“升級版”的RC。RS也是用于保證與label selector匹配的pod數量維持在期望狀態。

實際上RSRC的功能基本一致,目前唯一的一個區別就是RC只支持基于等式的selector(env=dev或app=nginx),但RS還支持基于集合的selector(version in (v1, v2)),這對復雜的運維管理就非常方便了。

kubectl命令行工具中關于RC的大部分命令同樣適用于我們的RS資源對象。不過我們也很少會去單獨使用RS,它主要被Deployment這個更加高層的資源對象使用,除非用戶需要自定義升級功能或根本不需要升級Pod,在一般情況下,我們推薦使用Deployment而不直接使用Replica Set

區別在于

1、RC只支持基于等式的selector(env=dev或environment!=qa),但RS還支持新的,基于集合的selector(version in (v1.0, v2.0)或env notin (dev, qa)),這對復雜的運維管理很方便。

2、升級方式

  • RS不能使用kubectlrolling-update進行升級
  • kubectl rolling-update專用于rc
  • RS升級使用deployment或者kubectl replace命令
  • 社區引入這一API的初衷是用于取代vl中的RC,也就是說當v1版本被廢棄時,RC就完成了它的歷史使命,而由RS來接管其工作

<3>DaemonSet

1. 特點:

如果必須將pod運行在固定的某個或某幾個節點,且要優先于其他的pod的啟動。通常情況下,默認會將每一個節點都運行,并且只能運行一個pod。這種情況推薦使用DeamonSet資源對象。

一個DaemonSet對象能確保其創建的Pod在集群中的每一臺(或指定)Node上都運行一個副本。如果集群中動態加入了新的Node,DaemonSet中的Pod也會被添加在新加入Node上運行。刪除一個DaemonSet也會級聯刪除所有其創建的Pod。

2. 使用環境
  • 監控程序;
  • 日志收集程序;
  • 集群存儲程序;

<4>Deployment

1. 什么是Deployment

Kubernetes Deployment提供了官方的用于更新Pod和Replica Set(下一代的Replication Controller)的方法,您可以在Deployment對象中只描述您所期望的理想狀態(預期的運行狀態),Deployment控制器為您將現在的實際狀態轉換成您期望的狀態,例如,您想將所有的webapp:v1.0.9升級成webapp:v1.1.0,您只需創建一個Deployment,Kubernetes會按照Deployment自動進行升級。現在,您可以通過Deployment來創建新的資源(pod,rs,rc),替換已經存在的資源等。

你只需要在Deployment中描述你想要的目標狀態是什么,Deployment controller就會幫你將Pod和Replica Set的實際狀態改變到你的目標狀態。你可以定義一個全新的Deployment,也可以創建一個新的替換舊的Deployment。

2. 典型的用例
  • 使用Deployment來創建ReplicaSet。ReplicaSet在后臺創建pod。檢查啟動狀態,看它是成功還是失敗。
  • 然后,通過更新Deployment的PodTemplateSpec字段來聲明Pod的新狀態。這會創建一個新的ReplicaSet,Deployment會按照控制的速率將pod從舊的ReplicaSet移動到新的ReplicaSet中。
  • 如果當前狀態不穩定,回滾到之前的Deployment revision。每次回滾都會更新Deployment的revision。
  • 擴容Deployment以滿足更高的負載。
  • 暫停Deployment來應用PodTemplateSpec的多個修復,然后恢復上線。
  • 根據Deployment 的狀態判斷上線是否hang住了。
  • 清除舊的不必要的ReplicaSet。
3. 使用環境

Deployment集成了上線部署、滾動升級、創建副本、暫停上線任務,恢復上線任務,回滾到以前某一版本(成功/穩定)的Deployment等功能,在某種程度上,Deployment可以幫我們實現無人值守的上線,大大降低我們的上線過程的復雜溝通、操作風險。

  • 定義Deployment來創建Pod和ReplicaSet
  • 滾動升級和回滾應用
  • 擴容和縮容
  • 暫停和繼續Deployment
3. DaemonSet 與 Deployment 的區別
  • Deployment 部署的副本 Pod 會分布在各個 Node 上,每個 Node 都可能運行好幾個副本。
  • DaemonSet 的不同之處在于:每個 Node 上最多只能運行一個副本。

2)使用DaemonSet控制器運行httpd服務,要求名稱以自己的名稱命名。標簽為:tier=backend,env=dev.

[root@master ~]# vim daemonset.yaml 
kind: DaemonSet
apiVersion: extensions/v1beta1
metadata:
  name: xgp-ds
spec:
  template:
    metadata:
      labels:
        tier: backend
        env: dev
    spec:
      containers:
      - name: xgp-ds
        image: httpd

查看一下

[root@master ~]# kubectl get pod  --show-labels 

k8s的ReplicaSet,DaemonSet及標簽

[root@master ~]# kubectl get pod -L env,tier

k8s的ReplicaSet,DaemonSet及標簽

3) 創建service資源對象與上述資源進行關聯,要有驗證。

[root@master ~]# vim service.yaml 
kind: Service
apiVersion: v1
metadata:
  name: service
spec: 
  type: NodePort
  selector: 
    env: dev
  ports:    
  - protocol: TCP
    port: 90 
    targetPort: 80
    nodePort: 30123 

執行一下

[root@master ~]# kubectl apply -f service.yaml 

查看一下

[root@master ~]# kubectl describe svc

k8s的ReplicaSet,DaemonSet及標簽

訪問一下

[root@master ~]# curl 127.0.0.1:30123

k8s的ReplicaSet,DaemonSet及標簽

4)整理關于標簽和標簽選擇器都有什么作用?

<1>標簽:解決同類型的資源對象,為了更好的管理,按照標簽分組。

<2>標簽選擇器:標簽的查詢過濾條件。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大丰市| 屏山县| 鲁山县| 当雄县| 普兰店市| 晴隆县| 岚皋县| 宁明县| 绵竹市| 宜宾市| 泌阳县| 南安市| 平乡县| 越西县| 丹阳市| 合水县| 邓州市| 顺义区| 婺源县| 探索| 扶绥县| 司法| 济源市| 射洪县| 中卫市| 内丘县| 丰镇市| 上栗县| 华坪县| 澄迈县| 赤城县| 林甸县| 永修县| 溆浦县| 黄冈市| 赣州市| 灵石县| 高清| 钟山县| 高州市| 河津市|