国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

這篇具有很好參考價(jià)值的文章主要介紹了K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

K8S Deployments 使用 & 更新 & 回滾 & 擴(kuò)容

K8S Deployments 提供比 Replication Controller 、ReplicaSet 更高一級(jí)的抽象,也具備更豐富的功能。Deployment對(duì)象不僅創(chuàng)建pod,還確保集群中始終運(yùn)行正確數(shù)量的pod,處理可伸縮性,并持續(xù)處理pod的更新。所有這些活動(dòng)都可以通過部署YAML中的字段進(jìn)行配置。下面接下來就開始K8S Deployment的學(xué)習(xí)之旅吧。

Deployment 應(yīng)用場(chǎng)景

以下是K8S Deployment典型的應(yīng)用場(chǎng)景

  • 創(chuàng)建Deployment展示ReplicaSet - ReplicaSet在后臺(tái)自動(dòng)創(chuàng)建Pod,所以Deployment也會(huì)自動(dòng)創(chuàng)建Pod,并檢查Pod是否創(chuàng)建成功
  • 使用Deployment配置文件申明Pods狀態(tài) - Deployment管理Pods并將其遷移到新的ReplicaSet, 每個(gè)新的ReplicaSet都會(huì)更新Deployment版本信息
  • 更新Deployment - 如新版本Deployment狀態(tài)不穩(wěn)定,支持回滾到之前的版本,每次回滾都會(huì)更新Deployment版本信息
  • Deployment支持?jǐn)U容,以支持更多的負(fù)載
  • 暫停/恢復(fù)更新Deployment - 當(dāng)更新需要修改多處配置信息時(shí),暫停更新,等待修改完畢,再恢復(fù)更新Deployment

Deployment Example

演示環(huán)境

  • OS 信息

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • minikube 版本信息

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • Kubectl 版本

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • Dokcer 版本

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • 啟動(dòng)minikube

    minikube start --driver=docker
    

配置文件

# vim nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

配置說明:

  • 根據(jù)**.metadata.name**字段配置值 ,創(chuàng)建名為 nginx-deployment的Deployment對(duì)象,該名稱將作為ReplicaSet、Pod的前綴自動(dòng)闖將這兩種類型的對(duì)象
  • Deployment根據(jù)**.spec.replicas**自動(dòng)創(chuàng)建ReplicaSet對(duì)象,并創(chuàng)建3個(gè)副本Pod
  • .spec.selector字段定義ReplicaSet如何匹配Pod,需要跟template.labels.app一致
  • template模板字段包含以下信息
    • 使用 .metadata.labels.app - 字段標(biāo)記Pod
    • spec字段指示Pod運(yùn)行的容器(名稱為nginx) ,以及容器鏡像
    • port容器端口

創(chuàng)建Deployment

kubectl apply -f nginx-deployment.yaml

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

運(yùn)行狀態(tài)

  • 查看Deployment運(yùn)行狀態(tài)

    # 創(chuàng)建成功后 使用以下命令查看deployment運(yùn)行狀態(tài)
    kubectl get deployments | grep nginx-deployment
    

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

    如圖片所示,自動(dòng)創(chuàng)建了名為nginx-deployment 的 Deployments集群,副本數(shù)為3,上述中每個(gè)字段的含義如下

    • NAME - 列出默認(rèn)命名空間集群中Deployment的名稱
    • READY - 顯示應(yīng)用程序副本的數(shù)量
    • UP-TO-DATE - 顯示已經(jīng)達(dá)到期望狀態(tài)的副本數(shù)量
    • AVAILABLE - 顯示集群中應(yīng)用程序可用的副本數(shù)量,正常情況下應(yīng)該跟期望值一致,Pod在創(chuàng)建過程中可能會(huì)少于期望值
    • AGE - 顯示應(yīng)用程序運(yùn)行時(shí)長(zhǎng)
  • 使用rollout命令 查看Deployment創(chuàng)建狀態(tài)

    kubectl rollout status deployment/nginx-deployment
    

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • 查看Deployment自動(dòng)創(chuàng)建的ReplicSet 信息

    kubectl get rs | grep nginx
    

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

    注意:ReplicSet對(duì)象的名稱前綴跟Deployment定義中的一致

  • 查看Deployment底層的Pod信息

    kubectl get pods --show-labels | grep nginx-deployment
    

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

    請(qǐng)注意,Pod后面攜帶的Hash值 - 7fb96c846b跟Deployment對(duì)應(yīng)ReplicaSet對(duì)象的Hash值一致,他們之間由此產(chǎn)生關(guān)聯(lián)。

