Knative

Knative Serving 健康检查机制分析

折月煮酒 提交于 2020-04-20 10:19:06
作者| 阿里云智能事业群技术专家牛秋霖(冬岛) 导读 :从头开发一个Serverless引擎并不是一件容易的事情,今天咱们就从Knative的健康检查说起。通过健康检查这一个点来看看Serverless模式和传统的模式都有哪些不同,以及Knative针对Serverless场景都做了什么思考。 Knative Serving 模块的核心原理如下图所示,图中的 Route 可以理解成是 Istio Gateway 的角色。 当缩容到零时进来的流量就会指到 Activator 上面; 当 Pod 数不为零时流量就会指到对应的 Pod 上面,此时流量不经过 Activator; 其中 Autoscaler 模块根据请求的 Metrics 信息实时动态的扩缩容。 Knative 的 Pod 是由两个 Container 组成的:Queue-Proxy 和业务容器 user-container。架构如下: 咱们以 http1 为例进行说明:业务流量首先进入 Istio Gateway,然后会转发到 Queue-Proxy 的 8012 端口,Queue-Proxy 8012 再把请求转发到 user-container 的监听端口,至此一个业务请求的服务就算完成了。 粗略的介绍原理基本就是上面这样,现在咱们对几个细节进行深入的剖析看看其内部机制: 为什么要引入 Queue-Proxy?

Knative Serving 进阶: Knative Serving SDK 开发实践

