Knative 多容器支持介绍

简介: 微服务和容器化带来了将应用程序分解成可重复使用的小型单元的诉求,这些单元通常作为单独的进程运行,或者在单独的容器运行。 Kubernetes的Pod模型允许用户创建一个部署单元,该单元可以打包多个容器作为应用程序的单个实例。 Knative 用户当前同样存在将多个容器部署到一个Pod中对诉求。支持多个容器的能力将有利于把更广泛的工作负载部署到Knative Serving模型中。因此 Knative 从 0.16.0 版本开始提供多个容器的能力。

导读

微服务和容器化带来了将应用程序分解成可重复使用的小型单元的诉求,这些单元通常作为单独的进程运行,或者在单独的容器运行。 Kubernetes的Pod模型允许用户创建一个部署单元,该单元可以打包多个容器作为应用程序的单个实例。

Knative 用户当前同样存在将多个容器部署到一个Pod中对诉求。支持多个容器的能力将有利于把更广泛的工作负载部署到Knative Serving模型中。因此 Knative 从 0.16.0 版本开始提供多个容器的能力。

多容器支持

单容器介绍

Knative 0.16.0之前的版本,仅支持设置一个业务容器,也就是在Knative Service中只能设置一个容器。在服务创建的过程中,会默认在POD中加上一个 QUEUE 容器,该容器主要用户接管入口流量,用于基于流量的KPA指标收集。典型的一个Knative Service 如下:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:name: helloworld-go
spec:template:spec:containers:- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73fbdd56env:- name: TARGETvalue: "Knative"

创建完成运行中POD示意图如下:

 

如果我们想要加上一个自定义的SideCar容器(一般用于网络互通,文件下载拷贝等辅助功能),是没有办法去支持的,也就限制了实际的使用场景。

多容器介绍

Knative 从 0.16.0 版本开始也支持了多容器(没什么好说的,k8s pod天然的特性必须要支持)

 

那么如何使用多容器呢?很简单,其实就是在containers属性中配置多个即可,示例如下:

apiVersion: serving.knative.dev/v1
kind: Service
metadata:name: multi-containernamespace: default
spec:template:spec:containers:- image: docker.io/savita3020/servingcontainerports:- containerPort: 8881- image: docker.io/savita3020/sidecarcontainer

开启多容器特性

  • 阿里云 Knative v0.18.3 已经默认开启。
  • 社区 Knative 0.16.0 默认未开启, 从0.17.0 开始默认开启,执行下面操作可查看是否开启:
 $ kubectl -n knative-serving get configmap config-features -oyaml......multi-container: "enabled"......

多容器实践

前提条件

  • 创建Kubernetes托管版集群
  • 一键部署Knative

 

创建服务

接下来我们创建多容器的一个服务,该服务包括两个容器:

  • servingcontainer 容器
  • sidecarcontainer 容器

servingcontainer调用sidecarcontainer, 示例代码如下:

package main   
import ("fmt""io/ioutil""log""net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {log.Println("serving container received a request.")res, err := http.Get("http://127.0.0.1:8882")if err != nil {log.Fatal(err)}resp, err := ioutil.ReadAll(res.Body)if err != nil {log.Fatal(err)}fmt.Fprintln(w, string(resp))
}
func main() {log.Print("serving container started...")http.HandleFunc("/", handler)log.Fatal(http.ListenAndServe(":8881", nil))
}

sidecarcontainer 容器用于打印信息“Yay!! multi-container works”,示例代码如下:

package main
import ("fmt""log""net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {log.Println("sidecar container received a request.")fmt.Fprintln(w, "Yay!! multi-container works")
}
func main() {log.Print("sidecar container started...")http.HandleFunc("/", handler)log.Fatal(http.ListenAndServe(":8882", nil))
}

我们创建multi-container的服务

apiVersion: serving.knative.dev/v1
kind: Service
metadata:name: multi-containernamespace: default
spec:template:spec:containers:- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/servingcontainer:v1ports:- containerPort: 8881- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/sidecarcontainer:v1

