CKA考生注意:這些Deployment要點能助你一臂之力!

往期精彩文章 :

  • 提升CKA考試勝算:一文帶你全面了解RBAC權限控制!
  • 揭秘高效運維:如何用kubectl top命令實時監控K8s資源使用情況?
  • CKA認證必備:掌握k8s網絡策略的關鍵要點
  • 提高CKA認證成功率,CKA真題中的節點維護全攻略!
  • 數據無憂,一學就會:掌握CKA認證必備的etcd備份與還原秘籍!
  • 提升你的云技能:深入了解CKA認證之k8s升級秘籍!
  • 揭秘CKA認證:Service四層代理的神秘面紗
  • 提升CKA認證成功率:Kubernetes Ingress七層代理全攻略!

什么是Deployment

在Kubernetes中,Deployment是一種API對象,用于定義和管理Pod的部署方式。它提供了一種聲明性的方法,允許您描述應用程序的期望狀態,而不必關心具體的部署細節。Deployment的主要目標是確保所定義的Pod副本數一直運行在集群中,并支持滾動更新和回滾操作。
以下是Deployment的關鍵特性和功能:

  1. 聲明式配置: 使用Deployment,您可以通過YAML文件描述應用程序的期望狀態,包括Pod的數量、所使用的鏡像、端口等。
  2. 自動化的滾動更新: 當您需要更新應用程序時,可以通過修改Deployment的配置來實現。Deployment將負責逐步更新Pod,確保在整個過程中保持應用程序的可用性。
  3. 副本集管理: Deployment使用副本集(ReplicaSet)來確保指定數量的Pod實例一直運行。如果有Pod失敗或被刪除,Deployment會啟動新的Pod來替代它們。
  4. 滾動回滾: 如果在更新中發現問題,您可以輕松地執行回滾操作,將Deployment回退到之前的版本,從而恢復到穩定狀態。
  5. 自動修復: Deployment會自動監測Pod的運行狀況,并在出現故障時嘗試自動修復。如果Pod失敗,Deployment將啟動新的Pod,以確保所需數量的副本一直在運行。

Deployment基本使用

創建Deployment

創建Deployment資源有兩種方式,一種是書寫資源清單方式,一種是通過kubectl命令行的方式創建。下面的 yaml 文件定義了一個 Deployment,該 Deployment 將創建一個有 3 個 nginx Pod 副本的 ReplicaSet(副本集):

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.7.9ports:- containerPort: 80

在這個例子中:

  • 將創建一個名為 nginx-deployment 的 Deployment(部署),名稱由.metadata.name字段指定
  • 該 Deployment 將創建 3 個 Pod 副本,副本數量由 .spec.replicas 字段指定
  • .spec.selector 字段指定了 Deployment 如何找到由它管理的 Pod。此案例中,我們使用了 Pod template 中定義的一個標簽(app: nginx)。對于極少數的情況,這個字段也可以定義更加復雜的規則
  • .template 字段包含了如下字段:
    • .template.metadata.labels 字段,指定了 Pod 的標簽(app: nginx)
    • .template.spec.containers[].image 字段,表明該 Pod 運行一個容器 nginx:1.7.9
    • .template.spec.containers[].name 字段,表明該容器的名字是 nginx執行命令以創建 Deployment執行命令以創建 Deployment

執行命令以創建 Deployment

kubectl apply -f nginx-deployment.yaml

或者通過下面的命令創建

kubectl create deploy  nginx-deployment --image=nginx:1.7.9 --port=80 --replicas=3

創建成功,可以通過下面的命令查詢

controlplane $ kubectl get deploy
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           10s
controlplane $ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-867765c857-24rdz   1/1     Running   0          54s
nginx-deployment-867765c857-6r86m   1/1     Running   0          54s
nginx-deployment-867765c857-xj7c5   1/1     Running   0          54s

Deploy擴容

通過修改 Deployment 的 spec.replicas 字段來指定期望的副本數。例如,現在需要把上述的nginx-deployment的副本數修改5。可以通過kubect edit deploy nginx-deployment進行修改。

spec.replicas從原來的3修改成5。保存退出編輯。然后通過如下命令查看,nginx-deployment就成功的從3個副本數變成了5個。

controlplane $ kubectl get deployments.apps 
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   5/5     5            5           5m17s
controlplane $ kubectl get pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-867765c857-24rdz   1/1     Running   0          6m13s
nginx-deployment-867765c857-6r86m   1/1     Running   0          6m13s
nginx-deployment-867765c857-vfr55   1/1     Running   0          62s
nginx-deployment-867765c857-vrj4f   1/1     Running   0          62s
nginx-deployment-867765c857-xj7c5   1/1     Running   0          6m13s

或者也可通過下面的命令進行擴容

controlplane $ kubectl scale deployment nginx-deployment --replicas=5
deployment.apps/nginx-deployment scaled

滾動更新

滾動更新介紹

