亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

使用kubernetes的deployment進(jìn)行RollingUpdate

Lycheeee / 2028人閱讀

摘要:序,可以使得服務(wù)近乎無(wú)縫地平滑升級(jí),即在不停止對(duì)外服務(wù)的前提下完成應(yīng)用的更新。如果少于指定數(shù)量的,會(huì)創(chuàng)建新的,反之則會(huì)刪除掉多余的以保證數(shù)量不變。對(duì)于應(yīng)用,默認(rèn)的帶有接口,可以用來(lái)進(jìn)行啟動(dòng)成功的判斷。

rolling update,可以使得服務(wù)近乎無(wú)縫地平滑升級(jí),即在不停止對(duì)外服務(wù)的前提下完成應(yīng)用的更新。

replication controller與deployment的區(qū)別 replication controller

Replication Controller為Kubernetes的一個(gè)核心內(nèi)容,應(yīng)用托管到Kubernetes之后,需要保證應(yīng)用能夠持續(xù)的運(yùn)行,Replication Controller就是這個(gè)保證的key,主要的功能如下:

確保pod數(shù)量:它會(huì)確保Kubernetes中有指定數(shù)量的Pod在運(yùn)行。如果少于指定數(shù)量的pod,Replication Controller會(huì)創(chuàng)建新的,反之則會(huì)刪除掉多余的以保證Pod數(shù)量不變。

確保pod健康:當(dāng)pod不健康,運(yùn)行出錯(cuò)或者無(wú)法提供服務(wù)時(shí),Replication Controller也會(huì)殺死不健康的pod,重新創(chuàng)建新的。

彈性伸縮 :在業(yè)務(wù)高峰或者低峰期的時(shí)候,可以通過(guò)Replication Controller動(dòng)態(tài)的調(diào)整pod的數(shù)量來(lái)提高資源的利用率。同時(shí),配置相應(yīng)的監(jiān)控功能(Hroizontal Pod Autoscaler),會(huì)定時(shí)自動(dòng)從監(jiān)控平臺(tái)獲取Replication Controller關(guān)聯(lián)pod的整體資源使用情況,做到自動(dòng)伸縮。

滾動(dòng)升級(jí):滾動(dòng)升級(jí)為一種平滑的升級(jí)方式,通過(guò)逐步替換的策略,保證整體系統(tǒng)的穩(wěn)定,在初始化升級(jí)的時(shí)候就可以及時(shí)發(fā)現(xiàn)和解決問(wèn)題,避免問(wèn)題不斷擴(kuò)大。

Deployment

Deployment同樣為Kubernetes的一個(gè)核心內(nèi)容,主要職責(zé)同樣是為了保證pod的數(shù)量和健康,90%的功能與Replication Controller完全一樣,可以看做新一代的Replication Controller。但是,它又具備了Replication Controller之外的新特性:

Replication Controller全部功能:Deployment繼承了上面描述的Replication Controller全部功能。

事件和狀態(tài)查看:可以查看Deployment的升級(jí)詳細(xì)進(jìn)度和狀態(tài)。

回滾:當(dāng)升級(jí)pod鏡像或者相關(guān)參數(shù)的時(shí)候發(fā)現(xiàn)問(wèn)題,可以使用回滾操作回滾到上一個(gè)穩(wěn)定的版本或者指定的版本。

版本記錄: 每一次對(duì)Deployment的操作,都能保存下來(lái),給予后續(xù)可能的回滾使用。

暫停和啟動(dòng):對(duì)于每一次升級(jí),都能夠隨時(shí)暫停和啟動(dòng)。

多種升級(jí)方案:Recreate:刪除所有已存在的pod,重新創(chuàng)建新的; RollingUpdate:滾動(dòng)升級(jí),逐步替換的策略,同時(shí)滾動(dòng)升級(jí)時(shí),支持更多的附加參數(shù),例如設(shè)置最大不可用pod數(shù)量,最小升級(jí)間隔時(shí)間等等。

