AIGC在金融场景是如何落地的? 了解详情
写点什么

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

  • 2019-08-21
  • 本文字数:2751 字

    阅读完需:约 9 分钟

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

相信通过前面几个章节的内容(文末有链接),大家对 Knative 有了初步的体感,那么在云原生时代如何在云上玩转 Knative?本篇内容就给你带来了 Knative 应用在阿里云容器服务上的最佳实践。


何为最佳实践,就是按照生产可用的方式部署服务,提供服务监控告警以及链路追踪。我们按照如下 3 个部分内容进行:


  • Knative Service 服务部署

  • Knative Service 服务日志、监控告警

  • Knative Service 服务分布式链路追踪

准备

参考在阿里云容器服务上部署Knative。 这里注意在部署 Istio 时需要开启 Tracing 分布式追踪。


Knative Service 服务部署

  1. 执行 kubectl 命令:


$kubectl apply -f helloworld-go.yaml
复制代码


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


apiVersion: serving.knative.dev/v1alpha1kind: Servicemetadata:  name: helloworld-go  namespace: defaultspec:  template:    spec:      containers:      - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:160e4db7        env:        - name: TARGET          value: "Knative"
复制代码


  1. 查看 istio-ingressgateway 服务。


[root@iZbp11kx5d8so7gb07fbtkZ samples]# kubectl -n  istio-system get svc istio-ingressgatewayNAME                   TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                                      AGEistio-ingressgateway   LoadBalancer   172.21.5.96   101.37.100.85   15020:30816/TCP,80:31380/TCP,443:31390/TCP,15443:31412/TCP   19d
复制代码


  1. 执行 kubectl 如下命令,获取 Domin 信息


[root@iZbp11kx5d8so7gb07fbtkZ samples]# kubectl get ksvc helloworld-go NAME            URL                                        LATESTCREATED         LATESTREADY           READY   REASONhelloworld-go   http://helloworld-go.default.example.com   helloworld-go-skcpl   helloworld-go-skcpl   True
复制代码


  1. 最后执行 curl -H “Host: helloworld-go.default.example.comhttp://101.37.100.85 可以获取执行的结果


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

Knative Service 服务日志、监控告警

阿里云日志服务(Log Service,简称 LOG)是针对日志类数据的一站式服务,在阿里巴巴集团经历大量大数据场景锤炼而成。您无需开发就能快捷完成日志数据采集、消费、投递以及查询分析等功能,提升运维、运营效率,建立 DT 时代海量日志处理能力。


  1. 选择日志库,创建 Logstore。这里以创建 helloworld 为例:



  1. 数据源接入,选择 Docker 标准输出, 参见[日志服务容器标准输出]



  1. 插件配置这里我们针对 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"    }  ]}
复制代码


  1. 设置查询分析,参考查询与分析。为了便于分析这里设置 level、msg 和 time 这 3 列:



  1. 访问 Hello World 示例服务。


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


  1. 登录日志服务控制台, 进入对应的 Project, 选择 helloworld Logstore,点击查询,可以看到日志输出如图所示:



  1. 设置查询 sql 语句。这里设置监控的原则是根据 ERROR 出现的次数,因此可以设计统计 ERROR 的 sql 语句:


* | select 'ERROR' , count(1) as total group by 'ERROR'
复制代码


点击【查询/分析】,结果如图所示:



  1. 告警设置。点击 【另存为告警】。



  1. 设置告警名称、添加到仪表盘(这里可以新建,输入名称即可)等。其中告警触发条件输入判断告警是否触发的条件表达式, 可以参考告警条件表达式语法。我们这里设置“查询区间:1 分钟,执行间隔:1 分钟,触发条件:total > 3” 表示间隔 1 分钟检查,如果 1 分钟内出现 3 次 ERROR 信息,则触发告警。



  1. 告警通知。当前支持如图所示告警通知:



  1. 访问 Hello World 示例服务。执行多次以下命令,就会触发告警通知


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


如果是设置的邮件通知,告警信息如下图所示:


Knative Service 服务分布式链路追踪

阿里云链路追踪 Tracing Analysis 为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、链路拓扑、应用依赖分析等工具,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率。


  1. 选择命名空间设置如下标签启用 Sidecar 自动注入:istio-injection=enabled。通过这种方式就注入了 Istio 的 envoy 代理(proxy)容器, Istio 的 envoy 代理拦截流量后会主动上报 trace 系统。以设置 default 命名空间为例:


kubectl label namespace default istio-injection=enabled
复制代码


  1. 访问 Hello World 示例服务。


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


  1. 登录阿里云链路追踪服务控制台, 选择应用列表,可以查看对应应用的 tracing 信息。



  1. 选择应用,点击查看应用详情,可以看到服务调用的平均响应时间。


结论

通过以上的实践,相信大家已经了解了如何在阿里云容器服务上部署生产可用的 Serverless 服务。如果你有更好的 Knative 实践欢迎一起交流。