更新 Deployment

僅當(dāng)Deployment配置文件中的Pod模板(.spec.template)更改時(shí),才會(huì)觸發(fā)Deployment更新操作。例如Pod模板中的鏡像文件更改,觸發(fā)Deployment更新。

更新鏡像版本

  • 將之前nginx的鏡像版本從 nginx:1.14.2 升級(jí)到 nginx:1.16.1

    kubectl set image deployment.v1.apps/nginx-deployment nginx=nginx:1.16.1
    

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

    此外還可以使用以下命令升級(jí)Deployment

    kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1
    

    另外還可以使用以下命令,直接修改Deployment

    
    

    K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

    找到鏡像版本信息的位置,修改為更高級(jí)的版本進(jìn)行更新Deployment,修改完畢之后,shell控制臺(tái)輸出如下

    deployment.apps/nginx-deployment edited
    

更新過程

kubectl describe deploy nginx-deployment

使用以上命令,查看Deployment對(duì)象的詳細(xì)創(chuàng)建過程

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

仔細(xì)查看Events信息,可以分析出Deployment 創(chuàng)建過程

  1. 第一次直接創(chuàng)建了3個(gè)副本的ReplicaSet
  2. 更新Deployment時(shí),啟動(dòng)一個(gè)新的ReplicaSet
  3. 將舊ReplicaSet的三個(gè)副本減掉一個(gè) 對(duì)應(yīng) to 2 from 3
  4. 更新操作啟動(dòng)第二個(gè)ReplicaSet副本,此時(shí)新版本ReplicaSet變成2 to 2 from 1
  5. 將舊ReplicaSet的存活的2個(gè)副本減掉一個(gè) 對(duì)應(yīng) to 1 from 2
  6. 更新操作啟動(dòng)第三個(gè)ReplicaSet副本,此時(shí)新版本ReplicaSet變成2 to 3 from 2
  7. 將舊ReplicaSet的存活的1個(gè)副本減掉一個(gè) 對(duì)應(yīng) to 0 from 1

由此可知,更新Deployment對(duì)象會(huì)啟動(dòng)新的ReplicaSet,等待啟動(dòng)完成后,會(huì)自動(dòng)停用舊版本的ReplicaSet。在升級(jí)過程中采用先啟動(dòng)后停用的方式,能夠始終保持ReplicaSet期望的副本數(shù)。

更新策略

默認(rèn)情況下,K8S會(huì)保留10個(gè)舊ReplicaSet版本,以方便回滾。超過10個(gè)以上的ReplicaSet將會(huì)被系統(tǒng)回收??梢允褂胹pec.revisionHistoryLimit設(shè)置保留ReplicaSet的個(gè)數(shù),設(shè)置為0時(shí),不保留歷史記錄。

.spec.strategy.type參數(shù)設(shè)置會(huì)影響Deployment的更新機(jī)制

  • Recreate - 先刪除舊的Pod,再創(chuàng)建新的Pod
  • RollingUpdate - 滾動(dòng)更新,默認(rèn)值,可以通過指定 maxUnavailable 、maxSurge來控制更新過程
    • .spec.strategy.rollingUpdate.maxUnavailable 指定回滾更新時(shí),最大不可用的Pod數(shù)量,默認(rèn)25%,簡(jiǎn)單理解為一部分更新
    • .spec.strategy.rollingUpdate.maxSurge 可以超過期望值的最大Pod數(shù),可選字段,默認(rèn)為25%

.spec.minReadySeconds 可選參數(shù),指定新建的Pod在沒有任何容器崩潰情況下視為就緒- Ready狀態(tài)的最小時(shí)間,單位為秒,默認(rèn)為0,即一旦創(chuàng)建Pod,則被視為可用

回滾Deployment

