91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

發布時間:2021-12-27 09:44:58 來源:億速云 閱讀:103 作者:iii 欄目:云計算

這篇文章主要講解了“怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial”吧!

PaaS

RisingStack 的產品 Trace,我們的 Node.js 監控解決方案運行在最大的 PaaS 提供商之一上已有半年多。我們在其它解決方案中選擇了 PaaS,因為我們想要重點關注產品而不是基礎設施。

我們的需求其實和簡單;我們需要:

  • 快速部署

  • 簡單彈性伸縮

  • 無宕機部署

  • 回滾功能

  • 環境變量管理

  • 不同的 Node.js 版本

  • 無需開發運維人員

使用 PaaS 平臺時,我們不希望有的副作用:

  • 服務間網絡延時大

  • 缺乏 VPC

  • 多租戶技術引起的響應時間高峰

  • 更高的成本(為每個進程支付,無論大小:clock,內部 API 等等)。

Trace 是作為一組微服務來開發的,所以你可以想象一下,網絡延遲和服務費很快就開始對我們造成損害。

Kubernetes Tutorial 

從 PaaS 經驗來看,我們正在尋找一種解決方案,只需要少量的開發運維工作、同時保持原有的開發流程不變。我們并不想失去任何我們上面提到過的優勢——但是,我們也曾想要修補那些明顯的漏洞。

我們那時候正在尋找更加配置化的,團隊中任何人都可以修改的基礎設施。

Kubernetes 關注配置、基于容器、微服務友好型的特性,折服了我們。

讓我用以下的章節來說明一下,在這些專業術語背后的意思。

什么是 Kubernetes?

Kubernetes 是一個自動部署,彈性調度和管理容器化應用程序的開源系統。

在這里我對 Kubernetes 就不多做介紹了,但是要看懂這篇帖子接下來要介紹的東西,Kubernetes 基礎結構還是要了解的。

我的解釋不一定完全正確,但是對于 Kubernetes 來說,你可以把它想象成一個 PaaS 平臺:

  • pod:是一個和環境變量,磁盤等等一起的處于運行狀態的容器化應用程序。Pods 的生成,消亡都很快,比如在部署的時候:

PaaS:目前正在運行的應用程序

  • Deployment:你的應用程序的配置描述了你需要的狀態(CPU,內存,環境變量,Docker 鏡像版本,運行的實例的數量,部署策略等等):

PaaS:應用設置

  • Secret:你可以將你的證書從環境變量中分離出來,

PaaS:不存在,就好像已分享的分開的 secret 環境變量,對于DB證書等等來說。

  • Service:通過 label 將運行的 pods 暴露到其他應用上,或者在理想的 IP 或者端口上暴露到外部世界。

PaaS:內置非配置負載均衡

如何設置運行的 Kubernetes 集群?

在這里你有幾個選項。最容易的一個就是,在谷歌云上創建一個容器引擎。它跟其它的谷歌云組件也都整合得很好,比如負載均衡器和磁盤。

同時你也要了解,Kubernetes 能夠在任何地方,比如 AWS,DigitalOcean,Azure 等地方運行。想要了解更多信息,請點擊:https://coreos.com/kubernetes/docs/latest/getting-started.html

運行應用程序

首先,我們需要先讓我們的應用程序處于在 Docker 環境中跟Kubernetes運行得很好的狀態。

如果你正在尋找關于如何用 Kubernetes 開啟應用程序的 tutorial,查看他們的 tutorial 初級教程。

Docker 容器內的 Node.js 應用

Kubernetes 基于容器,所以首先我們需要把我們的應用都容器化。關于怎么容器話應用,如果你不確定的話,請點擊我們之前的帖子:https://blog.risingstack.com/minimal-docker-containers-for-node-js/。

如果你是 NPM 個人用戶,那么這個可能對你比較有幫助:https://blog.risingstack.com/private-npm-with-docker/。

Kubernetes 中的“Procfile”

我們為每個應用都創建一個 Docker 鏡像(Git Repository)。如果 repository 包括了多個進程,比如:server,worker 和 clock,我們用一個環境變量在他們之間進行選擇。你可能會覺得這很奇怪,但是我們不想從一樣的源代碼中創建,推進多個 Docker 鏡像,這將會拖慢我們的 CI。

環境,回滾和服務發現

預發布,產品

在我們的 PaaS 階段,我們給我們的服務命名:trace-foo,trace-foo-staging,預發布階段和產品應用程序階段的差別就是名字前綴,和不同的環境變量。在 Kubernetes 中是可以定義命名空間的。每個命名空間總體上來說是互相獨立的,而且并不分享任何資源比如 secrets,config 等等。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

應用程序版本

在容器化的基礎設施上,每個應用程序版本應該都是打了 tag 標簽的不同容器鏡像。我們用 Git 短 hash 函數作為一個 Docker 鏡像 tag。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

要部署你的應用程序的新版本,你只需要在你的應用程序的部署配置中修改鏡像 tag,剩下的 Kubernetes 會幫你做。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

在你部署文件中,任何的修改都會被發布到版本中,于是你就可以在任何時間回滾回去。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

在部署的過程中,我們只是快速替換 Docker 鏡像——他們只需要幾秒鐘就可以。

服務發現

Kubernetes 有個內置的,簡單的服務發現解決方案:已創建的服務暴露他們的主機名和端口,作為每個 pod 的環境變量。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

