日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Knative 应用在阿里云容器服务上的最佳实践

發布時間:2025/3/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Knative 应用在阿里云容器服务上的最佳实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者|元毅 阿里云智能事業群高級開發工程師

相信通過前面幾個章節的內容,大家對 Knative 有了初步的體感,那么在云原生時代如何在云上玩轉 Knative?本篇內容就給你帶來了 Knative 應用在阿里云容器服務上的最佳實踐。

何為最佳實踐,就是按照生產可用的方式部署服務,提供服務監控告警以及鏈路追蹤。我們按照如下 3 個部分內容進行:

  • Knative Service 服務部署
  • Knative Service 服務日志、監控告警
  • Knative Service 服務分布式鏈路追蹤

準備

參考在阿里云容器服務上部署Knative。 這里注意在部署 Istio 時需要開啟 Tracing 分布式追蹤。

Knative Service 服務部署

  • 執行 kubectl 命令:
  • $kubectl apply -f helloworld-go.yaml

    其中 helloworld-go.yaml 示例內容:

    apiVersion: serving.knative.dev/v1alpha1 kind: Service metadata:name: helloworld-gonamespace: default spec:template:spec:containers:- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4db7env:- name: TARGETvalue: "Knative"
  • 查看 istio-ingressgateway 服務。
  • [root@iZbp11kx5d8so7gb07fbtkZ samples]# kubectl -n istio-system get svc istio-ingressgateway NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 172.21.5.96 101.37.100.85 15020:30816/TCP,80:31380/TCP,443:31390/TCP,15443:31412/TCP 19d
  • 執行 kubectl 如下命令,獲取 Domin 信息
  • [root@iZbp11kx5d8so7gb07fbtkZ samples]# kubectl get ksvc helloworld-go NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go http://helloworld-go.default.example.com helloworld-go-skcpl helloworld-go-skcpl True
  • 最后執行 curl -H “Host: helloworld-go.default.example.com” http://101.37.100.85 可以獲取執行的結果
  • [root@iZbp11kx5d8so7gb07fbtkZ samples]# curl -H "Host: helloworld-go.default.example.com" http://101.37.100.85 Hello Knative!

    Knative Service 服務日志、監控告警

    阿里云日志服務(Log Service,簡稱 LOG)是針對日志類數據的一站式服務,在阿里巴巴集團經歷大量大數據場景錘煉而成。您無需開發就能快捷完成日志數據采集、消費、投遞以及查詢分析等功能,提升運維、運營效率,建立 DT 時代海量日志處理能力。

  • 選擇日志庫,創建 Logstore。這里以創建 helloworld 為例:

  • 數據源接入,選擇 Docker 標準輸出, 參見日志服務容器標準輸出

  • 插件配置這里我們針對 helloworld-go Service, 設置采集的環境變量為:“K_SERVICE”: “helloworld-go”。并且通過 processors 分割日志信息,如這里 “Keys”: [ “time”,“level”, “msg” ]。

  • {"inputs": [{"detail": {"IncludeEnv": {"K_SERVICE": "helloworld-go"},"IncludeLabel": {},"ExcludeLabel": {}},"type": "service_docker_stdout"}],"processors": [{"detail": {"KeepSource": false,"NoMatchError": true,"Keys": ["time","level","msg"],"NoKeyError": true,"Regex": "(\\d+-\\d+-\\d+\\s+\\d+:\\d+:\\d+)\\s+(\\w+)\\s+(.*)","SourceKey": "content"},"type": "processor_regex"}] }
  • 設置查詢分析,參考查詢與分析。為了便于分析這里設置 level、msg 和 time 這 3 列:

  • 訪問 Hello World 示例服務。

  • [root@iZbp11kx5d8so7gb07fbtkZ samples]# curl -H "Host: helloworld-go.default.example.com" http://101.37.100.85 Hello Knative!
  • 登錄日志服務控制臺, 進入對應的 Project, 選擇 helloworld Logstore,點擊查詢,可以看到日志輸出如圖所示:

  • 設置查詢 sql 語句。這里設置監控的原則是根據 **ERROR **出現的次數,因此可以設計統計 ERROR 的 sql 語句:

  • * | select 'ERROR' , count(1) as total group by 'ERROR'

    點擊【查詢/分析】,結果如圖所示:

  • 告警設置。點擊 【另存為告警】。

  • 設置告警名稱、添加到儀表盤(這里可以新建,輸入名稱即可)等。其中告警觸發條件輸入判斷告警是否觸發的條件表達式, 可以參考告警條件表達式語法。我們這里設置“查詢區間:1 分鐘,執行間隔:1 分鐘,觸發條件:total > 3” 表示間隔 1 分鐘檢查,如果 1 分鐘內出現 3 次 ERROR 信息,則觸發告警。

  • 告警通知。當前支持如圖所示告警通知:

  • 訪問 Hello World 示例服務。執行多次以下命令,就會觸發告警通知

  • [root@iZbp11kx5d8so7gb07fbtkZ samples]# curl -H "Host: helloworld-go.default.example.com" http://101.37.100.85 Hello Knative!

    如果是設置的郵件通知,告警信息如下圖所示:

    Knative Service 服務分布式鏈路追蹤

    阿里云鏈路追蹤 Tracing Analysis 為分布式應用的開發者提供了完整的調用鏈路還原、調用請求量統計、鏈路拓撲、應用依賴分析等工具,可以幫助開發者快速分析和診斷分布式應用架構下的性能瓶頸,提高微服務時代下的開發診斷效率。

  • 選擇命名空間設置如下標簽啟用 Sidecar 自動注入:istio-injection=enabled。通過這種方式就注入了 Istio 的 envoy 代理(proxy)容器, Istio 的 envoy 代理攔截流量后會主動上報 trace 系統。以設置 default 命名空間為例:
  • kubectl label namespace default istio-injection=enabled
  • 訪問 Hello World 示例服務。
  • [root@iZbp11kx5d8so7gb07fbtkZ samples]# curl -H "Host: helloworld-go.default.example.com" http://101.37.100.85 Hello Knative!
  • 登錄阿里云鏈路追蹤服務控制臺, 選擇應用列表,可以查看對應應用的 tracing 信息。

  • 選擇應用,點擊查看應用詳情,可以看到服務調用的平均響應時間。

  • 結論

    通過以上的實踐,相信大家已經了解了如何在阿里云容器服務上部署生產可用的 Serverless 服務。如果你有更好的Knative 實踐歡迎一起交流。

    歡迎加入 Knative 交流群

    總結

    以上是生活随笔為你收集整理的Knative 应用在阿里云容器服务上的最佳实践的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。