knative-安裝

介紹

詳細的介紹請google/bing.cn,Knative是一個不被廠商綁定的Serverless平台,可以將傳統服務遷移到knative上,在學習knative之前不免需要搭建,下面是我學習過程中搭建方法。

因為knative是建立在kubernetes和istio之上的,但是現在的0.14.0版本可以有多個網絡組件可選,比如kourier/Gloo/Istio,為了簡化學習,避免引入Istio複雜的東西,本次搭建基於Kourier(Knative官方維護)。Kubernets搭建,可以選用k3s(k3s-安裝)。

安裝

現將需要安裝部署的服務文件放在knative-demo庫上,搭建前請clone下來

由於knative的官方鏡像放在gcr.io上面,國內用戶無法下載,我通過
knative-demo裏面的sync-image.sh同步了一份到阿里雲上,下面是搭建步驟

export KUBECONFIG=$(pwd)/k3s.yaml
alias k=kubectl
mkdir -p tmp/github
cd tmp/github/
git clone //github.com/seanly/knative-demo.git
cd knative-demo
k apply -f ./serving-crds.yaml
k apply -f ./serving-core.yaml
k apply -f ./net-kourier.yaml
kubectl patch configmap/config-network \
  --namespace knative-serving \
  --type merge \
  --patch '{"data":{"ingress.class":"kourier.ingress.networking.knative.dev"}}'

k get pod -n kourier-system
k get pod -n knative-serving

結果:

NAME                                      READY   STATUS    RESTARTS   AGE
svclb-kourier-djdrt                       2/2     Running   0          7h56m
svclb-kourier-hrrd7                       2/2     Running   0          7h56m
svclb-kourier-gg76z                       2/2     Running   0          7h56m
3scale-kourier-control-769cc7bdd8-5mqdv   1/1     Running   0          7h56m
3scale-kourier-gateway-775668c4f6-jpg6f   1/1     Running   0          7h56m
NAME                          READY   STATUS    RESTARTS   AGE
controller-6b69f8fcb7-ftsfk   1/1     Running   0          8h
webhook-7845db5d8d-wmhsq      1/1     Running   0          8h
activator-5f5677dfd6-g4cgq    1/1     Running   0          8h
autoscaler-67fdff4d75-h2lhq   1/1     Running   0          8h

獲取ingress gateway的ip

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
kourier-internal   ClusterIP      10.43.35.82     <none>          80/TCP                       7h57m
kourier-control    ClusterIP      10.43.223.155   <none>          18000/TCP                    7h57m
kourier            LoadBalancer   10.43.99.187    172.22.31.104   80:32766/TCP,443:31870/TCP   7h57m

部署demo測試

k create ns knative-demo
k apply -f helloworld-go-app.yaml -n knative-demo
k get ksvc -n knative-demo

顯示結果:

NAME            URL                                            LATESTCREATED         LATESTREADY           READY   REASON
helloworld-go   //helloworld-go.knative-demo.knative.k8ops.cn   helloworld-go-58kq4   helloworld-go-58kq4   True
curl -H "Host: helloworld-go.knative-demo.knative.k8ops.cn"  //172.22.31.104

演示圖

knative-demo

最後留一個問題,

  1. 如何修改域名knative.k8ops.cn

參考文檔

  1. 阿里雲Knative
  2. knative-demo
Tags: