基於Knative開發應用

目錄

  • 安裝 Istio
  • 安裝 Knative
  • 玩轉 helloworld-go
  • WordPress 實戰

建立 Kubernetes 集羣

  • 確保 Kubernetes 集羣建立的時候已經選擇了啓用日誌服務
  • 確保 Kubernetes 集羣和 OSS 在一個 region
  • Kubernetes 集羣建立的時候須要開啓 kube-apiserver 公網訪問
  • 提早幫用戶配置好 kubeconfig 命令行

安裝 Istio

安裝 Istio 時注意如下幾點:html

  • 默認要安裝 gateway
  • 日誌服務和 Xtrace 要提早開通,Istio 須要使用 ZipKin v1 向 Xtrace 彙報監控數據

在容器服務集羣管理頁面能夠直接在目標集羣上部署 Istiogit

安裝 Knative

選擇好目標集羣使用一鍵部署功能直接安裝便可, 安裝文檔github

玩轉 helloworld-go

  • 配置日誌採集策略
  • 部署 Helloworld
  • 監控告警
  • 調用鏈
  • 壓測數據展現

日誌管理

  • 日誌服務控制檯: https://sls.console.aliyun.com
  • 本示例以容器標準輸出採集爲例進行展現,詳細設置步驟能夠參考日誌服務文檔
  • 根據 Kubernetes 集羣 ID 找到對應的日誌服務 Project
  • 建立一個新的 Logstore

設置數據導入方式docker

選擇 Docker標準輸出api

  • 配置容器標準輸出日誌採集策略
{
  "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+ \\d+:\\d+:\\d+)\\s+(\\w+)\\s+(*)",
        "SourceKey": "content"
      },
      "type": "processor_regex"
    }
  ]
}

分別爲相應的鍵值 time、level 和 msg 設置數據類型瀏覽器

部署 Helloworld

  • 準備 kubeconfig

到容器服務控制檯頁面,打開集羣詳情頁。複製 KubeConfig 內容保存到本地 ~/.kube/config 文件併發

多訪問幾回 helloworld-go 生成一些訪問日誌wordpress

./sample/run-test.sh

生成一些訪問日誌之後點擊查詢,便可查看相應的日誌工具

日誌服務控制檯: https://sls.console.aliyun.com

日誌服務有豐富的查詢條件,好比查詢 ERROR 日誌

監控告警

使用下查詢語句進行搜索,這條語句使用了 SELECT ,能夠進行更高級別的操做。

level:ERROR | SELECT  COUNT(*) as total

搜索ERROR 日誌,時間跨度選擇一分鐘。

點擊另存爲告警

觸發條件的變量就是 左側表格中的列名稱

以下設置的含義是,1分鐘檢索一次 ERROR 日誌的數量若是大於等於4 就告警。

能夠設置多種告警通知方式,而且告警 body 還能夠使用系統變量。獲取告警的上下文信息。

打開郵件能夠看到告警通知

調用鏈

選擇相應的 Region,點擊應用列表查看應用列表

調用鏈查詢頁面

壓測數據展現

下載源文件: https://kstarter.oss-cn-beijing.aliyuncs.com/knload-result.html ,直接用瀏覽器打開便可查看

壓測的併發數陡增致使服務響應時間抖動,但隨着 Pod 數量的自動擴容 RT 很快就恢復到了正常水位。

  • 壓測工具 knload
  • server 端模擬:http-server

WordPress

  • 部署 WordPress
  • 修改主題和安裝 plugin
  • OSS 圖片添加水印
  • 現場互動壓測

部署 WordPress

## 部署 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"
        }
      ]
    }

多併發測試

hey -z 30s -c 50 "http://wordpress.default.example.com/" && kubectl get pods

修改主題和安裝 plugin

  • plugins



本文做者:冬島

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索