當(dāng)部署不穩(wěn)定、新版本發(fā)布失敗時(shí),用戶可能需要回滾Deployment,繼續(xù)使用舊版本Deployment提供服務(wù)。默認(rèn)情況下所有回滾信息都會(huì)保存在系統(tǒng)中,目的是方便隨時(shí)回滾.

當(dāng)且僅當(dāng)Deployment關(guān)聯(lián)的Pod對(duì)象 (.spec.template) 發(fā)生變化時(shí),Deployment才會(huì)創(chuàng)建新的版本信息。其他操作,如擴(kuò)容伸縮操作并不會(huì)更新版本信息。因此也就意味著,回滾操作只需要回滾Deployment對(duì)象關(guān)聯(lián)的Pod即可。

更新失敗

  • 假設(shè)您需要將nginx的版本從nginx:1.16.1回滾到nginx:1.161,可以使用如下命令進(jìn)行回滾
kubectl set image deployment/nginx-deployment nginx=nginx:1.161 

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • 驗(yàn)證更新狀態(tài)
kubectl rollout status deployment/nginx-deployment

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

如圖片所示,此次更新失敗。

  • 檢查ReplicaSet更新狀態(tài)
kubectl get rs

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

新版本的ReplicaSet對(duì)象創(chuàng)建失敗。

  • 檢查Pod狀態(tài)
kubectl get pods

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

如圖片所示,Pod啟動(dòng)失敗的原因是鏡像拉取失敗(由于不存在對(duì)應(yīng)版本鏡像)。

系統(tǒng)回滾

  • 首先檢查回滾版本信息
kubectl rollout history deployment/nginx-deployment

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

我們更新了三次,最后一個(gè)是失敗的。

  • 查看回滾版本詳細(xì)信息
kubectl rollout history deployment/nginx-deployment --revision=2

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • 回滾到上一個(gè)版本
 kubectl rollout undo deployment/nginx-deployment

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

  • 回滾到指定版本
kubectl rollout undo deployment/nginx-deployment --to-revision=1
  • 檢查Deployment信息
kubectl describe deployment nginx-deployment

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

如上圖所示,Deployment中的鏡像版本變成了最初的1.14.2,至此回滾成功。

擴(kuò)容Deployment

手動(dòng)擴(kuò)容

當(dāng)公司業(yè)務(wù)流程變大,需要更多的節(jié)點(diǎn)來處理新增的流量,此時(shí)需要將系統(tǒng)進(jìn)行擴(kuò)容。K8S Deployment擴(kuò)容的方式非常簡(jiǎn)單,只需要使用以下命令即可進(jìn)行擴(kuò)容

kubectl scale deployment/nginx-deployment --replicas=10

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

擴(kuò)容成功后,檢查下Deployment的副本數(shù)量

kubectl get deploy

K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容

自動(dòng)擴(kuò)容

Deployment 還支持根據(jù)服務(wù)器運(yùn)行情況進(jìn)行擴(kuò)容文章來源地址http://www.zghlxwxcb.cn/news/detail-445143.html

# 當(dāng)cpu超過80%的時(shí)候,進(jìn)行擴(kuò)容,副本數(shù)量最低10個(gè),最高不超過15個(gè)
kubectl autoscale deployment/nginx-deployment --min=10 --max=15 --cpu-percent=80

