天天看点

基于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 事件触发清理环境

继续阅读