基于Knative开发应用

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: - 安装 Istio - 安装 Knative - 日志、监控和 Tracing 管理

准备工作

安装 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

1b67a7f3bcb04c58a10e44ee211ea360aa8eb759

选择启用链路追踪,点击【立即开通】 跳转到调用链页面获取接入点链接

image_20190617171351903

到链路追踪页面开启日志服务授权

image_20190617141625445

image_20190617141642918

如下所示的状态标明已经开通成功

image_20190617173035910

选择对应 region 的 ZipKin 内网 v1 的接入点
image_20190617174149980

回到 Istio 页面粘贴接入点,继续安装。
image_20190618091643776

部署 Knative

到容器服务的控制台上面选择好目标集群使用一键部署功能直接部署 Knative 安装文档

156024301948852_zh_CN

开始部署 Knative, 等十几秒钟即可完成部署。
image_20190617175044602

部署 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

,把文件中的 __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

CICD 自动化

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

运维操作

Tracing

https://tracing-analysis.console.aliyun.com/ 查看 tracing 信息

选择相应的 Region,点击应用列表查看应用列表

image_20190614132351721

调用链查询页面

image_20190614111731967

image
image

日志管理

  • 日志服务控制台: https://sls.console.aliyun.com

  • 本示例以容器标准输出采集为例进行展示,详细设置步骤可以参考日志服务文档

  • 根据 Kubernetes 集群 ID 找到对应的日志服务 Project

  • 创建一个新的 Logstore

image_20190613112709733

设置数据导入方式

image_20190613112738869

选择 Docker标准输出

image_20190613112814144

  • 配置容器标准输出日志采集策略
{
  "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 设置数据类型

image

创建完成以后回到刚才的 Project 可以看到创建的 logstore , 然后即可进行日志查询等管理动作

image_20190618105806630

image

告警

code 400 | SELECT  COUNT(*) as total

触发告警

watch -n 1 ' curl http://wordpress.default.kubedemo.com/wp-admin/admin-ajax.php'

image_20190618110410378

image_20190618110449649

image_20190618110633595

过一分钟左右可以看到邮件告警通知

image_20190618110849925

Autoscaler

简单压测
可以到这里下载二进制文件,然后执行如下所示的命令开始压测。

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

knload 压测工具

压测数据展示

压测的并发数陡增导致服务响应时间抖动,但随着 Pod 数量的自动扩容 RT 很快就恢复到了正常水位。

OSS 事件触发

  • 安装 MNSOSS Chart 包
    image

  • namespace 开启默认 broker

    kubectl label namespace default knative-eventing-injection=enabled --overwrite
    
  • 安装 mnsoss source 配置
    kubectl apply -f mnsoss.yaml
    
  • 详情参考: https://yq.aliyun.com/articles/706126
  • 实验原理
    image

  • 向 OSS 中上传一张带有人像的图片

  • OSS 上传图片的事件自动触发 Knative 人脸识别程序执行,并且生成一张新图片。新图片中有人像性别的标识。
  • 更多场景
    image

清理环境

  • 取消 Istio 自动注入

    kubectl label  namespace default istio-injection-
    
  • 卸载 Knative 组件
    image

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
缓存 网络协议 安全
49. 【Android教程】HTTP 使用详解
49. 【Android教程】HTTP 使用详解
511 1
|
前端开发
三种方式实现主题切换方案
三种方式实现主题切换方案
【408计算机组成原理】—移位运算(七)
【408计算机组成原理】—移位运算(七)
|
存储 运维 安全
华为的云计算认证和阿里云的云计算认证有什么区别?
作为一个新兴的行业,云计算在最近几年正逐渐提高自己在人们日常生活中的作用,给人们的生活带来了巨大的便利,而且随着科技地不断发展。
|
2月前
|
弹性计算 固态存储 大数据
今年最新阿里云服务器年/月/小时价格表详解:含ECS、轻量与GPU云服务器
阿里云服务器多少钱?今年最新阿里云服务器年/月/小时价格表详解:含ECS、轻量与GPU云服务器。今年最新的云服务器租用价格表,包括轻量应用服务器、云服务器ECS和GPU服务器。现在最新阿里云服务器租用费用价格表,轻量2核2G轻量服务器一年68元,折合5.6元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年(企业专享),2核4G4M轻量服务器298元一年,4核8G服务器955元一年,4核16G10M服务器70元1个月、210元3个月,8核32G服务器160元1个月、480元3个月,整理2026阿里云服务器租用费用价格表,包括一年优惠价格、一个月和1小时收费明细表:
|
SQL 分布式计算 DataWorks
如何让DataWorks调度依赖一个非DataWorks的任务结点,如数据上传任务?
如何让DataWorks调度依赖一个非DataWorks的任务结点,如数据上传任务?创建一个表的空分区,然后通过DataWorks去检查这个分区。
258 7
|
安全 关系型数据库 MySQL
Web安全-条件竞争漏洞
Web安全-条件竞争漏洞
344 0
|
11月前
|
移动开发 安全 虚拟化
VMware ESXi 8.0e 发布 - 领先的裸机 Hypervisor
VMware ESXi 8.0e 发布 - 领先的裸机 Hypervisor
306 4
VMware ESXi 8.0e 发布 - 领先的裸机 Hypervisor
|
缓存 网络协议 算法
计算机网络常用知识总结!(二)
计算机网络常用知识总结!
743 4
|
人工智能 物联网 大数据
申报开启|2024年阿里云协同育人第二批项目申报指南
2024年阿里云协同育人第二批项目申报正式开启。为落实国家教育规划,深化产教融合,阿里云设立教学内容和课程体系改革、实践条件和实践基地建设等项目,支持高校创新人才培养。申报截止日期为2024年11月15日,立项公示于11月29日前完成。欢迎各高校积极申报,共育创新人才。

热门文章

最新文章