到了這里,關(guān)于K8S Deployment 使用 & 更新 & 回滾 & 擴(kuò)容的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • k8s概念-deployment

    deployment用于部署無狀態(tài)應(yīng)用 Deployment集成了上線部署、滾動(dòng)升級(jí)、創(chuàng)建副本、回滾等功能 Deployment里包含并使用了ReplicaSet Replicaset 通過改變Pod副本數(shù)量實(shí)現(xiàn)Pod的擴(kuò)容和縮容 參考文檔? https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/deployment/ 1 yaml文件 2 pod版本升級(jí) 查看幫助

    2024年02月14日
    瀏覽(55)
  • k8s中的deployment

    k8s中的deployment

    ? ? ? ? Deployment是k8s中用來管理發(fā)布的控制器,在開發(fā)的過程中使用非常頻繁,本篇文章主要介紹deployment相關(guān)的使用和原理。 聲明式API 最終一致性 水平觸發(fā) 資源對(duì)象 。。。 定義一組pod的期望數(shù)量,controller會(huì)維持Pod的數(shù)量和期望的一致(其實(shí)deployment是通過管理rs的狀態(tài)來

    2024年02月16日
    瀏覽(27)
  • k8s創(chuàng)建deployment

    k8s創(chuàng)建deployment

    在自定義ns中,使用create命令的方式創(chuàng)建一個(gè)3副本的deploy,鏡像httpd:latest,端口自定義 2、查看deploy、rs、pod 3、兩種方法,擴(kuò)充副本數(shù)量為5 4、變更鏡像版本 5、使用yaml文件生成deploy,要求同1 6、升級(jí)業(yè)務(wù)應(yīng)用,通過變更鏡像的方式 7、查看滾動(dòng)升級(jí)的狀態(tài) 8、查看升級(jí)歷史

    2024年02月12日
    瀏覽(19)
  • k8s學(xué)習(xí)-Deployment

    Kubernetes通過各種Controller來管理Pod的生命周期 。 為了滿足不同業(yè) 務(wù) 景 , Kubernetes 開發(fā)了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多種Controller。我們?先學(xué)習(xí)最常用Deployment。 第一種是通過kubectl命令直接創(chuàng)建: 在最新的 Kubernetes 版本中,kubectl create deployment 命令不再直接

    2024年01月19日
    瀏覽(43)
  • k8s之Deployment篇

    k8s之Deployment篇

    Deployment官方文檔: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ Deployment是kubernetes中最常用的資源對(duì)象,為ReplicaSet和Pod的創(chuàng)建提供了一種聲明式的定義方法,在Deployment對(duì)象中描述一個(gè)期望的狀態(tài),Deployment控制器就會(huì)按照一定的控制速率把實(shí)際狀態(tài)改成期望狀態(tài),通

    2024年02月05日
    瀏覽(16)
  • k8s刪除pod或deployment

    deployment: pod: 刪除pod: 可是,此時(shí)你會(huì)發(fā)現(xiàn)剛剛刪除的pod開始重構(gòu)。那是因?yàn)閜od的上級(jí)deployment仍然存在,k8s會(huì)啟動(dòng)容災(zāi)機(jī)智,再拉一個(gè)新pod。 想要徹底刪除pod,直接干掉它上層的deployment就可以 刪除deployment: 干掉deployment,里面的pod自然就被一起刪除了

    2024年02月11日
    瀏覽(27)
  • K8S之Deployment控制pod

    2024年02月09日
    瀏覽(116)
  • k8s 的 Deployment控制器

    k8s 的 Deployment控制器

    RC(Replication Controller)主要作用就是用來確保容器應(yīng)用的副本數(shù)始終保持在用戶定義的副本數(shù)。即如果有容器異常退出,會(huì)自動(dòng)創(chuàng)建新的pod來替代;而如果異常多出來的容器也會(huì)自動(dòng)回收。 K8S官方建議使用RS(ReplicaSet)替代RC(Replication Controller)進(jìn)行部署,RS跟RC沒有本質(zhì)的

    2024年02月09日
    瀏覽(26)
  • K8s Deployment掛載ConfigMap權(quán)限設(shè)置

    目錄 樣例 其中“defaultMode: 420”是設(shè)置權(quán)限的 在K8s(Kubernetes)中, defaultMode 是用來設(shè)置Configmap掛載后的文件權(quán)限,它采用Unix文件權(quán)限標(biāo)準(zhǔn)。 420 是8進(jìn)制數(shù)字,轉(zhuǎn)換成二進(jìn)制是 100100000 ,轉(zhuǎn)換成文件權(quán)限碼就是 0644 。 文件權(quán)限碼 0644 代表所有者(owner)有讀/寫權(quán)限(6=4+2),

    2024年02月20日
    瀏覽(20)
  • K8S deployment 重啟的三種方法

    一般重啟deployment,常規(guī)操作是刪掉對(duì)應(yīng)的pod, 但如果有多個(gè)副本集的話,一個(gè)個(gè)刪很麻煩。 除了刪除pod,還可以: PS: rollout restart需要集群版本大于1.15才能支持 以上重啟方法均會(huì)生成Replicasets(副本集), 可通進(jìn)行回滾:

    2024年02月14日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包