滾動更新是一種自動化程度較高的發布方式,用戶體驗比較平滑,是目前成熟型技術組織所采用的主流發布方式,一次滾動發布一般由若干個發布批次組成,每批的數量一般是可以配置的(可以通過發布模板定義),例如第一批1臺,第二批10%,第三批50%,第四批100%。每個批次之間留觀察間隔,通過手工驗證或監控反饋確保沒有問題再發下一批次,所以總體上滾動式發布過程是比較緩慢的。

查看控制器策略

可以通過kubectl explain deploy.spec.strategy查看控制器策略。如下圖:

deploy更新方式

支持兩種更新,**Recreate****RollingUpdate**

  • Recreate是重建式更新,刪除一個更新一個
  • RollingUpdate 滾動更新,定義滾動更新的更新方式的,也就是pod能多幾個,少幾個,控制更新力度的。
RollingUpdate

通過kubectl explain deploy.spec.strategy.RollingUpdate查看滾動更新幫助文檔。如下圖:

**maxSurge(最大擴展的值)和maxUnavailable(最大不可用)用來控制滾動更新的策略,**取值范圍分為數值和百分比

  1. 先來看百分比
    • maxUnavailable: [0%, 100%] 向下取整,比如10個副本,5%的話==0.5個,但計算按照0個
    • maxSurge: [0%, 100%] 向上取整,比如10個副本,5%的話==0.5個,但計算按照1個
  2. 再來看數值
    • maxUnavailable: [0, 副本數]
    • maxSurge: [0, 副本數]
Recreate

把deploy更新策略變成Recreate

apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentlabels:app: nginx
spec:replicas: 3strategy:type: Recreate
...省略...

通過以下命令更新。

kubectl apply -f deploy-demo1.yaml#另一個窗口實時監控
kubectl get pods -w

輸出的結果如下:

詳細deployment的使用可以參考如下
介紹 Deployment
Deployments

CKA真題

  1. 真題截圖

  1. 中文解析

切換 k8s 集群環境:kubectl config use-context k8s
Task
loadbalancer 的 deployment 管理的 Pod 的副本數擴容成 6 個。

  1. 參考文檔

Deployments

  1. 解題作答
    • 切換集群環境
kubectl config use-context k8s
  • 檢查現有的Pod數量
kubectl get deploy loadbalancer  -o wide
  • 擴容loadbalancer 的 deployment 管理的 Pod 的副本數擴容成 6 個
kubelct scale deploy loadbalancer  --replicas=6
  • 檢查Pod的數量
kubectl get pod  

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

68-解構賦值,迭代器,生成器函數

