基于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
目录
相关文章
|
2月前
|
人工智能 弹性计算 自然语言处理
阿里云AI龙虾实测:JVS Claw免费7天体验,下载就能用不需要安装也不要邀请码!厉害了
阿里云JVS Claw是基于OpenClaw框架打造的AI龙虾助手,支持手机/PC/网页三端互通,下载即用、免安装、无邀请码。提供7天免费体验,一键创建云端或本地Clawbot,内置办公技能及上千种可扩展Skills,安全高效,零门槛上手。
1027 6
【408计算机组成原理】—移位运算(七)
【408计算机组成原理】—移位运算(七)
|
1月前
|
人工智能 监控 数据挖掘
影视解说视频自动化:AI 工作流 + CLI 工具链全流程拆解
本文分享AI影视解说的全流程实践:覆盖豆瓣数据选题、FFmpeg素材处理、Prompt优化文案、CLI一键合成、变量实验数据分析五大环节,详解工具链选型与真实局限,强调“能自动则自动,需判断则人工”,助力高效量产(日更3–5条),兼顾效率与可控性。(239字)
|
4月前
|
Ubuntu API 数据库
PXD 部署 阿里云 PolarDB-X 集群(企业版、标准版)教程
本文详细演示了使用PXD在Ubuntu 24.04上部署PolarDB-X企业版和标准版集群的完整流程,涵盖环境准备、Docker与Python配置、PXD安装、集群创建、连接测试及销毁等步骤,并附多篇主流操作系统安装指南,助力快速搭建分布式数据库环境。
2130 5
|
4月前
|
Kubernetes 容器 数据库
K8S 部署 阿里云 PolarDB-X 集群(企业版、标准版)minikube 教程
本文介绍在 Minikube Kubernetes 环境中部署 PolarDB-X 数据库的完整实践,涵盖环境准备、Operator 安装、企业版与标准版集群部署。通过 Helm 快速部署 Operator,并分别搭建分布式与三节点高可用架构,验证核心功能。虽 K8S 部署便捷,但生产环境建议谨慎使用,尤其对有状态数据库系统。附系列前8篇安装指南供参考。
2668 5
|
8月前
|
数据采集 存储 运维
MyEMS:技术架构深度剖析与用户实践支持体系
MyEMS 是一款开源能源管理系统,采用分层架构设计,涵盖数据采集、传输、处理与应用全流程,支持多协议设备接入与多样化能源场景。系统具备高扩展性与易用性,结合完善的文档、社区、培训与定制服务,助力不同技术背景用户高效实现能源数字化管理,降低使用门槛与运维成本,广泛适用于工业、商业及公共机构等场景。
342 0
|
4月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 12 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
|
4月前
|
人工智能 自然语言处理 安全
2026数字人公司TOP企业排行
随着AI、图形学等技术进步,数字人产业快速发展。2025年我国相关企业超1200家,规模突破300亿元。阿里、华为、腾讯、世优科技等企业在电商、通信、社交、AI交互等领域领先,推动数字人在金融、政务、教育等场景落地。技术趋同下,全栈能力与行业理解成竞争关键。
1015 1
|
安全 物联网 物联网安全
制定统一的物联网技术标准和规范的难点有哪些?
制定统一的物联网技术标准和规范的难点有哪些?
608 58
|
5月前
|
缓存 边缘计算 监控
CDN加速原理与配置优化
本文深入解析CDN加速原理与配置优化,涵盖边缘节点、回源机制与缓存策略三大核心。通过域名配置、智能压缩、安全防护及监控分析等环节详解,结合电商大促实战案例,提供提升访问速度、降低源站压力的完整优化方案,助力企业实现高效、安全的内容分发。
211 0