本文選自 《Knative 雲原生應用開發指南》 。
準備工作
- 本安裝操作中的步驟bash适用于MacOS或Linux環境。對于Windows,某些指令可能需要調整。
- 本安裝操作假定您具有現有的Kubernetes叢集,可以在其上輕松安裝和運作Alpha級軟體。
- Knative需要Kubernetes叢集v1.14或更高版本,以及可相容 kubectl。
安裝Istio
Knative 依賴 Istio 進行流量路由和入口。您可以選擇注入 Istio sidecar 并啟用 Istio 服務網格,但是并非所有Knative元件都需要它。
如果您的雲平台提供了托管的Istio安裝,則建議您以這種方式安裝Istio,除非您需要自定義安裝功能。
如果您希望手動安裝Istio,或者雲提供商不提供托管的Istio安裝,或者您要使用Minkube或類似的本地安裝Knative,請參閱
《 安裝Istio for Knative》指南注意:可以使用
Ambassador和
Gloo替代Istio。
安裝Knative元件
每個Knative元件必須單獨安裝。您可以根據需要決定安裝哪些元件和内置監控插件。
注意:如果首次嘗試安裝失敗,請嘗試重新運作指令。很可能會在第二次嘗試中成功。
選擇Knative安裝檔案
可以使用以下 Knative 安裝檔案:
- Serving 部分
- https://github.com/knative/serving/releases/download/ {{ <版本>}}/serving.yaml
- {{ <版本>}}/serving-cert-manager.yaml
- 内置監控插件
- Eventing 元件
- https://github.com/knative/eventing/releases/download/ {{ <版本>}}/release.yaml
- {{ <版本>}}/eventing.yaml
- {{ <版本>}}/in-memory-channel.yaml
- Eventing 事件源
- https://github.com/knative/eventing-contrib/releases/download/ {{ <版本>}}/github.yaml
- {{ <版本>}}}/camel.yaml
- {{ <版本>}}}/gcppubsub.yaml
- {{ <版本>}}}/kafka.yaml
- {{ <版本>}}/kafka-channel.yaml
安裝Knative
- 如果要從 Knative 0.3.x 更新,請執行以下操作:将 domain 和靜态 IP 位址更新為與 istio-ingressgateway 關聯, 而不是 knative-ingressgateway。然後運作以下指令清理剩餘的資源:
kubectl delete svc knative-ingressgateway -n istio-system
kubectl delete deploy knative-ingressgateway -n istio-system
如果安裝了Knative Eventing Sources元件,則還需要在更新之前删除以下資源:
kubectl delete statefulset/controller-manager -n knative-sources
-
要安裝 Knative 元件或插件,請在kubectl apply指令中指定檔案名 。為了防止由于資源安裝順序導緻安裝失敗,請首先運作帶有該 -l knative.dev/crd-install=true 标志的安裝指令,然後再次運作沒有 --selector 标志的安裝指令。
示例安裝指令:
- 如果需要使用内置監控插件,安裝 Knative Serving 元件,請運作以下指令:
- 僅安裝CRD:
kubectl apply --selector knative.dev/crd-install=true \
--filename https://github.com/knative/serving/releases/download/{{ <版本> }}/serving.yaml \
--filename https://github.com/knative/serving/releases/download/{{ <版本> }}/monitoring.yaml
- 删除--selector knative.dev/crd-install=true 标志,然後運作指令以安裝Serving元件和監控插件:
kubectl apply --filename https://github.com/knative/serving/releases/download/{{ <版本> }}/serving.yaml \
--filename https://github.com/knative/serving/releases/download/{{ <版本> }/monitoring.yaml
- 如果不使用内置監控插件的情況下安裝所有Knative元件,請運作以下指令。
kubectl apply --selector knative.dev/crd-install=true \
--filename https://github.com/knative/serving/releases/download/{{< version >}}/serving.yaml \
--filename https://github.com/knative/eventing/releases/download/{{< version >}}/release.yaml
- 删除--selector knative.dev/crd-install=true 标志,然後運作指令以安裝所有Knative元件,包括Eventing資源:
kubectl apply --filename https://github.com/knative/serving/releases/download/{{ <版本> }}/serving.yaml \
--filename https://github.com/knative/eventing/releases/download/{{ <版本> }}/release.yaml
- 根據選擇安裝的内容,通過運作以下一個或多個指令來檢視安裝狀态:
kubectl get pods --namespace knative-serving
kubectl get pods --namespace knative-eventing
- 如果安裝了内置監控插件,請運作以下指令:
kubectl get pods --namespace knative-monitoring
其它
考慮到國内使用者有可能拉取不斷外部鏡像,安裝檔案可參考:
https://github.com/knative-sample/knative-release/tree/v0.10.0“ 阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術圈。”