Knative 是一個基于 Kubernetes 的,用于構建、部署和管理現代 serverless 應用的平臺。Getting Started with Knative 是一本由 Pivotal 公司贊助 O’Reilly 出品的電子書,公眾號后臺回復“knative”獲取英文版下載地址。本書中文版由 ServiceMesher 社區自發翻譯系列文章,這是該系列的第5章。
在開始使用 Knative 構建和托管工作負載前,你需要安裝它。你還應該運行一些命令來驗證它是否正常運行并按預期工作。本章將介紹從 Mac 或 Linux shell 安裝和驗證 Knative 的必要步驟。
首先,你需要已經有一個 Kubernetes 集群。Knative 要求 Kubernetes 的版本在1.11以上。你必須在集群上啟用 MutatingAdmissionWebhook admission controller。為了簡單,你可以在本地機器上使用 Minikube 或者在云上運行集群。
為什么我們需要安裝 Istio
迄今為止,我們還沒討論過 Istio,但是它作為安裝的一部分出現了。Istio 是什么?Knative 為什么需要它?
Istio 是一個服務網絡。它在 Kubernetes 之上提供了很多特性,包括流量管理、網絡策略執行和可觀察性。我們不認為 Istio 是 Knative 的組件,而是它的依賴項之一,就像 Kubernetes 一樣。所以 Knative 最終使用 Istio 運行在 Kubernetes 集群之上。
本報告的目的不是詳細說明 Istio 的內部工作。在這一章中,我們將介紹 Istio 與 Knative 一起使用時要用到的關于 Istio 的所有知識。如果你想了解更多,可以從 What is Istio? 以及 Istio documentation 開始。
須知
建立 Kubernetes 集群有許多選擇。決定使用哪種工具取決于您的需求和提供者對特定工具集的熟悉程度。在 GitHub 中參考 Knative’s installation documentation 以獲得特定提供者的指令。
在您的本地機器上,請確保您已經安裝了 kubectl v1.11或更高版本。將上下文設置指向 Knative 設置的集群。您將使用 kubectl 以 YAML 文件的形式應用于所有的 crd。
集群建立之后,使用以下兩個命令設置 Istio:
kubectl apply --filename https://storage.googleapis.com/knative-releases/serving/latest/istio.yamlkubectl label namespace default istio-injection=enabled
第一個命令將所有必需的 Istio 對象導入集群。第二個命令在 default 命名空間中啟用 Istio 自動注入。這可以確保 Istio 在 default 命名空間中為每個 Pod 創建時自動注入邊車(sidecar)。(你會注意到所有 Pod 至少都有兩個容器。一個是用戶的容器;一個是 istio-proxy。) Knative 依賴于 Istio 組件。使用以下命令驗證 Istio 安裝,直到所有 Pod 顯示為運行或完成:
kubectl get pods -n istio-system --watch
現在您已經使用 Istio 運行了集群,可以開始安裝 Knative。使用 kubectl 命令安裝 Knative 的核心組件 Serving 和 Build。YAML 聲明文件可以從 Google Storage 或 GitHub 獲取。您可以使用特定的版本或使用最新的 release 版本。下面的命令將從 Google Storage 中獲取最新的版本:
kubectl apply --filename https://storage.googleapis.com/knative-releases/serving/latest/release.yamlkubectl apply --filename https://storage.googleapis.com/knative-releases/build/latest/release.yaml
再次驗證這些對象是否正確導入。使用以下命令監視它們,直到所有 Pod 顯示為運行:
kubectl get pods --namespace knative-serving --watchkubectl get pods --namespace knative-build --watch
小貼士:輕量安裝
如果您正在本地機器上安裝 Knative 或剛剛開始安裝,您可能希望在不使用內置監控(在 monitoring 命名空間下)組件的情況下安裝 Knative。在這種情況下,您可以使用以下命令來安裝服務:
kubectl apply --filename https://storage.googleapis.com/knative-releases/serving/latest/release-no-mon.yaml
這避免了在 monitoring 命名空間中安裝任何組件。想要獲取更多信息,請看 第7章指標和日志。
Serving 和 Build 安裝完成并運行后,按照類似的步驟啟動 Eventing 模塊:
kubectl apply --filename https://storage.googleapis.com/knative-releases/eventing/latest/release.yamlkubectl get pods --namespace knative-eventing --watch
最后,你可以選擇安裝你需要的 Build 模板。這一步與第三章中的步驟完全相同。下面是安裝 Kaniko 和 Buildpacks 模板的命令:
kubectl apply -f https://raw.githubusercontent.com/knative/build-templates/master/kaniko/kaniko.yamlkubectl apply -f https://raw.githubusercontent.com/knative/build-templates/master/buildpack/buildpack.yaml
須知
如果你計劃使用 Build 模塊將源代碼打包到鏡像中,你需要一個容器倉庫來推送。在安裝 Knative 的同時,考慮設置對所選容器倉庫的訪問。容器倉庫你可以選擇 Docker Hub 或谷歌容器倉庫這樣的公共托管方式,或者你也可以設置自己的私有倉庫。有關訪問和將鏡像推送到倉庫的更多信息,請參閱第4章中的 Build 組件。
您可以使用 kubectl get buildtemplates 命令驗證 Build 模板是否已成功安裝。這將返回 default 命名空間中安裝的所有構建模板的列表:
$ kubectl get knativeNAME AGEbuildpack 1mkaniko 1m
刪除 Knative 對象
您可能希望在添加某些 Knative 組件之后刪除它們??梢允褂?kubectl delete 命令從集群中刪除任何 Knative 對象。正如您使用 kubectl apply 引用 YAML 文件一樣,您也可以使用 kubectl delete 執行相同的操作:
kubectl delete -f https://raw.githubusercontent.com/knative/build-templates/master/kaniko/kaniko.yaml
Kubernetes 集群已啟動。Istio 已經安裝。已添加了 Serving 、 Build 和 Eventing 組件。您可能已經添加了一兩個 Build 模板。您幾乎已經準備好開始使用 Knative 了。剩下的只需要獲取一些關于如何在網絡上訪問它的信息。
安裝方法選擇
本章中的步驟展示了如何使用本地的 kubectl apply 命令分別安裝 Knative 組件。然而,一些構建在 Knative 之上的無服務器框架也可能包含安裝系統的快捷方式。例如, riff 提供了一個在 Kubernetes 集群上安裝和運行 Knative 的一行程序:
riff system install
這需要 riff CLI 和 Kubernetes 集群已經建立且 kubectl 已經指向正確的上下文。
設置好 Knative 集群之后,就可以將應用程序部署到 Knative 上了。但你需要知道如何使用它們。它們如何暴露在集群中?Knative 在 istio-system 命名空間中使用 LoadBalancer 方式。使用以下命令獲取外部 IP 地址,列名:EXTERNAL-IP
$ kubectl get svc istio-ingressgateway --namespace istio-systemNAME TYPE CLUSTER-IP EXTERNAL-IPistio-ingressgateway LoadBalancer 10.23.247.74 35.203.155.229
正如您將在第6章中看到的,這個 IP 地址加上正確的 HTTP HOST 頭就可以向集群上的應用程序發起請求。為了方便使用,可以把外部 IP 地址設置為 KNATIVE_INGRESS 這個環境變量:
$ export KNATIVE_INGRESS=$(kubectl get svc istio-ingressgateway --namespace istio-system --output 'jsonpath={.status.loadBalancer.ingress[0].ip}')$ echo $KNATIVE_INGRESS35.203.155.229
現在,使用與我們在第2章中看到的類似的 curl 命令,我們可以使用這個環境變量向 Knative 環境中的服務發出請求:
curl -H "Host: my-knative-service-name.default.example.com" http://$KNATIVE_INGRESS
不支持 Load Balancer?
如果你的 Kubernetes 實例不支持 load balancer(比如:Minikube),命令會略有不同因為 EXTERNAL-IP 會顯示為。使用以下命令返回節點的 IP 和端口:
$ export KNATIVE_INGRESS=$(kubectl get node --output 'jsonpath={.items[0].status.addresses[0].address}'):$(kubectl get svc istio-ingressgateway> --namespace istio-system --output 'jsonpath={.spec.ports[?(@.port==80)].nodePort}')$ echo $KNATIVE_IN10.10.0.10:32380
現在已經設置好了一切,可以將應用程序部署到 Knative 了。在第6章,您將看到一些不同的示例。您還將了解通過設置靜態 IP、自定義域名以及 DNS 配置來公開集群的更健壯的方式。
END
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
火焰結晶哪里刷?火焰結晶的刷新點主要有三個,分別位于北風苔原,龍骨荒野以及風暴峭壁。其中北風苔原的火元素等級為69-70級,在升級的過程中就可以直接刷,龍骨荒野和風暴峭壁的野怪都趨于滿級,最好在滿級之后再去刷。由于野怪等級不同,掉落的幾率也有差距,比如北風苔原70級火元素掉落火焰結晶的幾率只有15%左右,而80級野怪掉落的幾率高達25%以上。魔獸巫妖王70級去哪刷火焰結晶?魔獸世界火焰結晶獲得方法...
當然是北京可以養金毛嗎?。金毛有以下優點,適合飼養。1.金毛是一種溫和的犬種。它是三種非攻擊性犬種之一。它很溫柔,對人類很友好,喜歡和人玩,平時也很溫柔。(但是唐 我不認為它 真的沒有攻擊性。)2,金毛顏值高,小時候特別軟萌,長大后很帥,笑起來有一種別扭的感覺,很有治愈力。3.金毛 s智商高。據說金毛 s的智商在狗界排第四,可見他很聰明。平時稍加訓練,金毛就能很快理解他的主人 s的話,學好他的技術...
西直門三棟大樓叫什么?西直門的三座建筑統稱西環廣場。西環廣場由三面橢圓形玻璃幕墻和一座方形建筑組成,創造了在地鐵上建高樓的歷史。是北京北站旁邊的標志性建筑。行駛到北二環或者西二環的時候非常醒目。其實更像是風水學中三座山的意思,北面有山。北京北站凱德mall是哪個店?它就是凱德mall西直門店,位于西直門立交橋西北角兩點半的拋物大廈,也就是西環廣場,離北京北站很近。北京哪有太平鳥專柜?太平鳥(西直門...