您好,登錄后才能下訂單哦!
本篇內容介紹了“Kubernetes怎么更新APP”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
用戶希望應用程序隨時可用,而開發人員則希望每天多次部署新版本的應用程序。 在Kubernetes中,這是通過滾動更新完成的。 滾動更新允許部署的更新在零停機時間內進行,方法是使用新實例增量更新Pods實例。 新Pods將會被安排在具有可用資源的節點上。
默認情況下,在更新期間不可用的pod的最大數量和可以創建的新pod的最大數量是1。 這兩個選項都可以配置為數字或百分比(pod的)。 在Kubernetes中,更新是版本控制的,任何部署更新都可以恢復到以前的(穩定的)版本。
與應用程序伸縮類似,如果部署是公開的,服務將只在更新期間將流量負載均衡到可用的pod 。 可用Pod是應用程序用戶可用的實例。
滾動更新允許以下操作:
將應用程序從一個環境提升到另一個環境( 通過容器鏡像更新)
回滾到以前版本
持續集成和應用程序的持續交付,并且沒有停機時間
查看資源信息的命令:kubectl get deployments; kubectl get pods;kubectl describe pods
使用set image命令將應用程序的鏡像更新到版本2:kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2,該命令通知部署為應用程序使用不同的映像,并啟動滾動更新。再次使用kubectl get pods檢查Pods的狀態。
驗證更新
首先,讓我們檢查應用程序是否正在運行。我們可以使用kubectl describe services/kubernetes-bootcamp命令找出公開的IP和端口。
創建一個名為NODE_PORT的環境變量,該變量具有指定的節點端口的值:export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT
接下來,我們將對公開的IP和端口通過curl來訪問:curl $(minikube ip):$NODE_PORT,執行多次請求,每個請求都會碰到不同的Pod,我們看到所有Pod都在運行最新版本(v2)。
還可以通過運行rollout status命令來確認更新:kubectl rollout status deployments/kubernetes-bootcamp
要查看應用程序的當前鏡像版本,執行:kubectl describe pods
回滾一個更新
讓我們執行另一個更新,并部署標記為v10的鏡像執行:kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
使用kubectl get deployments查看部署的狀態。可能會發現有點問題,可用Pods的數量沒有達到我們所期望的。使用kubectl get pods查看pods狀態。kubectl describe pods命令可以提供更多的信息。從信息里可以發現存儲庫中沒有標為v10的鏡像。
讓我們回到以前的可工作版本,我們將使用rollout撤銷命令:kubectl rollout undo deployments/kubernetes-bootcamp.rollout命令會將部署恢復到以前的已知狀態(v2版本鏡像)。更新是有版本控制的,您可以恢復到以前已知的任何部署狀態。再次執行kubectl get podskubectl describe pods
“Kubernetes怎么更新APP”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。