本文作者:


冬岛,阿里云容器平台技术专家,负责阿里云容器平台 Knative 相关工作。欢迎加入 Knative 钉钉群(群号 : 23302777)进行深入交流


相关文章:


《初识 Knative:跨平台的 Serverless 编排框架》


《Knative 初体验:Serving Hello World》


《Knative 初体验:Eventing Hello World》


《Knative 初体验:Build Hello World》


《Knative 初体验:CI/CD 极速入门》


《Knative 基本功能深入剖析:Knative Serving 的流量灰度和版本管理》


《Knative 基本功能深入剖析:Knative Serving 自动扩缩容 Autoscaler》


《Knative 基本功能深入剖析:Knative Serving 之服务路由管理》


2019-08-21 09:278691

评论

发布
暂无评论
发现更多内容

ChatGPT:生成式AI引领科学革命

百度开发者中心

#人工智能 ChatGPT 文心一言

IOS内如何调用小程序

Geek_abc9bd

小程序 前端

Flutter:构建跨平台移动应用的新选择

Geek_abc9bd

小程序 前端

人工智能引领图文扫描新趋势

石臻臻的杂货铺

人工智能

在代码世界游走,没几把“锁”防身可不行 | 京东云技术团队

京东科技开发者

分布式锁 java锁 java‘ 企业号 8 月 PK 榜

龙智案例:某大型零售企业如何打造高速、现代化的ITSM体系

龙智—DevSecOps解决方案

ITSM 工单管理系统 Jira Service Management

高性能MySQL实战(一):表结构 | 京东物流技术团队

京东科技开发者

数据库表 表结构设计 企业号 8 月 PK 榜 高性能表

Vue 项目性能优化实践

Geek_abc9bd

小程序 前端

SecureFX for Mac 附注册码 v9.4.1

胖墩儿不胖y

ftp Mac软件 FTP文件传输工具

IntelliJ IDEA下基于Scala实现的Git检查工具

TiAmo

git IDEA IntelliJ IDEA 代码检查

浅谈Redis - 热点key问题 | 京东云技术团队

京东科技开发者

redis Redis 热点key 企业号 8 月 PK 榜

云堡垒机英语怎么翻译?它比硬件堡垒机便宜吗?

行云管家

云计算 堡垒机 云堡垒机

大数据平台需要做等保测评吗?怎么做?

行云管家

大数据 等保 大数据平台 等级保护 等保测评

ChatGPT:生成式AI技术带来的变革

百度开发者中心

自动驾驶 #人工智能 文心一言

[OpenHarmony]稳定性专项运作知识地图,一张图带你稳过“万重山”

LAVAL社区小助手

OpenHarmony

[OpenHarmony]效果差、不便捷、无接口,TV项目共建如何避开这些坑?

LAVAL社区小助手

OpenHarmony

React和Vue谁会淘汰谁?

Geek_abc9bd

体育馆LED显示屏技术解决方案

Dylan

技术 系统 比赛 LED显示屏 体育

解析大规模开发:提升企业级开发效率与质量,加速创新

龙智—DevSecOps解决方案

Atlassian Atlassian 云版 大规模开发

工时管理魔法课堂:如何在Jira中进行项目时间与成本管理?

龙智—DevSecOps解决方案

Jira插件 工时管理 jira工时

绝对干货!如何更好的利用 ChatGPT 提升编码效率?

booboosui

DevOps ChatGPT 智能编程 AI软件开发

hbuilderx打包苹果证书获取步骤

雪奈椰子

ios 开发 Windows开发 苹果证书

系统架构合理性的思考 | 京东云技术团队

京东科技开发者

架构设计 应用架构 企业号 8 月 PK 榜 架构合理性

ChatGPT:引领未来智能交互的生成式AI

百度开发者中心

#人工智能 ChatGPT 文心一言

被人忽略的电视领域:如何借助小程序成为行业独角兽

Geek_abc9bd

小程序 前端

汽车行业必读:ISO 26262和ASIL安全等级解读与攻略

龙智—DevSecOps解决方案

Helix QAC 安全标准 ISO 26262 静态分析工具

mac前端代码编辑神器 sublime text 4中文激活码

mac大玩家j

代码编辑器 Mac软件 前端代码编辑

Spring缓存是如何实现的?如何扩展使其支持过期删除功能? | 京东云技术团队

京东科技开发者

spring Spring Cache 企业号 8 月 PK 榜 spring缓存

QCA9880 QCA9882 What’s the difference?|802.11ac Qualcomm Atheros Network card Wallys

wallyslilly

QCA9880 QCA9882

解析BeanDefinitionRegistry与BeanDefinition合并

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

6步玩转OpenHarmony标准芯片适配

LAVAL社区小助手

OpenHarmony

  • 扫码添加小助手
    领取最新资料包
Knative 应用在阿里云容器服务上的最佳实践_语言 & 开发_阿里云容器平台_InfoQ精选文章