<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] > 1. k8s提供五種控制器Deployment、DaemonSet、StatefulSet、Job和Cronjob > 2. 控制器可以保證pod的副本數,保證服務的運行,也可以平滑升級容器版本如Deployment # 1. Deployment ## 1.1 基礎概念 > 1. Deployment是一種控制器資源,控制pod和ReplicaSet,通過控制replicaSet間接完成對pod的期望控制 > 2. Deployment用來取代老的ReplicationController > 3. Deployment可以 ## 1.2 功能 1. Deployment用來創建ReplicaSet,ReplicaSet創建pod,也可以不用Deployment,直接用ReplicaSet直接創建Pod 2. 滾動升級和回滾`->`不影響服務正常運行 3. 擴縮容 4. 啟動、停止和刪除Deployment ## 1.3 功能實踐 ### 1.3.1 通過ReplicaSet創建pod **1. ReplicaSet創建** ``` apiVersion: apps/v1 kind: ReplicaSet metadata: # RS 元素信息 name: rsnginx # RS 名稱 labels: # 自定義標簽 app: test # RS 標簽 tier: nginx # RS 標簽 spec: replicas: 3 # Pod 副本數 selector: # 選擇標簽 matchLabels: # 匹配標簽 tier: ng-pod # 匹配 frontend 標簽 template: # Pod 模板 metadata: # Pod 元素信息 labels: # 自定義標簽 tier: ng-pod # 標簽 frontend spec: containers: - name: mynginx # 容器名稱 image: nginx:1.14.0 # 鏡像地址 ``` **2. 利用文件創建** `kubectl apply -f rs_nginx.yaml` ``` [root@master ~]# kubectl get rs NAME DESIRED CURRENT READY AGE nginx-deployment-6876dc68c9 3 3 1 41h rsnginx 3 3 3 95s ``` > pod名稱 = Deployment名稱-ReplicaSet名稱-隨機字母 ``` [root@master ~]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 3 4d14h run=nginx nginx-deployment-6876dc68c9-gpjjv 1/1 Running 1 41h app=nginx,pod-template-hash=6876dc68c9 nginx-deployment-6876dc68c9-j7vhl 0/1 Completed 0 41h app=nginx,pod-template-hash=6876dc68c9 nginx-deployment-6876dc68c9-sdcdx 0/1 Completed 0 41h app=nginx,pod-template-hash=6876dc68c9 nginx2 1/1 Running 2 2d18h run=nginx2 rsnginx-fj6hg 1/1 Running 0 7m20s tier=ng-pod rsnginx-j6djf 1/1 Running 0 7m20s tier=ng-pod rsnginx-thpmb 1/1 Running 0 7m20s tier=ng-pod ``` **3. 修改pod標簽** ``` [root@master ~]# kubectl label pod rsnginx-j6djf tier=ng-podbak --overwrite pod/rsnginx-j6djf labeled [root@master ~]# [root@master ~]# [root@master ~]# kubectl get pods --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx 1/1 Running 3 4d14h run=nginx nginx-deployment-6876dc68c9-gpjjv 1/1 Running 1 41h app=nginx,pod-template-hash=6876dc68c9 nginx-deployment-6876dc68c9-j7vhl 0/1 Completed 0 41h app=nginx,pod-template-hash=6876dc68c9 nginx-deployment-6876dc68c9-sdcdx 0/1 Completed 0 41h app=nginx,pod-template-hash=6876dc68c9 nginx2 1/1 Running 2 2d18h run=nginx2 rsnginx-fj6hg 1/1 Running 0 9m6s tier=ng-pod rsnginx-hlqlc 1/1 Running 0 3s tier=ng-pod rsnginx-j6djf 1/1 Running 0 9m6s tier=ng-podbak rsnginx-thpmb 1/1 Running 0 9m6s tier=ng-pod ``` 因為rs或Deployment根據標簽Label識別pod 修改標簽后,相當于pod少了一個,rs維持了pod的副本數,又增加了一個pod 但是ReplicaSet不能滾動升級 ### 1.3.2 通過Deployment創建pod deployment 不寫 matchLabels: app: nginx **1. yaml配置文件** ``` apiVersion: apps/v1 kind: Deployment metadata: labels: app: nginx name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.0 name: nginx tolerations: - key: "disktype" operator: "Equal" value: "ssd" effect: "NoExecute" ``` **2. 通過yaml文件創建pod** `kubectl apply -f nginx-dp.yaml` 注意名稱的變化 **3. 擴縮容** --replicas=4,改變數量達到擴縮容 ``` [root@master ~]# kubectl scale deployment nginx-deployment --replicas=4 deployment.apps/nginx-deployment scaled [root@master ~]# [root@master ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx 1/1 Running 3 4d14h nginx-deployment-6876dc68c9-67hdm 0/1 ContainerCreating 0 13s nginx-deployment-6876dc68c9-gpjjv 1/1 Running 1 41h nginx-deployment-6876dc68c9-j7vhl 0/1 Completed 0 41h nginx-deployment-6876dc68c9-sdcdx 0/1 Completed 0 41h ``` **4. 更新鏡像** 【格式】:kubectl set image Deployment名稱 容器名稱=鏡像 `kubectl set image deployment/nginx-deployment nginx=nginx:latest` 原來的rs被停止 ``` [root@master ~]# kubectl get rs NAME DESIRED CURRENT READY AGE nginx-deployment-65875d475b 3 3 3 21s nginx-deployment-6876dc68c9 0 0 0 14m ``` **5.回滾鏡像** 【格式】`kubectl rollout undo [Deployment名稱]` ``` [root@master ~]# kubectl get rs NAME DESIRED CURRENT READY AGE nginx-deployment-65875d475b 2 2 2 5m4s nginx-deployment-6876dc68c9 2 2 1 19m [root@master ~]# kubectl get rs NAME DESIRED CURRENT READY AGE nginx-deployment-65875d475b 1 1 1 5m6s nginx-deployment-6876dc68c9 3 3 2 19m [root@master ~]# kubectl get rs NAME DESIRED CURRENT READY AGE nginx-deployment-65875d475b 0 0 0 5m8s nginx-deployment-6876dc68c9 3 3 3 19m ``` 如上,鏡像變更沒有使得原來的rs(ReplicaSet)全部停止,達到平穩升級的效果 也可以set指定鏡像版本,達到回滾的目的, **6. 回滾到指定版本** 1. 查看歷史版本 `kubectl rollout history DeploymentName` 2. 回滾到指定版本 `kubectl rollout undo deployment/nginx-deployment --to-revision=3` ### 1.3.3 根據負載動態擴縮容 https://www.cnblogs.com/l-hh/p/14840573.html # 2. DaemonSet ## 2.1 功能 1. 確保每個(某些)節點都有這個pod,新加入的節點自動部署pod **DaemonSet 典型應用場景:** * 運行集群存儲,例如在每個Node上運行`glusterd`、`ceph`等 * 每個Node 上運行日志收集,例如`fluentd`、`logstash`等 * 每個Node上運行監控程序,例如`Prometheus Node Exporter`、`collectd`等 ## 2.2 使用 ### 2.1 每個節點都部署pod ``` apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset labels: app: daemonset spec: selector: matchLabels: name: daemonset-ng template: metadata: labels: name: daemonset-ng spec: containers: - name: mynginx image: nginx:1.14.0 ``` 每個節點都有一個pod ``` [root@master ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES daemonset-c8w2j 1/1 Running 0 14s 10.244.1.31 node01 <none> <none> daemonset-tg2c8 1/1 Running 0 14s 10.244.2.19 node02 <none> <none> ``` # 3. StatefulSet ## 3.1 功能 1. StatefulSet 是用來管理**有狀態服務**,為了解決有狀態服務的問題,而 Deployment 和 ReplicaSet 更適用于無狀態服務的部署。 2. StatefulSet的pod無論怎么調度,每個 Pod 都有一個永久不變的 ID。 **StatefulSet 應用場景:** * 穩定的、唯一的網絡標識符。 * 穩定的、持久的存儲。 * 有序的、優雅的部署和縮放。 * 有序的、自動的滾動更新。 # 4. Job ## 4.1 功能 1. Job 負載批處理任務,**僅執行一次的任務**,它能夠保證批處理任務的一個或者多個 Pod 成功執行結束。 2. 可以設置 Job 執行成功的數值,Job 跟蹤記錄成功完成的 Pod 個數,當數量達到指定的成功個數閾值時,任務結束。 3. 如果 Jod 沒有以`0代碼`成功退出的話,它會重新執行這個程序。 ``` apiVersion: batch/v1 kind: Job metadata: name: pi # Job 名稱 spec: template: spec: containers: - name: pi # Pod 名稱 image: perl # 鏡像名稱 command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] # 計算圓周率,計算小數點后 2000 位 restartPolicy: Never # 重啟策略,永不重啟 backoffLimit: 4 # 設置重試次數,達到后將 Job 標記為失敗 ``` 其他參數 `.spec.completions`標志 Job 需要成功完成 Pod 個數,才視為整個 Job 完成。(默認1) `.spec.parallelism`標志 Pod 并行運行個數。(默認1) `.spec.activeDeadlineSeconds`標志 Job 的整個生命期,一旦 Job 運行時間達到設定值,則所有運行中的 Pod 都會被終止。(秒數值) # 5. Cronjob 定期的執行Job
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看