基于Knative开发应用
title: (三)基于Knative開發(fā)應用
目錄
- 安裝 Istio
- 安裝 Knative
- 玩轉 helloworld-go
- WordPress 實戰(zhàn)
創(chuàng)建 Kubernetes 集群
- 確保 Kubernetes 集群創(chuàng)建的時候已經選擇了啟用日志服務
- 確保 Kubernetes 集群和 OSS 在一個 region
- Kubernetes 集群創(chuàng)建的時候需要開啟 kube-apiserver 公網訪問
- 提前幫用戶配置好 kubeconfig 命令行
安裝 Istio
安裝 Istio 時注意以下幾點:
- 默認要安裝 gateway
- 日志服務和 Xtrace 要提前開通,Istio 需要使用 ZipKin v1 向 Xtrace 匯報監(jiān)控數據
在容器服務集群管理頁面可以直接在目標集群上部署 Istio
安裝 Knative
選擇好目標集群使用一鍵部署功能直接安裝即可,?安裝文檔
玩轉 helloworld-go
- 配置日志采集策略
- 部署 Helloworld
- 監(jiān)控告警
- 調用鏈
- 壓測數據展示
日志管理
- 日志服務控制臺:?https://sls.console.aliyun.com
- 本示例以容器標準輸出采集為例進行展示,詳細設置步驟可以參考日志服務文檔
- 根據 Kubernetes 集群 ID 找到對應的日志服務 Project
- 創(chuàng)建一個新的 Logstore
設置數據導入方式
選擇 Docker標準輸出
- 配置容器標準輸出日志采集策略
分別為相應的鍵值 time、level 和 msg 設置數據類型
部署 Helloworld
- 準備 kubeconfig
到容器服務控制臺頁面,打開集群詳情頁。復制 KubeConfig 內容保存到本地 ~/.kube/config 文件
- git clone?https://github.com/knative-sample/helloworld-go
-
安裝
cd helloworld-go kubectl apply -f sample/service.yaml
多訪問幾次 helloworld-go 生成一些訪問日志
./sample/run-test.sh生成一些訪問日志以后點擊查詢,即可查看相應的日志
日志服務控制臺:?https://sls.console.aliyun.com
日志服務有豐富的查詢條件,比如查詢 ERROR 日志
監(jiān)控告警
使用下查詢語句進行搜索,這條語句使用了 SELECT ,可以進行更高級別的操作。
level:ERROR | SELECT COUNT(*) as total搜索ERROR 日志,時間跨度選擇一分鐘。
點擊另存為告警
觸發(fā)條件的變量就是 左側表格中的列名稱
如下設置的含義是,1分鐘檢索一次 ERROR 日志的數量如果大于等于4 就告警。
可以設置多種告警通知方式,并且告警 body 還可以使用系統(tǒng)變量。獲取告警的上下文信息。
打開郵件可以看到告警通知
調用鏈
- 調用鏈控制臺:?https://tracing-analysis.console.aliyun.com
選擇相應的 Region,點擊應用列表查看應用列表
調用鏈查詢頁面
壓測數據展示
下載源文件:?https://kstarter.oss-cn-beijing.aliyuncs.com/knload-result.html?,直接用瀏覽器打開即可查看
壓測的并發(fā)數陡增導致服務響應時間抖動,但隨著 Pod 數量的自動擴容 RT 很快就恢復到了正常水位。
- 壓測工具 knload
- server 端模擬:http-server
WordPress
- 部署 WordPress
- 修改主題和安裝 plugin
- OSS 圖片添加水印
- 現場互動壓測
部署 WordPress
-
工程
- https://github.com/knative-sample/wordpress
- https://github.com/knative-sample/deployer
- ?
-
部署 WordPress
## ENV 換成具體的值env:- name: WORDPRESS_DB_HOSTvalue: {db_host:3306}- name: WORDPRESS_DB_NAMEvalue: {db_name}- name: WORDPRESS_DB_USERvalue: {db_user}- name: WORDPRESS_DB_PASSWORDvalue: {db_password}## 部署 WordPress # kubectl apply -f /Users/qiulin.nql/works/github/knative-sample/secret/wordpress-service.yaml kubectl apply -f sample/service.yaml
-
添加 Egress
kubectl apply -f sample/egress.yaml -
訪問 WordPress 服務
./hack/run-wp-test.sh - host 綁定 && 瀏覽器訪問
-
日志收集
{"inputs": [{"detail": {"IncludeEnv": {"K_SERVICE": "wordpress"},"IncludeLabel": {},"ExcludeLabel": {}},"type": "service_docker_stdout"}],"processors": [{"detail": {"KeepSource": false,"NoMatchError": true,"Keys": ["ip","time","req","code"],"NoKeyError": true,"Regex": "(\\d+.\\d+.\\d+.\\d+)\\s+-\\s+(\\d+/\\w+/\\d+:\\d+:\\d+:\\d+\\s\\+\\d+)\\s\"(.*)\"\\s(\\d+)","SourceKey": "content"},"type": "processor_regex"}] }
多并發(fā)測試
hey -z 30s -c 50 "http://wordpress.default.example.com/" && kubectl get pods
修改主題和安裝 plugin
- plugins
原文鏈接
本文為云棲社區(qū)原創(chuàng)內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的基于Knative开发应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Tablestore Tunnel的
- 下一篇: 搜索场景下的智能推荐演变之路