走远了吗. 提交于 2020-04-19 08:41:31
作者 | 阿里云智能事业群技术专家 牛秋霖(冬岛) 导读 :通过前面的一系列文章你已经知道如何基于 kubectl 来操作 Knative 的各种资源。但是如果想要在项目中集成 Knative 仅仅使用 kubectl 这种命令的方式是不够的,还需要在代码中基于 Knative Serving SDK 进行集成开发。本篇文章中,阿里云智能事业群技术专家冬岛将从 Knative Serving SDK 入手,介绍如何基于 Knative SDK 进行 serverless 开发。 Golang Context 在正式开始介绍 Knative Serving SDK 之前,我们先简单介绍一下 Golang Context 的机理。因为在 Knative Serving 中 client、Informer 的初始化和信息传递完全是基于 Golang Context 实现的。 Golang 是从 1.7 版本开始引入的 Context ,Golang 的 Context 可以很好的简化多个 goroutine 之间以及请求域间的数据传递、取消信号和截至时间等相关操作。Context 主要有两个作用: 传输必要的数据; 进行协调控制,比如终止 goroutein、设置超时时间等。 Context 定义 Context 本身是一个接口。 type Context interface {

Gartner 发布容器公有云竞争格局报告 | 云原生生态周报 Vol. 44

我的未来我决定 提交于 2020-04-06 04:03:48
作者 | 王思宇、陈洁 业界要闻 Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌 近日,国际知名调研机构 Gartner 发布 2020 年容器公有云竞争格局报告,阿里云再度成为国内唯一入选厂商。Gartner 报告显示,阿里云容器服务在中国市场表现强劲,产品形态丰富,与 AWS 并列第一,领先 Google、微软、IBM 和 Oracle 四家厂商。<br /> MicroK8s v1.18 发布 3 月 27 日,Ubuntu 发布 MicroK8s v1.18 版本。最新版本支持 Linux / MacOS / Windows 跨平台部署,并更新了 CoreDNS / Helm / etcd 等相关组件版本。 CNCF 新增 81 位成员 新增成员多为 CNCF 开源项目的活跃参与者。 上游重要进展 新增 Multi-Cluster Services API 新增一个 ServiceExport 资源,来扩展跨多个 Cluster 的 Service 概念,支持跨集群的服务发现。 kubectl scale 命令支持 --dry-run=server|client 参数 在使用 kubectl scale 的时候,可以选择 client-side 和 server-side 的 dry-run。 修复 StatefulSet 创建 Pod 后 PVC

如何在 Knative 中部署 WebSocket 和 gRPC 服务?

最后都变了- 提交于 2020-03-08 14:27:12
作者 | 冬岛 阿里云容器平台工程师 **导读:**虽然说 Knative 默认就支持 WebSocket 和 gRPC,但在使用中会发现,有时想要把自己的 WebSocket 或 gRPC 部署到 Knative 中,还是存在各种不顺利。虽然最后排查发现,大多是自己的程序问题或是配置错误导致的。本文分别给出了一个 WebSocket 和 gRPC 的例子,当需要在生产或者测试环境部署相关服务时,可以使用本文给出的示例进行 Knative 服务的测试。 WebSocket 如果自己手动的配置 Istio Gateway 支持 WebSocket 就需要开启 websocketUpgrade 功能。但使用 Knative Serving 部署其实就自带了这个能力。本示例的完整代码放在 https://github.com/knative-sample/websocket-chat ,这是一个基于 WebSocket 实现的群聊的例子。 使用浏览器连接到部署的服务中就可以看到一个接收信息的窗口和发送信息的窗口。当你发出一条信息以后所有连接进来的用户都能收到你的消息。所以你可以使用两个浏览器窗口分别连接到服务中,一个窗口发送消息一个窗口接收消息,以此来验证 WebSocket 服务是否正常。 本示例是在 gorilla/websocket 基础之上进行了一些优化: 代码中添加了

容器云未来:Kubernetes、Istio 和 Knative

独自空忆成欢 提交于 2020-03-01 20:25:29
目前以Kubernetes为基础构建的容器生态逐渐完善,这其中 Kubernetes、Istio、Knative 三个独立项目被越来越多的人提及,并且已经开始尝试大规模落地实践,它们恰好构成了容器云的未来拼图。今天与大家一起分享下,这三个项目究竟解决了什么问题,为什么它们能够一鸣惊人。 随着微服务理念不断深入人心,越来越多的企业把自己的应用逐步由单体转变成微服务架构,Container容器技术的出现恰恰加速了这个转移过程,因为它有效地解决了N多服务的快速部署问题。但是随着服务数目的增多,越来越多的企业希望能够把相关服务有效地“聚合”在一起,方便统一部署与管理。Kubenretes的出现恰恰解决了大规模微服务编排部署所带来的挑战,让整个行业意识到PaaS的落地可以成为现实。 当随着微服务体系下的服务数目越来越多,服务运维成为必然要解决的问题,于是Istio出现了,基于网络代理与控制相分离的实现策略,允许对服务控制策略进行有效合理的管控。 到这里似乎到了很美好的阶段: 微服务 :解决应用内聚、臃肿的问题。 Container :解决服务运行环境统一,和部署问题。 Kubernetes :解决大量微服务有效“聚合”部署问题。 Istio :解决服务上线面临的一系列治理问题。 这个阶段乍一看来,构建容器云似乎有了一个完整的链路和解决方式,一切都将变得那么“完美”。

国内在Minikube上搭建Knative及示例演示

て烟熏妆下的殇ゞ 提交于 2020-03-01 00:20:58
1. 什么是Serverless?什么是Mnative? 什么是 Severless, 下面是 CNCF 对 Serverless 架构给出的定义: “Serverless computing refers to the concept of building and running applications that do not require server management. It describes a finer-grained deployment model where applications, bundled as one or more functions, are uploaded to a platform and then executed, scaled, and billed in response to the exact demand needed at the moment” 从定义中可以看出 Serverless 架构应该下面的几个特点: 构建及运行应用的基础设施环境 无需进行服务的状态管理 足够细粒度的部署模式 可扩展且按使用量付费 上面的几个特点,除去足够细粒度的部署模式外,Kubernetes 都能够提供非常好的支持。幸运的是,不管是为了让 Kubernetes 完整支持 Serverless 架构,还是 Google 在 cloud

Knative 实战:基于 Kafka 实现消息推送

感情迁移 提交于 2020-02-29 22:24:41
作者 | 元毅 阿里云智能事业群高级开发工程师 导读 :当前在 Knative 中已经提供了对 Kafka 事件源的支持,那么如何基于 Kafka 实现消息推送呢?本文作者将以阿里云 Kafka 产品为例,给大家解锁这一新的姿势。 背景 消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列 for Apache Kafka 广泛用于日志收集、监控数据聚合、流式数据处理、在线和离线分析等大数据领域,已成为大数据生态中不可或缺的部分。 结合 Knative 中提供了 KafkaSource 事件源的支持, 可以方便的对接 Kafka 消息服务。 另外也可以安装社区 Kafka 2.0.0 及以上版本使用。 在阿里云上创建 Kafka 实例 创建 Kafka 实例 登录 消息队列 Kafka 控制台 , 选择【购买实例】。由于当前 Knative 中 Kafka 事件源支持 2.0.0 及以上版本,在阿里云上创建 Kafka 实例需要选择包年包月、专业版本进行购买,购买之后升级到 2.0.0 即可。 部署实例并绑定 VPC 购买完成之后,进行部署,部署时设置 Knative 集群所在的 VPC 即可: 创建 Topic 和 Consumer Group 接下来我们创建 Topic 和消费组。<br />进入【Topic 管理】,点击

Choerodon功能与敏捷术语对应表

旧时模样 提交于 2020-02-28 23:47:35
“它由Product backlog开始,经过sprint会议从Prdouct backlog挑选出一些优先级最高的故事(story)形成迭代的sprint backlog(一个sprint一般为1个月)。在sprint中会进行每日站会,迭代结束时会进行演示和回顾会议。” 了解敏捷的朋友都知道backlog和spring是待办事项和冲刺的意思,但在使用Choerodon实践敏捷开发的时候这些敏捷术语对应的系统功能是哪些呢?为了解决大家在使用Choerodon时的困扰,整理了以下Choerodon功能与敏捷术语的对应表,以便大家进一步了解Choerodon的具体功能。 功能 敏捷术语 说明 问题 史诗(Epic) 非常大型的故事,可以横跨多个迭代周期。史诗故事在战术层面上使用前必须分解为一个个相关的用户故事。 故事(Story) 用户故事是从用户的角度来描述用户渴望得到的功能。一个好的用户故事包括三个要素:1. 角色:谁要使用这个功能。2. 活动:需要完成什么样的功能。3. 商业价值:为什么需要这个功能,这个功能带来什么样的价值。 任务(Task) 是完成需求的过程性的工作。在迭代计划会议中,将纳入迭代的Story指派给具体成员,并分解成一个或多个Task,填写“预计工时”。 子任务 子任务通常是故事的具体拆分,拆分出的子任务将交给具体的开发、业务等人员处理,属于具体的任务交付

国内首个 Kubernetes SIG-Cloud-Provider 子项目揭秘 | 云原生生态周报 Vol. 37

烂漫一生 提交于 2020-02-26 04:57:34
作者 | 高相林、陈俊、陈有坤、敖小剑 业界要闻 国内首个 Kubernetes SIG-Cloud-Provider 子项目揭秘 阿里云作为坚定的云原生计算推动者,贡献了阿里云上运行 Kubernetes 的最佳开源组件,成为 SIG Cloud Provider 子项目的国内首个云厂商。2020 年 2 月 12 日上午 10:00,阿里云 Kubernetes 团队召开了首次线上网络研讨会。 什么技术,让阿里拿下国家技术发明奖? 新年伊始,国家科学技术奖励大会在北京人民大会堂隆重举行。阿里云获得国家技术发明奖、国家科技进步奖两项国家大奖。这是互联网公司首次同时荣获两大国家科技奖,也实现了互联网公司在国家技术发明奖上零的突破。 CNCF 发布 containerd 旅程报告 该报告对 containerd 发展过程进行了总结和分析。 上游重要进展 Kubenetes Build Kubelet without Docker 该 KEP 旨在提出一个方案,使得编译 Kubelet 不再依赖 Docker 相关的代码。 Fix statefulset conversion 修复了 statefulset 相关资源转换中的 bug,该 bug 会导致无法多次 apply 同一个 statefulset。 Add code to fix kubelet/metrics memory

基于 Knative 打造生产级 Serverless 平台 | KubeCon NA2019

匆匆过客 提交于 2020-01-07 00:57:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 本文推荐知道的背景知识: Kubernetes 的基本原理和各大组件的职责; Serverless 计算的基本概念和它的优势; Plus: 对社区 Knative 项目的基本了解; 本文根据董一韬和王轲在 KubeCon NA 2019 大会分享整理。 **董一韬 蚂蚁金服,产品经理,**致力于驱动云计算相关产品,包括云原生 PaaS 平台、容器与 Serverless 产品等,与最终顾客紧密合作,帮助客户在规模化的金融场景下采用与落地云原生相关解决方案。 **王轲 蚂蚁金服,软件工程师,**建设基于 Kubernetes/Knative 的企业级 Serverless 产品,Knative 的早期使用者,Kubernetes 社区成员、控制面流控早期维护者,长期致力于用创新的方式优化、落地云原生技术。 一. 分享概要 Knative 是 Google 主导的基于 Kubernetes 的 Serverless 平台,在社区上有较高的知名度。然而,身为社区项目的 Knative 主要关心的是标准、架构。虽有先进的理念,却离可在生产上使用有不少的差距。 本次 KubeCon 的演讲中,来自蚂蚁金服 SOFAStack-PaaS 平台产品技术团队的隐秀和仲乐与大家分享蚂蚁金服金融科技 Knative 的实践和改造