deployment的常用命令 查看部署狀態(tài)
kubectl rollout status deployment/review-demo  --namespace=scm
kubectl describe deployment/review-demo  --namespace=scm

或者這種寫法

kubectl rollout status deployments review-demo --namespace=scm
kubectl describe deployments review-demo  --namespace=scm
升級(jí)
kubectl set image deployment/review-demo review-demo=library/review-demo:0.0.1 --namespace=scm

或者

kubectl edit deployment/review-demo --namespace=scm

編輯.spec.template.spec.containers[0].image的值

終止升級(jí)
kubectl rollout pause deployment/review-demo --namespace=scm
繼續(xù)升級(jí)
kubectl rollout resume deployment/review-demo --namespace=scm
回滾
kubectl rollout undo deployment/review-demo --namespace=scm
查看deployments版本
kubectl rollout history deployments --namespace=scm

回滾到指定版本

kubectl rollout undo deployment/review-demo --to-revision=2 --namespace=scm
升級(jí)歷史
kubectl describe deployment/review-demo  --namespace=scm
Name:     review-demo
Namespace:    scm
CreationTimestamp:  Tue, 31 Jan 2017 16:42:01 +0800
Labels:     app=review-demo
Selector:   app=review-demo
Replicas:   3 updated | 3 total | 3 available | 0 unavailable
StrategyType:   RollingUpdate
MinReadySeconds:  0
RollingUpdateStrategy:  1 max unavailable, 1 max surge
OldReplicaSets:   
NewReplicaSet:    review-demo-2741031620 (3/3 replicas created)
Events:
  FirstSeen LastSeen  Count From        SubobjectPath Type    Reason      Message
  --------- --------  ----- ----        ------------- --------  ------      -------
  1m    1m    1 {deployment-controller }    Normal    ScalingReplicaSet Scaled up replica set review-demo-2741031620 to 1
  1m    1m    1 {deployment-controller }    Normal    ScalingReplicaSet Scaled down replica set review-demo-1914295649 to 2
  1m    1m    1 {deployment-controller }    Normal    ScalingReplicaSet Scaled up replica set review-demo-2741031620 to 2
  1m    1m    1 {deployment-controller }    Normal    ScalingReplicaSet Scaled down replica set review-demo-1914295649 to 1
  1m    1m    1 {deployment-controller }    Normal    ScalingReplicaSet Scaled up replica set review-demo-2741031620 to 3
  1m    1m    1 {deployment-controller }    Normal    ScalingReplicaSet Scaled down replica set review-demo-1914295649 to 0
deployment文件
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: review-demo
  namespace: scm
  labels:
    app: review-demo
spec:
  replicas: 3
#  minReadySeconds: 60     #滾動(dòng)升級(jí)時(shí)60s后認(rèn)為該pod就緒
  strategy:
    rollingUpdate:  ##由于replicas為3,則整個(gè)升級(jí),pod個(gè)數(shù)在2-4個(gè)之間
      maxSurge: 1      #滾動(dòng)升級(jí)時(shí)會(huì)先啟動(dòng)1個(gè)pod
      maxUnavailable: 1 #滾動(dòng)升級(jí)時(shí)允許的最大Unavailable的pod個(gè)數(shù)
  template:
    metadata:
      labels:
        app: review-demo
    spec:
      terminationGracePeriodSeconds: 60 ##k8s將會(huì)給應(yīng)用發(fā)送SIGTERM信號(hào),可以用來(lái)正確、優(yōu)雅地關(guān)閉應(yīng)用,默認(rèn)為30秒
      containers:
      - name: review-demo
        image: library/review-demo:0.0.1-SNAPSHOT
        imagePullPolicy: IfNotPresent
        livenessProbe: #kubernetes認(rèn)為該pod是存活的,不存活則需要重啟
          httpGet:
            path: /health
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 60 ## equals to the maximum startup time of the application + couple of seconds
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        readinessProbe: #kubernetes認(rèn)為該pod是啟動(dòng)成功的
          httpGet:
            path: /health
            port: 8080
            scheme: HTTP
          initialDelaySeconds: 30 ## equals to minimum startup time of the application
          timeoutSeconds: 5
          successThreshold: 1
          failureThreshold: 5
        resources:
          # keep request = limit to keep this container in guaranteed class
          requests:
            cpu: 50m
            memory: 200Mi
          limits:
            cpu: 500m
            memory: 500Mi
        env:
          - name: PROFILE
            value: "test"
        ports:
          - name: http
            containerPort: 8080