执行部署命令:

kubectl apply -f multi-container.yaml

查看pod信息,发现一个 3 个容器(queue容器、servingcontainer 容器、sidecarcontainer 容器):

richard@B-N3TEMD6P-1650 multi-container % kubectl get po
NAME                                                READY   STATUS    RESTARTS   AGE
multi-container-dfqtv-deployment-799c4f694c-bkc8t   3/3     Running   0          9s

访问服务:

richard@B-N3TEMD6P-1650 multi-container % curl -H "host: multi-container.default.example.com" http://182.92.208.172
Yay!! multi-container works

我们可以看到多容器访问已经生效。

总结

本文介绍了从 Knative  0.16.0 版本支持的多容器特性,以及如何在Knative Service 中使用多个容器,有兴趣的同学可以体验一下。

原文链接

本文为阿里云原创内容,未经允许不得转载。

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

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

相关文章

GitHub Action + ACK:云原生 DevOps 落地利

简介: 据信通院《中国 DevOps 现状调查报告(2020年)》显示,63% 的企业已经实践落地 DevOps,采用持续交付流水线打通开发、测试、部署和运维多个环节。但是依然有 20% 的企业反馈实践 DevOps 复杂,自建 Jenk…

win7硬盘安装工具_如何重装电脑安装Win7 系统?最简单,最便捷的办法,值得收藏...

没有U盘、没有光盘怎么安装Win7系统?最简单、最方便的就是用硬盘安装了。在保证能进入系统的前提下,本地硬盘安装Win7系统,能够让你快速体验新的Win7系统。一、安装前准备保证能够正常进入系统;下载Win7系统:64位&…

java static 一般用在什么地方

Java中的static关键字有很多用途,主要用于创建和引用静态成员,例如变量、方法、内部类等。以下是static关键字的一些常见用途: 静态变量:静态变量也称为类变量,属于类本身,而不是类的实例。所有的实例共享…

网络架构优化--云企业网典型场景分析for客户

简介: 网络架构优化--云企业网典型场景分析for客户1. 背景描述 客户从传统的高速通道迁移到云企业网,加入云企业网的VPC,VBR默认全通,但是实际业务场景需要更严格的策略做选择性放通。此外,由于测试账号没有实际专线和…

Fortinet再获Gartner 2021广域网边缘基础设施魔力象限领导者

在2021年度《Gartner广域网边缘基础设施魔力象限报告》中,Fortinet(纳斯达克股票代码:FTNT)凭借最高的执行力获得领导者地位。 Fortinet的安全SD-WAN 连续第二年获得Gartner认可, Fortinet 认为对安全SD-WAN 的持续创新以及丰富的…

java static 块 时机_java的static块执行时机

之前一直认为static块是在class load的时候执行,今天在验证Spring初始化Context loader的时候,发现bean的static块并没有执行。Class A{static{System.out.println("static block invoked!")}}那么static块到底在什么时候运行的呢?…

五个问题,三大策略,手把手教你定制App性能监控方案

作者:友盟U-APM团队 Why? 为什么要做应用性能监控? 首先,我们要知道应用性能监控具体指什么?以及目的: 监控是一套完整的“监视报警”的系统。对于像我们这样的App开发者来说,应用性能监控是衡量App的第…

c++ 打印条码_金蝶盘点机PDA仓库条码管理之——外购入库扫码开单操作

优势点:收到供应商送货后,仓管员手持盘点机PDA现场将需要入库的商品按顺序扫描一遍,即可自动生成电脑软件金蝶里的【外购入库单】,避免仓管员往返电脑费时费事,和人工手工电脑录单效率低容易出错的问题,从而…

我在架构设计和代码开发中的一些常用原则

简介: 在日常的开发和设计过程中,大家对技术设计上的一些问题往往会面临很多的选择,不同的人会有不同的选择。本文介绍的就是我在工作中遇到的一些问题而总结和使用到的一些常用原则。 不管我一生中取得了多大的成功,其主要原因都…

