自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

怎樣為 k8s 找到最合適的 PaaS 解決方案?

新聞 前端 PaaS
最近幾年,Kubernetes 成為許多人關(guān)注的焦點(diǎn)。事實(shí)上,有些公司發(fā)現(xiàn) Kubernetes 能發(fā)揮巨大作用,但有些公司還未發(fā)現(xiàn)其價(jià)值,并在這個(gè)過程中將自己搞得“遍體鱗傷”。

 [[325295]]

最近幾年,Kubernetes 成為許多人關(guān)注的焦點(diǎn)。事實(shí)上,有些公司發(fā)現(xiàn) Kubernetes 能發(fā)揮巨大作用,但有些公司還未發(fā)現(xiàn)其價(jià)值,并在這個(gè)過程中將自己搞得“遍體鱗傷”。對(duì)我來說,我正處于中間位置。我打算做類似事情,并且做好了踩坑準(zhǔn)備。在此之前,先讓我們看看如何在 k8s 上部署一個(gè)簡(jiǎn)單的、類似于 PaaS 的平臺(tái)。

1. 找到一個(gè)完美的類 PaaS 平臺(tái)

那么,我們從哪里開始?肯定有一種簡(jiǎn)單方法能找到這樣的東西,也許,我們從簡(jiǎn)單的 DuckDuckGo 搜索開始。

怎样为 k8s 找到最合适的 PaaS 解决方案?

DuckDuckGo 搜索沒啥用

顯然,k8s 不是 PaaS。我想基于 k8s 構(gòu)建一個(gè) PaaS,當(dāng)然不是把它當(dāng)作一個(gè) PaaS 來使用。

然后,我們?cè)?HackerNews 上搜索一下。第一個(gè)查詢找到一篇失效文章。此外,我在 GitHub 上偶然發(fā)現(xiàn)一個(gè)很棒的列表。

https://github.com/ramitsurana/awesome-kubernetes

在進(jìn)行更廣泛的搜索后,我針對(duì)自己的應(yīng)用場(chǎng)景列出一個(gè)可能的候選項(xiàng)目列表。

  • Knative
  • OpenFaaS Cloud
  • Convox
  • Garden
  • Rio

還有很多其他選擇,我嘗試過其中一些,還有一些是針對(duì)大企業(yè)的。

2. 我的應(yīng)用場(chǎng)景

在 Quest Vault ,我們?cè)?DigitalOcean droplet 上安裝一個(gè)簡(jiǎn)單的 Wordpress 來運(yùn)行我們的電商網(wǎng)站。盡管能通過運(yùn)行一些簡(jiǎn)單的 bash 腳本實(shí)現(xiàn)部署,并在本地運(yùn)行測(cè)試 / 過渡服務(wù)器的副本,但是,我想構(gòu)建一個(gè)基于行業(yè)技術(shù)的平臺(tái),而不是一些 bash 腳本。編寫這些 bash 腳本很有趣,并且擁有自己的部署技術(shù)棧也很簡(jiǎn)單,但是,我希望 Quest Vault 能擁有一個(gè)“豪華些”的東西,一個(gè)標(biāo)準(zhǔn)的、讓我們不必為使用的工具操心的東西。

https://questvault.net/

現(xiàn)在,我想在辦公室運(yùn)行 k3s 的 garbage server 上測(cè)試這些項(xiàng)目。K3s 有一個(gè)到 DigitalOcean droplet 的反向代理,而不是在互聯(lián)網(wǎng)上訪問。這意味著項(xiàng)目應(yīng)該支持內(nèi)部部署。

https://k3s.io/

我還希望能完全抽象出 k8s。這意味著我不想處理太多的 yaml 或者一直部署 helm charts,我想多考慮下應(yīng)用程序,并且通過 CLI 就可以做到。

簡(jiǎn)而言之:我想要的是,只要按一個(gè)按鈕,它就工作。

我們的應(yīng)用程序有很多活動(dòng)組件,有些只是簡(jiǎn)單腳本,有些則是為游戲客戶端提供通信的大型應(yīng)用程序。不管是什么,我們的平臺(tái)需要支持大量不同的應(yīng)用程序類型。這通常意味著支持通過 Dockerfile 進(jìn)行部署。