1.解構賦值(針對數組array&#xff0c;字符串String及對象object以) 結構賦值是一種特殊的語法&#xff0c;通過將各種結構中的元素復制到變量中達到"解構"的目的&#xff0c;但是數組本身沒有改變 1.1解構單層數組 <script>let arr [1,2,3,4,5];//獲取數組…

c++ primer學習筆記(一)

目錄 第一章、c快速入門 重點&#xff1a;類的簡介 第二章 1、基本內置類型 2、字面值常量 1、整型字面值規則 2、浮點字面值規則 3、布爾字面值 4、字符字面值 5、非打印字符的轉義序列 ?編輯 6、字符串字面值 3、變量 1、變量標識符 2、定義和初始化對象 3、…

leetcode 1328.破壞回文串

題目鏈接LeetCode1328 1.題目 給你一個由小寫英文字母組成的回文字符串 palindrome &#xff0c;請你將其中 一個 字符用任意小寫英文字母替換&#xff0c;使得結果字符串的 字典序最小 &#xff0c;且 不是 回文串。 請你返回結果字符串。如果無法做到&#xff0c;則返回一個…

java: 無法訪問org.springframework.web.bind.annotation.RequestMapping......類文件具有錯誤的版本 61.0, 應為 52.0

文章目錄 一、報錯問題二、問題背景三、原因分析四、解決方案 一、報錯問題 java: 無法訪問org.springframework.web.bind.annotation.RequestMapping 錯誤的類文件: /D:/SoftwareInstall/Maven/repository/org/springframework/spring-web/6.0.9/spring-web-6.0.9.jar!/org/s…

latex報錯Repeated entry解決辦法

報錯原因——重復了兩個參考文獻&#xff0c;刪掉一個即可 總結 "Repeated entry"這個錯誤通常出現在你嘗試在LaTeX中多次使用同一個標簽&#xff08;label&#xff09;或者多次插入相同的圖像/表格等時。例如&#xff0c;在LaTeX中&#xff0c;我們可能會為每一個章…

Modern C++ std::any為何要求Tp可拷貝構造?

小問題也會影響設計的思路&#xff0c;某個問題或某種case的探討有助于理解設計的初衷。 聲明&#xff1a;以下_Tp/Tp都是指要放入std::any的對象的類型。 它要求_Tp is_copy_constructible, 僅僅是因為有很多函數的實現調用了Tp的拷貝構造函數嗎&#xff1f;比如說上節提到的初…

動態SQL的處理

學習視頻&#xff1a;3001 動態SQL中的元素_嗶哩嗶哩_bilibili 目錄 1.1為什么學 1.2動態SQL中的元素 條件查詢操作 if 元素 choose、when、otherwise元素 where、trim元素 更新操作 set元素使用場景 復雜查詢操作 foreach 元素中的屬性 ?編輯 迭代數組 迭代List 迭代Map 1…

代碼隨想錄算法訓練營第二十七天|LeetCode93 復原IP地址、LeetCode78 子集、LeetCode90 子集II

93.復原IP地址 思路&#xff1a;要建立一個判斷子字符串是否合法的函數&#xff0c;判斷多種不合法的情況。在回溯函數中&#xff0c;參數除了s,和startindex還需要一個pointNum來記錄句點的數量&#xff0c;當句點的數量等于3時&#xff0c;判斷最后一個子串是否合法&#xf…

第3部分 原理篇2去中心化數字身份標識符(DID)(4)

3.2.3. DID解析 3.2.3.1. DID解析參與方 圖3-5 DID 解析過程 本聰老師&#xff1a;我們之前提到過&#xff0c;DID 解析過程是將 DID 轉換為對應的 DID 文檔。這樣做的目的是驗證 DID 所代表的主體的身份。那么解析過程會涉及哪些概念呢&#xff1f;我們看圖3-&#xff0c;DI…

端智能:面向手機計算環境的端云協同AI技術創新

近年來&#xff0c;隨著移動端設備軟硬件能力的進步&#xff0c;移動端的算力有了很大提升&#xff0c;同時面向移動端的機器學習框架和模型輕量化技術越來越成熟&#xff0c;端上的AI能力逐漸進入大眾視野&#xff0c;端智能在電商領域也開始逐步走向規模化應用。通過持續探索…

leetcode日記(35)跳躍游戲Ⅱ

想了一個晚上&#xff0c;第一個思路是用動態規劃&#xff0c;記錄走到每一個節點需要跳動的最小步數&#xff0c;大致方法是每走到一個節點就遍歷一下前面的全部節點&#xff0c;看看哪個節點可以一部跳到該節點&#xff0c;然后從中選取跳躍步數最小的節點&#xff0c;最后輸…

完美解決多個Echarts圖表自適應窗口、父容器寬高,并進行性能優化

場景 很多時候我們會在繪制echarts圖表時&#xff0c;使用以下方法監聽瀏覽器尺寸變化&#xff0c;讓圖表resize()完成自適應 window.addEventListener(resize, ()>{wordCloudChart.resize() })然后&#xff0c;這種自適應真的足夠周全嘛&#xff1f;有些時候&#xff0c;…

多元正態分布(Multivariate Normal Distribution)

多元正態分布&#xff08;Multivariate Normal Distribution&#xff09;&#xff0c;也稱為多變量高斯分布&#xff0c;是單變量正態分布&#xff08;高斯分布&#xff09;在多維空間中的推廣。它是描述位于多維空間中的隨機向量的分布情況的一種概率分布。多元正態分布在統計…

基于springboot+vue的城鎮保障性住房管理系統(前后端分離)

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

練習 3 Web [ACTF2020 新生賽]Upload

[ACTF2020 新生賽]Upload1 中間有上傳文件的地方&#xff0c;試一下一句話木馬 txt 不讓傳txt 另存為tlyjpg&#xff0c;木馬文件上傳成功 給出了存放目錄&#xff1a; Upload Success! Look here~ ./uplo4d/06a9d80f64fded1e542a95e6d530c70a.jpg 下一步嘗試改木馬文件后綴…

云片 3.1(日常實習)面經

1、什么時候開始學習的前端 2、平常通過哪些方式學習 3、遇到bug怎么解決的 4、元素水平居中 5、display有哪些屬性 6、align-items除了center還有哪些屬性 7、display:none和visibility:hidden區別 8、常用的計量單位有哪些 9、rem和em是相對什么的 10、vw和vh有了解…

從頭構建gpt2 基于Transformer

從頭構建gpt2 基于Transformer VX關注{曉理紫|小李子}&#xff0c;獲取技術推送信息&#xff0c;如感興趣&#xff0c;請轉發給有需要的同學&#xff0c;謝謝支持&#xff01;&#xff01; 如果你感覺對你有所幫助&#xff0c;請關注我。 源碼獲取 VX關注曉理紫并回復“chatgpt…

CSS 自測題

盒模型的寬度計算 默認為標準盒模型 box-sizing:content-box; offsetWidth (內容寬度內邊距 邊框)&#xff0c;無外邊距 答案 122px通過 box-sizing: border-box; 可切換為 IE盒模型 offsetWidth width 即 100px margin 縱向重疊 相鄰元素的 margin-top 和 margin-bottom 會發…

leetcode-簡單

448. 找到所有數組中消失的數字 硬解 時間O(n)&#xff0c;空間O(n) class Solution { public:vector<int> findDisappearedNumbers(vector<int>& nums) {vector<int> result;vector<int> tem(nums.size()1, 0);for(int i: nums){tem[i] 1;}for…

Benchmark學習筆記

小記一篇Benchmark的學習筆記 1.什么是benchmark 在維基百科中&#xff0c;是這樣子講的 “As computer architecture advanced, it became more difficult to compare the performance of various computer systems simply by looking at their specifications.Therefore, te…