坚持自主创新,凌波微步完成数千万A轮融资,加速半导体产业

随着5G、互联网、大数据、人工智能以及汽车电子等新技术、新产品的广泛应用,半导体产业已成为国民经济的基础性支撑产业。它是支撑经济社会发展,保障国家安全的战略性、基础性和先导性产业,其发展程度是衡量一个国家科技发展水平的核心指标之…

0x30 java_终于找到了!有了它你就可以读懂字节码了!

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼0x80 ior 将栈顶两int型数值作“按位或”并将结果压入栈顶0x81 lor 将栈顶两long型数值作“按位或”并将结果压入栈顶0x82 ixor 将栈顶两int型数值作“按位异或”并将结果压入栈顶0x83 lxor 将栈顶两long型数值作“按位异或”并将结…

当程序员具备了抽象思维

简介: 若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽。 作者:张建飞 若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽…

平板电脑连接投影仪_交互式触控幼教白板如何与平板进行连接-微幼科技

现代智慧教学中离不开智能产品的辅助,电脑、平板就是其中之一。然而这两种电子产品的显示屏尺寸太小,并不能用于多人教学中。而55寸甚至上百寸幼教白板的出现,则可以解决多人互动教学的问题。那么,交互式触控幼教白板如何与平板进…

搭载了HarmonyOS 2的华为nova9,有哪些眼前一亮的功能?

9月23日,华为正式发布了nova9系列手机。作为年轻人的鸿蒙影像旗舰,nova9系列搭载了面向万物互联时代的HarmonyOS 2,沿袭nova品牌的年轻潮美基因,聚焦年轻人群的影像社交需求,在外观、影像、快充等多方面带来了创新突破…

谈AK管理之进阶篇 - 如何有效控制云上[最后一把密钥]的风险?

简介: 上一期“谈AK管理之基础篇”,我们讲了如何规范的进行访问密钥生命周期管理。通过分出不同权限的阿里云RAM子账号,将不同的权限分给不同的用户,这样一旦子账号泄露也不会造成全局的信息泄露。但是,由于子账号在一…

java log 对性能影响_Java日志框架性能比较

1 Java日志框架性能比较前面几章,笔者分别介绍了log4j,logback,log4j2三大日志实现框架。接下来,就用具体的数据比较下,哪个日志框架的性能更好!单线程:外循环100次,内循环100000次;多线程&…

备案域名绑定服务器后 提示需要备案_小程序开发需要多少钱?

现在越来越多的企业想通过微信小程序来宣传产品,为什么小程序那么火爆呢?奥晶科技为您解答,其优点不言而喻:1. 小程序建设的成本比APP建设成本低;2. 小程序能紧跟市场发展潮流,随时更新功能;3. …

Nacos配置安全最佳实践

简介: 本文讨论了自建Nacos和阿里云MSE的配置安全原理。并提出配置安全最佳实践。 作者:鲁严波 前言 配置管理作为软件开发中重要的一环,肩负着连接代码和环境的职责,能很好的分离开发人员和维护人员的关注点。 Nacos的配置管理…

云原生之上,亚马逊云科技发布多项容器与Serverless服务,持续发力现代化应用

亚马逊云科技持续发力现代化应用领域,在中国区域新推多项容器与Serverless服务及功能 在中国区域推出Amazon ECS Anywhere、Amazon Lambda容器镜像功能以及Amazon EMR on EKS等 2021年至今已发布近50个现代化应用领域全新服务与功能 编辑 | 宋 慧 出品 | CSDN云计…

2B 领域下低代码的探索之路

简介: 低代码将成为B端服务领域的基础设施,必将颠覆传统开发方式,未来可期。 作者:天晟 前言 大家好,我是钉钉宜搭前端一个小团队的负责人天晟,在阿里做了五年的低代码。今天的分享我们不讲技术细节&…