我們計(jì)劃運(yùn)行的大多數(shù)應(yīng)用程序都與狀態(tài)密切相關(guān)。以 Wordpress 為例,我們需要一個(gè)存儲(chǔ)圖片的地方。我們還有很多需要存儲(chǔ)的應(yīng)用內(nèi)照片拍攝。我們需要一種方法使我們的應(yīng)用程序具有某種形式的持久化。

我喜歡的項(xiàng)目很多,但是一個(gè)好項(xiàng)目和一個(gè)偉大項(xiàng)目的區(qū)別在于社區(qū)和行業(yè)的采用。擁有自己的 bash 腳本和在 GitHub 上有 3 個(gè)活動(dòng)用戶的項(xiàng)目幾乎沒有區(qū)別。如果你搞砸了,或者無論出于什么原因需要一些建議,你都希望能從一個(gè)活躍的社區(qū)獲得幫助。

3. 項(xiàng)目清單速覽

Knative

我的 Knative 經(jīng)驗(yàn)有一個(gè)不錯(cuò)的開頭!當(dāng)讀過關(guān)于它的文章后,我很高興地得知:我能運(yùn)行一個(gè)平臺(tái),谷歌在其平臺(tái)內(nèi)部就把它用于他們自己的類似 PaaS 的部署??紤]到谷歌創(chuàng)造了 k8s,這一定非常合適!它的安裝過程比預(yù)期困難得多。

https://knative.dev/docs/install/any-kubernetes-cluster/

似乎沒有什么簡(jiǎn)單方法來安裝這個(gè)平臺(tái),而且,無法輕松地使用一個(gè)平臺(tái)會(huì)是將來的一個(gè)風(fēng)險(xiǎn)。

OpenFaaS Cloud

安裝非常簡(jiǎn)單!我很快就讓這個(gè)平臺(tái)運(yùn)行了起來。它滿足我的大多數(shù)需求,不過,它似乎更像是實(shí)現(xiàn) OpenFaas 的一種有趣方式,而不是完全成熟的 PaaS 可選方案。我不知道如何將我們的用例放到這個(gè)特別的平臺(tái)上。如果你正在搭配使用耦合度比較低的項(xiàng)目或比較小的功能,這是一個(gè)很好的選擇!

Convox

Convox 看起來很棒!幾名前 Heroku 工程師,在 k8s 上構(gòu)建的一個(gè)平臺(tái)。似乎完美!我想嘗試一下,馬上就開始在 DigitalOcean k8s 集群上部署它。開發(fā)體驗(yàn)非常棒!

然而,他們似乎并不支持平臺(tái)的內(nèi)部部署版本。此外,除一些早期采用者外,這個(gè)項(xiàng)目似乎沒有一個(gè)非常大的社區(qū)。相比而言,這個(gè)項(xiàng)目不是很出名,最終我放棄它,去尋找另一種選擇。

Garden

這是一個(gè)非常酷的項(xiàng)目。我喜歡它,一家小型的獨(dú)立公司開發(fā)的一個(gè)創(chuàng)新型解決方案。安裝起來很簡(jiǎn)單,而且他們的方法對(duì) k8s 做了很好的抽象,但是他們也允許你通過經(jīng)典的 k8s 方式來保持某種形式的控制,比如 yaml 文件。我真的很愿意用它,效果很好!

然而,我確實(shí)注意到,它的一些 CLI 還不是很完善,但是,我認(rèn)為這只是些小瑕疵,并不能代表最終產(chǎn)品。

Rio

這個(gè)項(xiàng)目符合所有條件。一個(gè)真正容易使用的 CLI?是的。不再以任何方式與 k8s 交互?是的。使用 Dockerfile 進(jìn)行部署?是的!它們還提供了大量其他平臺(tái)沒有實(shí)現(xiàn)或?qū)崿F(xiàn)得很差的特性。來自 Rancher 的 Rio 似乎從他們活躍的社區(qū)得到了大量支持。

https://rancher.com/blog/2019/rio-revolutionizing-the-way-you-deploy-apps

在 garbage server 上進(jìn)行安裝設(shè)置

我快速地為 k3s 實(shí)例設(shè)置好反向代理,并開始設(shè)置 Rio。

參照他們 GitHub 頁面上的快速入門指南,這個(gè)過程變得超級(jí)簡(jiǎn)單:

  1. # Setting up the reverse proxy to k3s 
  2. ssh -nNTL 6443:localhost:6443 droplet & 
  3.  
  4. # Installing Rio 
  5. curl -sfL https://get.rio.io | sh - 
  6.  
  7. # Running the example project 
  8. rio run https://github.com/rancher/rio-demo 

