基于Knative开发应用


title: (三)基于Knative开发应用

目录

  • 安装 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_HOSTvalue: {db_host:3306}- name: WORDPRESS_DB_NAMEvalue: {db_name}- name: WORDPRESS_DB_USERvalue: {db_user}- name: WORDPRESS_DB_PASSWORDvalue: {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


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jdk1.6 + jsch End of IO Stream Read Algorithm negotiation fail

文章目录方案一(jdk升级到jdk8,openSSH配置文件不变,亲测可用)方案二(保持jdk1.6,修改openSSH配置文件,亲测可用)问题描述 环境:jdk1.6 jsch-0.1.52.jar openSSH7.4 升级openSSH到7.4后jsch报错:End of I…

Java-可变参数

public class Demo04 {public static void main(String[] args) {// 调用可变参数的方法printMax(34, 3, 3, 2, 56.5);printMax(new double[]{1, 2,4, 3});}public static void printMax(double... numbers) {if (numbers.length 0){System.out.println("没有传递参数&qu…

Oracle应用迁移到AnalyticDB for PostgreSQL指导

AnalyticDB for PostgreSQL(简称:ADB for PG)对Oracle语法有着较好的兼容,本文介绍如何将Oracle应用迁移到AnalyticDB for PostgreSQL。 1 PL/SQL PL/SQL(Procedural Language/SQL)是一种过程化的SQL语言…

生产环境使用HBase,你必须知道的最佳实践

来源 | 阿丸笔记封图| CSDN 下载于视觉中国前面,我们已经打下了很多关于HBase的理论基础,今天,我们主要聊聊在实际开发使用HBase中,需要关注的一些最佳实践经验。Schema设计七大原则1)每个region的大小应该控制在10G到…

消息点击率翻倍的背后——闲鱼无侵入可扩展IFTTT系统

作者:闲鱼技术-剑辛 一、面临问题 在闲鱼生态里,用户之间会有很多种关系。其中大部分关系是由买家触发,联系到卖家,比如买家通过搜索、收藏、聊天等动作与卖家产生联系;另外一部分是平台与用户之间的关系。对这些关系…

2019阿里云618大促主会场全攻略

2019阿里云618大促活动已经于6月16日正式开启,从已开放的活动页面来看,整场大促活动由爆款拼团、满额最高返6000、上云接力赛分享集赞赢6.18万大奖三大活动组成。 在618这个年中的大幅度优惠促销日,怎样才能花最少的钱配置最特惠的云服务&am…

Redis-6.2.5 安装 Linux环境(单机)

文章目录1. 安装依赖环境2. 升级GCC3. 在线下载4. 解压5. 编译6. 安装7. 前台启动8. 后台启动9. 配置开机启动10. 常用命令11. 评析1. 安装依赖环境 yum install -y gcc-c autoconf automaker2. 升级GCC 这里说明一下,在编译之前:在编译之前需要升级gcc…

Java-递归

public class Demo05 {public static void main(String[] args) {System.out.println(f(5));}// 5! 5*4*3*2*1 阶乘public static int f(int n){if (n1){return 1;} else {return n*f(n-1);}} }递归特别消耗资源,如果嵌套太多层就不建议使用了 https://www.bilibi…

为什么说优秀架构师往往是一个悲观主义者?

阿里妹导读:18年前,200家企业由于在事故中信息系统遭到严重破坏而永远地关闭了。这样的事故引发了后人深思,对于工程师而言,不仅要求设计的系统足够强壮,还需要具备考虑失败的能力,当失败场景悉数被考虑周全…

石锤!今年Python要过苦日子了? 程序员:我疯了!

Python的好日子到头了?Python终于要回归现实了?所有程序员,刚刚一份报告把Python的真相撕开了!不信你看:Python今年要跑路?三份报告炸出真相....「人生苦短,钱多事少,快用Python」&a…

Redis 基本数据类型试炼

文章目录1. String 类型2. 散列hashes3. 列表lists(双向链表)4. 集合set(自动去重)5. 有序集合sorted(自动去重)1. String 类型 # 设置单个值 set key value# 获取单个值 get key# 设置多个值 mset key1 value1 key2 value2 。。。# 获取多个值 mget …

ECS事件通知之创建失败事件

ECS提供了批量实例创建接口,可以一次调用创建最多100台实例。批量创建接口可以完成批量实例的创建、启动、IP分配等流程,可以快速完成实例资源的扩容。 在实例的创建过程中(实际后台异步创建),库存和VSwitch中私网IP的…

安装 kivy

系统:Windows10 64位 python 3.7.6 最好管理员身份打开 命令行窗口pip安装 kivy 依赖 ——在 windows 命令行中,执行以下命令 pip3 install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glew -i http://pypi.douban.com/simple --trusted-h…

HSF/Dubbo序列化时的LocalDateTime, Instant的性能问题

来源 在对Dubbo新版本做性能压测时,无意中发现对用例中某个TO(Transfer Object)类的一属性字段稍作修改,由Date变成LocalDateTime,结果是吞吐量由近5w变成了2w,RT由9ms升指90ms。 在线的系统,拼…

Java-数组的声明与创建

public class ArrayDemo01 {// 变量的类型 变量的名字 变量的值;public static void main(String[] args) {// 数组定义方式有两种,但是推荐第一个int[] nums; // 1. 声明一个数组 // int nums1[];nums new int[10]; // 2. 创建一个数组// …

云上快速搭建Serverless AI实验室

Serverless Kubernetes和ACK虚拟节点都已基于ECI提供GPU容器实例功能,让用户在云上低成本快速搭建serverless AI实验室,用户无需维护服务器和GPU基础运行环境,极大降低AI平台运维的负担,显著提升整体计算效率。 如何使用GPU容器实…

Vim快速移动光标至行首和行尾

1、 需要按行快速移动光标时,可以使用键盘上的编辑键Home,快速将光标移动至当前行的行首。除此之外,也可以在命令模式中使用快捷键"^"(即Shift6)或0(数字0)。 2、 如果要快速移动光标…

十分钟上手 ES 2020 新特性

作者 | 浪里行舟责编 | 郭芮ES2020 是 ECMAScript 对应 2020 年的版本。这个版本不像 ES6 (ES2015)那样包含大量新特性。但也添加了许多有趣且有用的特性。本文的代码地址:https://github.com/ljianshu/Blog本文以简单的代码示例来介绍 ES2020新特性。这样&#xff…

时延敏感业务低概率超时问题分析

前言 作为阿里云底层提供的基础设施,内部的物理网络和许多网络产品在数据平面给客户的可操作性并不高,从一定程度上来说是个黑盒。当然,在传统的IDC环境,业务和物理网络之间也存在同样的隔阂。所以在遇到业务卡顿、延迟、不通等问…