幾個(gè)重要參數(shù)說(shuō)明 maxSurge與maxUnavailable

maxSurge: 1 表示滾動(dòng)升級(jí)時(shí)會(huì)先啟動(dòng)1個(gè)pod
maxUnavailable: 1 表示滾動(dòng)升級(jí)時(shí)允許的最大Unavailable的pod個(gè)數(shù)
由于replicas為3,則整個(gè)升級(jí),pod個(gè)數(shù)在2-4個(gè)之間

terminationGracePeriodSeconds

k8s將會(huì)給應(yīng)用發(fā)送SIGTERM信號(hào),可以用來(lái)正確、優(yōu)雅地關(guān)閉應(yīng)用,默認(rèn)為30秒。

如果需要更優(yōu)雅地關(guān)閉,則可以使用k8s提供的pre-stop lifecycle hook 的配置聲明,將會(huì)在發(fā)送SIGTERM之前執(zhí)行。

livenessProbe與readinessProbe

livenessProbe是kubernetes認(rèn)為該pod是存活的,不存在則需要kill掉,然后再新啟動(dòng)一個(gè),以達(dá)到replicas指定的個(gè)數(shù)。

readinessProbe是kubernetes認(rèn)為該pod是啟動(dòng)成功的,這里根據(jù)每個(gè)應(yīng)用的特性,自己去判斷,可以執(zhí)行command,也可以進(jìn)行httpGet。比如對(duì)于使用java web服務(wù)的應(yīng)用來(lái)說(shuō),并不是簡(jiǎn)單地說(shuō)tomcat啟動(dòng)成功就可以對(duì)外提供服務(wù)的,還需要等待spring容器初始化,數(shù)據(jù)庫(kù)連接連接上等等。對(duì)于spring boot應(yīng)用,默認(rèn)的actuator帶有/health接口,可以用來(lái)進(jìn)行啟動(dòng)成功的判斷。

其中readinessProbe.initialDelaySeconds可以設(shè)置為系統(tǒng)完全啟動(dòng)起來(lái)所需的最少時(shí)間,livenessProbe.initialDelaySeconds可以設(shè)置為系統(tǒng)完全啟動(dòng)起來(lái)所需的最大時(shí)間+若干秒。

這幾個(gè)參數(shù)配置好了之后,基本就可以實(shí)現(xiàn)近乎無(wú)縫地平滑升級(jí)了。對(duì)于使用服務(wù)發(fā)現(xiàn)的應(yīng)用來(lái)說(shuō),readinessProbe可以去執(zhí)行命令,去查看是否在服務(wù)發(fā)現(xiàn)里頭應(yīng)該注冊(cè)成功了,才算成功。

doc

【分享】幾種常見的不停機(jī)發(fā)布方式

Deployment vs ReplicationController in Kubernetes

kubernetes-user-guide-deployments

Kubernetes用戶指南(三)--在生產(chǎn)環(huán)境中使用Pod來(lái)工作、管理部署

Kubernetes livenessProbe shutdown during application startup

Kubernetes技術(shù)研究容器監(jiān)控監(jiān)測(cè)

Graceful shutdown of pods with Kubernetes

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/32541.html

