天天看點

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

準備工作

安裝 kubectl

Linux 安裝 kubectl

curl -LO https://kstarter-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubectl/kubectl/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl --help           

MacOS 安裝 kubectl

curl -LO https://kstarter-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubectl/kubectl/darwin/amd64/kubectl 
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl --help           

Windows 安裝 kubectl

https://kstarter-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubectl/kubectl/windows/amd64/kubectl.exe

放到系統 PATH 路徑下

kubectl --help           

配置 kubeconfig

配置 kubectl 連接配接 Kubernetes 叢集的配置,可參考文檔

通過kubectl連接配接Kubernetes叢集

建立 Kubernetes 叢集

如果還未建立 Kubernetes 叢集,可以到

這裡

建立一個 Kubernetes 叢集

部署 Istio

在容器服務

叢集管理頁面

可以直接在目标叢集上部署 Istio

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

選擇啟用鍊路追蹤,點選【立即開通】 跳轉到調用鍊頁面擷取接入點連結

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

到鍊路追蹤頁面開啟日志服務授權

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

如下所示的狀态标明已經開通成功

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

選擇對應 region 的 ZipKin 内網 v1 的接入點

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

回到 Istio 頁面粘貼接入點,繼續安裝。

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

部署 Knative

到容器服務的

控制台

上面選擇好目标叢集使用一鍵部署功能直接部署 Knative

安裝文檔
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

開始部署 Knative, 等十幾秒鐘即可完成部署。

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

部署 WordPress

開啟 Istio Sidecar 注入

kubectl label namespace default istio-injection=enabled --overwrite           

添加 egress

執行下面指令添加 egress 配置,使得 Pod 内部可以通路資料庫服務:

kubectl apply -f https://knative-sample.oss-cn-shanghai.aliyuncs.com/kubecon-2019-sh/egress.yaml            

修改預設域名

預設 Istio Gateway 綁定的域名是 example.com,防止 example.com 未備案導緻不能通路我們把域名改成 kubedemo.com

kubectl apply -f https://knative-sample.oss-cn-shanghai.aliyuncs.com/kubecon-2019-sh/custom-domain.yaml           

建立 Knative Service

點選連結下載下傳

wp-service.yaml

,把檔案中的

__DB_NAME__

替換成你自己的資料庫名稱.

執行

kubectl apply -f wp-service.yaml

安裝WordPress

  • 擷取 istio Gateway IP
└─# kubectl get svc istio-ingressgateway --namespace istio-system --output jsonpath="{.status.loadBalancer.ingress[*]['ip']}"
  
  47.95.139.84           
  • 擷取 WordPress 通路位址
└─# kubectl get ksvc wordpress --output=custom-columns=NAME:.metadata.name,DOMAIN:.status.domain
  
  NAME        DOMAIN
  wordpress   wordpress.default.kubedemo.com           
  • 添加 host 綁定

Linux 和 Mac 編輯

/etc/hosts

檔案,在最後添加一行

sudo vim /etc/hosts  
  47.95.139.xx wordpress.default.kubedemo.com           

Windows

直接在

C:\WINDOWS\system32\drivers\etc

目錄的 HOSTS 檔案最後添加一行

47.95.139.xx wordpress.default.kubedemo.com

即可。具體操作方法參見:

https://yq.aliyun.com/articles/706009
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

CICD 自動化

例子:

https://github.com/knative-sample/wordpress

運維操作

Tracing

https://tracing-analysis.console.aliyun.com/

檢視 tracing 資訊

選擇相應的 Region,點選應用清單檢視應用清單

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

調用鍊查詢頁面

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

日志管理

  • 日志服務控制台: https://sls.console.aliyun.com
  • 本示例以容器标準輸出采集為例進行展示,詳細設定步驟可以參考 日志服務文檔
  • 根據 Kubernetes 叢集 ID 找到對應的日志服務 Project
  • 建立一個新的 Logstore
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

設定資料導入方式

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

選擇 Docker标準輸出

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
  • 配置容器标準輸出日志采集政策
{
  "inputs": [
    {
      "detail": {
        "IncludeEnv": {
          "K_SERVICE": "wordpress"
        },
        "IncludeLabel": {},
        "ExcludeLabel": {}
      },
      "type": "service_docker_stdout"
    }
  ],
  "processors": [
    {
      "detail": {
        "KeepSource": false,
        "NoMatchError": true,
        "Keys": [
          "ip",
          "time",
          "action",
          "url",
          "code"
        ],
        "NoKeyError": true,
        "Regex": "(\\d+.\\d+.\\d+.\\d+)\\s+-\\s+(\\d+/\\w+/\\d+:\\d+:\\d+:\\d+\\s\\+\\d+)\\s\"(\\w+)\\s(.*)\"\\s(\\d+)",
        "SourceKey": "content"
      },
      "type": "processor_regex"
    }
  ]
}           

分别為相應的鍵值 ip、time、action、url 和 code 設定資料類型

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

建立完成以後回到剛才的 Project 可以看到建立的 logstore , 然後即可進行日志查詢等管理動作

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

告警

code 400 | SELECT  COUNT(*) as total           

觸發告警

watch -n 1 ' curl http://wordpress.default.kubedemo.com/wp-admin/admin-ajax.php'           
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

過一分鐘左右可以看到郵件告警通知

基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

Autoscaler

簡單壓測

可以到

下載下傳二進制檔案,然後執行如下所示的指令開始壓測。

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

knload 壓測工具

壓測資料展示

下載下傳

壓測結果檔案

,下載下傳後直接用浏覽器打開即可檢視

壓測的并發數陡增導緻服務響應時間抖動,但随着 Pod 數量的自動擴容 RT 很快就恢複到了正常水位。

OSS 事件觸發

  • 安裝 MNSOSS Chart 包
    基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
  • namespace 開啟預設 broker
kubectl label namespace default knative-eventing-injection=enabled --overwrite           
  • 安裝 mnsoss source 配置
kubectl apply -f mnsoss.yaml           
  • 詳情參考: https://yq.aliyun.com/articles/706126
  • 實驗原理
    基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境
  • 向 OSS 中上傳一張帶有人像的圖檔
  • OSS 上傳圖檔的事件自動觸發 Knative 人臉識别程式執行,并且生成一張新圖檔。新圖檔中有人像性别的辨別。
  • 更多場景
    基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

清理環境

  • 取消 Istio 自動注入
kubectl label  namespace default istio-injection-           
  • 解除安裝 Knative 元件
    基于Knative開發應用準備工作部署 WordPressCICD 自動化運維操作AutoscalerOSS 事件觸發清理環境

繼續閱讀