如果你不需要高級服務發現,你可以試一試,而不是把服務的URL復制到其它的環境變量中。是不是很酷!

應用構建

要進入一個新的技術的真正挑戰其實是,去了解如何讓你需要的東西在產品中處于已經好了的狀態。在以下小節中,我們會列舉你應該在應用中設置什么。

零宕機部署和故障轉移

Kubernetes 有它特有的方式來更新你的應用程序,這樣它就可以保持 pods 一直運行,并且以較小的步驟來部署你的修改——替代原來的那種先停止再開啟的方式。

其實防止零宕機部署也沒用了;它會在你部署錯什么東西的時候,避免殺死你的應用程序。在 Kubernetes 發現新的 pod 是不健康的時候,你的錯誤會停止升級到所有在運行的 pod。

Kubernetes 支持幾個策略來部署你的應用程序。你可以在 Deployment 策略文檔中進行檢查。

優雅停止

這也不是完全跟 Kubernetes 相關,但是如果沒有以合適的方式開啟或者停止你的進程的話,那就不可能有一個好的應用程序生命周期。

開啟服務器

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

完美的服務器停頓

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

活性探測(健康檢查)

在 Kubernetes 中,你應該為你的應用程序定義好健康檢查(活性探測)。有了這個,Kubernetes 就可以檢測到你的應用程序什么時候需要重新啟動。

網頁服務器健康檢查

你有好幾個選項可以檢查應用程序的健康,但是我覺得最容易一個就是,創建一個 GET/healthz 端點來檢查你的應用 logic/DB 連接這里。有個重要的事情要提一下的就是,每個應用程序都是不一樣的,只有你能夠知道需要怎樣的檢查來確認它是否在正常工作。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

Worker健康檢查

對于我們的 worker 來說,我們也會用同樣的/healthz 端點來設置非常小的 HTTP 服務器,同樣都是活性探測,這個端點是用不同的標準來檢查的。我們這么做是為了擁有公司水平的健康檢查端點。

Readiness Probe

Readiness probe 跟Livenessprobe(健康檢查)有點相似,但是它只對網頁服務器可行。它會告訴 Kubernetes service(~負載均衡器),流量可以被重新傳到特定的 pod。

在部署的時候避免服務中斷是基本的要求。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

日志

對于日志來說,你們可以從不同的途徑選擇,比如添加 side containers 到你的應用程序,收集你的日志并且發送到定制日志解決方案,或者你可以跟隨著內置谷歌云的腳步。我們的選擇是內置的那個。

為了能夠在谷歌云上解析內置日志水平,你需要以特定的格式來登錄。你可以用 winston-gke 模塊輕松地完成。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

如果你想要以特定的方式登錄,Kubernetes 會用容器,Deployment 等等自動合并你的日志信息。元信息和谷歌云會以正確的方式展現出來。

為了完成這個,我們轉換我們的npm start到靜音,Dockerfile 中的 npm start-s:CMD ["npm","start", "-s"]

監控

我們用 Trace 來檢查我們的應用程序,Trace 充分利用來監控,設想微服務架構。Trace 的服務地圖在理解應用程序間的互相交流的時候到幫了我們很多,同樣,在理解數據庫和外部依賴是什么的時候也起到了作用。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

既然 Trace 獨立于環境,我們就沒必要在代碼庫中修改任何東西,我們可以用它來驗證遷移和我們對性能提升的期望。

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

工具

用 CI 進行連續部署

用 JSON 途徑來更新 Kubernetes 部署,或者只更新鏡像 tag 是可能的。在你的 CI 機器上有一個運行的 kubectl,你只需要運行這個命令就可以:

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

調試

在 Kubernetes,在任意的容器內運行 shell 都是可能的,就像下圖一樣容易:

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

另一個有用的事情就是用下圖所示代碼檢查 pod events:

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

同樣你也可以以下代碼來獲取任意的日志信息:

怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial

代碼 Piping

在我們 PaaS 提供商層面,我們傾向于喜歡在預發布和產品基礎設施這兩個階段間的代碼 piping。在 Kubernetes 中,我們漏掉了這個部分,所以我們創建了我們自己的解決方案。

這是一個簡單的 npm 庫,能夠從 staging 版本讀取目前的鏡像標簽,并且在 production 版本部署時進行設置。

因為 Docker 容器很像,只有環境變量改變了。

SSL 終端(https)

Kubernetes 服務默認設置下不是作為 https 來暴露的,但是你能夠很輕松地修改它。為了做到這樣,點擊網址了解如何用 Kubernetes 上的 TLS 來暴露你的應用程序。

感謝各位的閱讀,以上就是“怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial”的內容了,經過本文的學習后,相信大家對怎么將Node.js應用從PaaS平臺移動到Kubernetes Tutorial這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松潘县| 邵阳县| 彭州市| 邓州市| 政和县| 景泰县| 乐陵市| 福安市| 固安县| 城步| 桃源县| 东丽区| 丹寨县| 七台河市| 乐业县| 宁河县| 通辽市| 揭阳市| 稷山县| 汤原县| 双城市| 长丰县| 浦江县| 杭州市| 安平县| 扎兰屯市| 西城区| 陕西省| 靖边县| 名山县| 通山县| 衡东县| 大石桥市| 交口县| 北海市| 阳谷县| 正镶白旗| 天峻县| 南汇区| 化州市| 北宁市|