Cài đặt đúng cách Knative trên GKE

cloudFun

Có rất nhiều vấn đề trong cách cài đặt Knative mặc định cho Google Kubernete Engine (GKE) (xem bug 2266). Bài đăng này sẽ giúp xác định vấn đề, cung cấp các tập lệnh phù hợp cho đến khi một giải pháp thích hợp được thực hiện trong gcloud hoặc Knative.

Google-Kubernetes-Engine.png


Vấn đề
Hướng dẫn cài đặt Knative mặc định cho biết cách tạo GKE cluster như sau:
Mã:
gcloud beta container clusters create $CLUSTER_NAME \
  --addons=HorizontalPodAutoscaling,HttpLoadBalancing,Istio \
  --machine-type=n1-standard-4 \
  --cluster-version=latest --zone=$CLUSTER_ZONE \
  --enable-stackdriver-kubernetes --enable-ip-alias \
  --enable-autoscaling --min-nodes=1 --max-nodes=10 \
  --enable-autorepair \
  --scopes cloud-platform
Chú ý phần Istio add-on ở đây. Lệnh này tạo một Kubernetes cluster với Istio đã được cài đặt. Nó rất có ích khi cài đặt vì Istio là một phụ thuộc của Knative.

Sau đó, tiếp tục với việc cài đặt Knative Serving và Knative Eventing. Tại thời điểm này, Knative Serving sẽ hoạt động tốt còn Knative Eventing vẫn gặp phải một số vấn đề.

Như đã giải thích trong bài viết trước, không thể sử dụng Knative Services làm sự kiện ẩn trong Knative Eventing. Ví dụ: Knative Service không thể nhận tin nhắn Google Cloud Pub / Sub thông qua Knative Eventing (như cách Dịch vụ Kubernetes thuần túy hoạt động).

Tại sao? Bởi vì cổng cục bộ để nhận các sự kiện được chuyển đến Knative Services chưa được cài đặt. Tài liệu về Knative có một trang giải thích làm thế nào để cài đặt điều này. Tuy nhiên, nó đã lỗi thời và chỉ dựa vào Helm và không thể làm cho nó hoạt động chỉ bằng cách sử dụng các hướng dẫn đó.

Không giải pháp ban đầu
Bài viết trước đã đưa ra một giải pháp ban đầu có vẻ khá thành công nhưng hiện tại nó không còn hoạt động nữa. Giải pháp đó là một thư mục third_party trong Knative Serving. Trong thư mục này, có một vài phiên bản của các thư mục Istio (1.3.6 và 1.4.2 tính đến hiện tại). Trong các thư mục này, có một tệp istio-knative-extras.yaml có thể áp dụng để cài đặt cổng cục bộ.

Hiện tại giải pháp này không còn hoạt động nữa vì phiên bản Istio add-on trong GKE chậm hơn đáng kể so với 1.3.6. Knative cập nhật các phiên bản Istio nhanh hơn add-on của GKE.

Giải pháp cuối cùng
Giải pháp cuối cùng về cơ bản là không dựa vào Istio add-on của GKE nữa. Thay vào đó là dựa vào các phiên bản Istio trong thư mục third_party của Knative và cài đặt phiên bản Istio bằng cách sử dụng các tệp yaml trong đó. Cùng một thư mục cũng có các tệp yaml để cài đặt cổng cục bộ cluster.

Tạo một GKE cluster mà không cần Istio add-on
Mã:
gcloud beta container clusters create $CLUSTER_NAME \
--addons HorizontalPodAutoscaling,HttpLoadBalancing \
--zone $CLUSTER_ZONE \
--cluster-version $CLUSTER_MASTER_VERSION \
--machine-type $CLUSTER_NODE_MACHINE_TYPE \
--num-nodes $CLUSTER_START_NODE_SIZE \
--min-nodes 1 \
--max-nodes $CLUSTER_MAX_NODE_SIZE \
--enable-ip-alias \
--enable-stackdriver-kubernetes \
--enable-autoscaling \
--enable-autorepair \
--scopes cloud-platform
Cài đặt Istio theo cách thủ công bằng cách sử dụng các tệp yaml từ Knative Serving
Mã:
ISTIO_VERSION=1.4.2
kubectl apply -f https://raw.githubusercontent.com/knative/serving/master/third_party/istio-${ISTIO_VERSION}/istio-crds.yaml
kubectl apply -f https://raw.githubusercontent.com/knative/serving/master/third_party/istio-${ISTIO_VERSION}/istio-minimal.yaml
Cài đặt cluster cổng cục bộ
Mã:
kubectl apply -f https://raw.githubusercontent.com/knative/serving/master/third_party/istio-${ISTIO_VERSION}/istio-knative-extras.yaml
Nguồn: https://medium.com/
 
Top