相關(guān)文章

  • 如何在Kubernetes中管理有狀態(tài)應(yīng)用

    摘要:在中,被用來(lái)管理有狀態(tài)應(yīng)用的對(duì)象。并行管理并行管理告訴控制器以并行的方式啟動(dòng)或者終止所有的。如果設(shè)置為,則控制器將會(huì)刪除和重建中的每一。在大部分的情況下,不會(huì)使用分隔當(dāng)希望進(jìn)行金絲雀發(fā)布,或者執(zhí)行階段發(fā)布時(shí),分隔是很有用的。 在Kubernetes中,StatefulSet被用來(lái)管理有狀態(tài)應(yīng)用的API對(duì)象。StatefulSets在Kubernetes 1.9版本才穩(wěn)定。Statefu...

    KaltZK 評(píng)論0 收藏0
  • 通過(guò)一個(gè)實(shí)際例子理解Kubernetes里pod自動(dòng)scale - 水平自動(dòng)伸縮

    摘要:命令用于程序在負(fù)載加重或縮小時(shí)進(jìn)行擴(kuò)容或縮小,我們通過(guò)一些實(shí)際例子來(lái)觀察命令到底能達(dá)到什么效果。 kubectl scale命令用于程序在負(fù)載加重或縮小時(shí)進(jìn)行pod擴(kuò)容或縮小,我們通過(guò)一些實(shí)際例子來(lái)觀察scale命令到底能達(dá)到什么效果。 命令行創(chuàng)建一個(gè)deployment: kubectl run jerry-nginx --image=nginx:1.12.2 showImg(htt...

    tinylcy 評(píng)論0 收藏0
  • 通過(guò)一個(gè)實(shí)際例子理解Kubernetes里pod自動(dòng)scale - 水平自動(dòng)伸縮

    摘要:命令用于程序在負(fù)載加重或縮小時(shí)進(jìn)行擴(kuò)容或縮小,我們通過(guò)一些實(shí)際例子來(lái)觀察命令到底能達(dá)到什么效果。 kubectl scale命令用于程序在負(fù)載加重或縮小時(shí)進(jìn)行pod擴(kuò)容或縮小,我們通過(guò)一些實(shí)際例子來(lái)觀察scale命令到底能達(dá)到什么效果。 命令行創(chuàng)建一個(gè)deployment: kubectl run jerry-nginx --image=nginx:1.12.2 showImg(htt...

    superw 評(píng)論0 收藏0
  • 通過(guò)一個(gè)實(shí)際例子理解Kubernetes里pod自動(dòng)scale - 水平自動(dòng)伸縮

    摘要:命令用于程序在負(fù)載加重或縮小時(shí)進(jìn)行擴(kuò)容或縮小,我們通過(guò)一些實(shí)際例子來(lái)觀察命令到底能達(dá)到什么效果。 kubectl scale命令用于程序在負(fù)載加重或縮小時(shí)進(jìn)行pod擴(kuò)容或縮小,我們通過(guò)一些實(shí)際例子來(lái)觀察scale命令到底能達(dá)到什么效果。 命令行創(chuàng)建一個(gè)deployment: kubectl run jerry-nginx --image=nginx:1.12.2 showImg(htt...

    Snailclimb 評(píng)論0 收藏0
  • Docker 和 Kubernetes 從聽過(guò)到略懂:給程序員旋風(fēng)教程

    摘要:默認(rèn)監(jiān)聽在端口,所以我們把宿主機(jī)的端口映射到容器的端口用下面的命令可以看到正在運(yùn)行中的容器這時(shí)如果你用瀏覽器訪問(wèn),就能看到我們剛才創(chuàng)建的頁(yè)面。這時(shí)如果刷新瀏覽器,就可以看到更新的內(nèi)容。 早在 Docker 正式發(fā)布幾個(gè)月的時(shí)候,LeanCloud 就開始在生產(chǎn)環(huán)境大規(guī)模使用 Docker,在過(guò)去幾年里 Docker 的技術(shù)棧支撐了我們主要的后端架構(gòu)。這是一篇寫給程序員的 Docker ...

    jackzou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<