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.k8ops.cn
?