目录
安装 Istio
安装 Knative
玩转 helloworld-go
WordPress 实战
创建 Kubernetes 集群
确保 Kubernetes 集群创建的时候已经选择了启用日志服务
确保 Kubernetes 集群和 OSS 在一个 region
Kubernetes 集群创建的时候需要开启 kube-apiserver 公网访问
提前帮用户配置好 kubeconfig 命令行
安装 Istio
安装 Istio 时注意以下几点:
默认要安装 gateway
日志服务和 Xtrace 要提前开通, Istio 需要使用 ZipKin v1 向 Xtrace 汇报监控数据
在容器服务集群管理页面可以直接在目标集群上部署 Istio
安装 Knative
选择好目标集群使用一键部署功能直接安装即可, 安装文档
玩转 helloworld-go
配置日志采集策略
部署 Helloworld
监控告警
调用链
压测数据展示
日志管理
日志服务控制台: https://sls.console.aliyun.com
本示例以容器标准输出采集为例进行展示, 详细设置步骤可以参考日志服务文档
根据 Kubernetes 集群 ID 找到对应的日志服务 Project
创建一个新的 Logstore
设置数据导入方式
选择 Docker 标准输出
配置容器标准输出日志采集策略
- {
- "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 文件
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 日志
监控告警
使用下查询语句进行搜索, 这条语句使用了 SELECT , 可以进行更高级别的操作.
level:ERROR | SELECT COUNT(*) as total
搜索 ERROR 日志, 时间跨度选择一分钟.
点击另存为告警
触发条件的变量就是 左侧表格中的列名称
如下设置的含义是, 1 分钟检索一次 ERROR 日志的数量如果大于等于 4 就告警.
可以设置多种告警通知方式, 并且告警 body 还可以使用系统变量. 获取告警的上下文信息.
打开邮件可以看到告警通知
调用链
调用链控制台: https://tracing-analysis.console.aliyun.com
选择相应的 Region, 点击应用列表查看应用列表
调用链查询页面
压测数据展示
下载源文件: https://kstarter.oss-cn-beijing.aliyuncs.com/knload-result.html , 直接用浏览器打开即可查看
压测的并发数陡增导致服务响应时间抖动, 但随着 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_HOST
- value: {db_host:3306}
- - name: WORDPRESS_DB_NAME
- value: {db_name}
- - name: WORDPRESS_DB_USER
- value: {db_user}
- - name: WORDPRESS_DB_PASSWORD
- value: {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"
- }
- ]
- }
多并发测试
hey -z 30s -c 50 "http://wordpress.default.example.com/" && kubectl get pods
修改主题和安装 plugin
plugins
来源: https://yq.aliyun.com/articles/705455