這樣就行。我超級(jí)激動(dòng),希望馬上看一下,現(xiàn)有的基礎(chǔ)設(shè)施能否同樣輕松地遷移。

Rio 的默認(rèn)安裝允許你使用他們的 rDNS 服務(wù) on-rio.io,這個(gè)服務(wù)很酷,但不需要把我的 garbage server 放在反向代理后面。我還沒有使用 Linkerd 的經(jīng)驗(yàn),所以現(xiàn)在只是禁用它。使用命令 rio install --disable-feature rdns,letsencrypt,linkerd 重新安裝后,我獲得了想要的結(jié)果。

接下來,通過 kubectl 安裝自定義的 ClusterDomain,這讓我能使用 on-rio.io 之外的另一個(gè)域。最后,我安裝了 dnsmasq,并創(chuàng)建了一個(gè)名為 app.rio 的假域名,我的應(yīng)用程序會(huì)在這個(gè)域名上解析。這將讓我能輕松地在 garbage server 上測(cè)試到應(yīng)用程序的連接。

  1. apiVersion: admin.rio.cattle.io/v1 
  2. kind: ClusterDomain 
  3. metadata: 
  4.   name: app.rio 
  5. spec: 
  6.   httpPort: 80 

我還得想辦法從 DigitalOcean droplet 連接到這個(gè)集群。我從 garbage server 上的 80 端口反向代理到 8080 端口上的 droplet。Rio 使用 80 端口安裝了 Gloo 的 gateway-proxy。

最后一步,我設(shè)置了 nginx 配置,使其指向 Gloo 網(wǎng)關(guān):

  1. server { 
  2.     listen 80
  3.     server_name your.domain.name; 
  4.     location / { 
  5.         proxy_http_version 1.1
  6.         proxy_set_header Host $host; 
  7.         proxy_pass http://localhost:8080; 
  8.     } 

這有兩件重要的地方需要注意,分別是 proxy_http_version 1.1 和 proxy_set_header Host。proxy_http_version 非常重要,因?yàn)榛?Envoy 的 Gloo 不支持 http_version 1.0 上的網(wǎng)關(guān),而只支持 1.1 上的網(wǎng)關(guān)。否則,它會(huì)返回一個(gè) 426 Upgrade Required 錯(cuò)誤。

Host 頭對(duì)于實(shí)現(xiàn) PublicDomain 非常重要。需要注意的是,要添加一個(gè) PublicDomain,它必須與 server_name 或被代理的 Host 頭匹配,否則 Gloo 無法識(shí)別我要訪問的是哪個(gè)服務(wù)。

  1. rio domain register your.domain.name rio-demo 

這就是我尋找最合適的 Kubernetes PaaS 解決方案的冒險(xiǎn)。

 

責(zé)任編輯:張燕妮 來源: 架構(gòu)頭條
相關(guān)推薦

2016-01-18 09:26:24

2023-12-01 15:58:00

Kubernetes集群DevOps

2020-06-08 08:37:11

數(shù)據(jù)管理混合云

2016-10-14 14:26:21

2023-02-06 07:47:23

2009-03-17 09:49:00

有線寬帶接入方案ADSL

2020-03-17 10:07:51

K8S

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-11-06 07:16:22

WasmK8s模塊

2016-12-07 14:31:56

數(shù)據(jù)中心機(jī)架配電裝置PDU

2022-09-14 10:49:30

微服務(wù)Kubernetes區(qū)塊鏈

2009-01-12 17:28:10

服務(wù)器虛擬化VMware

2013-04-02 09:25:20

PaaS 應(yīng)用可移植性PaaS提供商平臺(tái)即服務(wù)

2013-07-02 15:26:10

APP企業(yè)移動(dòng)商城

2014-06-18 14:33:58

數(shù)據(jù)保護(hù)

2019-09-05 09:10:35

KafkaK8SKubernetes

2023-09-06 08:12:04

k8s云原生

2023-07-26 07:00:56

Intel內(nèi)存

2024-01-26 14:35:03

鑒權(quán)K8sNode

2016-01-04 09:32:12

云部署大數(shù)據(jù)IaaS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)