kaniko

Knative入门系列6:Knative的使用

笑着哭i 提交于 2021-02-08 05:15:31
作者:Brian McClain & Bryan Friedman 译者:殷龙飞 审校:孙海洲、邱世达、王刚、宋净超 Knative 是一个基于 Kubernetes 的,用于构建、部署和管理现代 serverless 应用的平台。Getting Started with Knative 是一本由 Pivotal 公司赞助 O’Reilly 出品的电子书,公众号后台回复“ knative ”获取英文版下载地址。本书中文版由 ServiceMesher 社区自发翻译系列文章,这是该系列的第6章。 通过前面的章节已经扎实掌握 Knative 的组件了,现在是时候开始研究一些更高级的主题了。Serving 为如何路由流量提供了相当大的灵活性,还有其他的构建模板使构建应用程序变得容易。只需几行代码即可轻松制作我们自己的事件源。在本章中,我们将深入研究这些功能,让我们的代码在 Knative 上更容易地运行。 创建和运行 Knative Services 第 2 章 介绍了 Knative Service 的概念。 回想一下,Knative 中的 Service 是单个配置和路由集合的组合。在 Knative 和 Kubernetes 体系内,它最终是 Pod 中的 0 个或多个容器以及其他使您的应用程序可寻址的组件。所有这些都由具有强大流量策略选项的路由层支持。

Docker不再是唯一的选择

泪湿孤枕 提交于 2020-11-20 08:35:35
Docker并不是唯一的容器化工具,可能还有更好的选择…… 在容器的早期时代(其实更像是4年前),Docker是容器游戏中唯一的玩家。但现在情况已经不一样了,Docker不再是唯一的一个,而只是其中一个容器引擎而已。Docker允许我们构建、运行、拉、推或检查容器镜像,然而对于每一项任务,都有其他的替代工具,甚至可能比Docker做得还要好。所以,让我们探索一下,然后再卸载(只是可能),直至完全忘记Docker…… 那,为什么不再用Docker了? 如果你已经使用Docker很长时间了,估计要真正说服你去考虑其他工具,得先提供些依据。 首先,Docker是一个单体工具。它尝试去涵盖所有的功能,通常这并不是最佳实践。大多数情况下,我们都是只选择一种专门的工具,它只做一件事,并且做得非常好,非常精。 如果害怕切换到不同的工具集是因为将不得不学习使用不同的CLI、API或者说不同的概念,那么这不会是一个问题。本文中展示的任何工具都可以是完全无缝的,因为它们(包括Docker)都遵循OCI (Open Container Initiative)下的相同规范。它们包含了容器运行时、容器分发和容器镜像的规范,其中涵盖了使用容器所需的所有特性。 有了OCI,你可以选择一套最符合你需求的工具,同时你仍然可以享受跟Docker一样使用相同的API和CLI命令。 所以,如果你愿意尝试新的工具

Knative详解

感情迁移 提交于 2020-08-05 02:43:50
serverless 无服务器架构(serverless),则表示代码可以只在需要时运行,在不需要时就停止,从而让你的基础设施能在其他方面自由使用计算资源。 Kaniko Kaniko 是 Google 造的轮子之一,用于在 Kubernetes 上无需特权的构建 docker image,在 github(https://github.com/GoogleContainerTools/kaniko) 中,是这样介绍的。 工作原理 传统的 Docker build 是 Docker daemon 根据 Dockerfile,使用特权用户(root)在宿主机依次执行,并生成镜像的每一层: 而 Kaniko 工作原理和此类似,也是按顺序执行每条命令,每条命令执行完毕后为文件系统做快照(snapshot)。并与上一个快照进行对比,如果发现任何不一致,变回创建一个新的层级,并将任何修改都写入镜像的元数据中。 参考:https://blog.ihypo.net/15487483292659.html 什么是 Knative Knative 的目标是在基于 Kubernetes 之上为整个开发生命周期提供帮助。它的具体实现方式是:首先使你作为开发人员能够以你想要的语言和以你想要的方式来编写代码,其次帮助你构建和打包应用程序,最后帮助你运行和伸缩应用程序。 Knative 主要由 Build

利用Makisu构建容器镜像

一世执手 提交于 2020-07-28 03:55:05
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 本系列文章深入研究了容器镜像构建的最新技术。我们已经介绍了Podman和Buildah、Img、Kaniko,而这次轮到Makisu了。 Makisu是另一个开源镜像构建工具,由Uber的工程团队构思而成。像许多其他开源项目一样,Makisu也是基于其他类似技术的不足而开发的。 Makisu尤其专注于优化镜像构建时间和大小。 使用Makisu 类似Kaniko,Makisu不会调用容器并依据Dockerfile指令在容器中构建镜像。它既可以作为独立的二进制文件在本地运行,也可以作为沙箱运行在容器内。但是,由于它无法执行RUN Dockerfile指令,因此它作为独立二进制文件的用途受到限制。当然,你也不希望Makisu通过RUN指令更改主机的本地文件系统内容! 实际上Makisu不允许更改本地文件;你需要指定标志--modifyfs = true,以允许使用命令对文件系统进行更改。但请注意,如果使用--modifyfs = true运行独立的Makisu二进制文件,最终将删除主机的许多rootfs。 Makisu被设计为在容器中运行,在容器中更改文件系统内容是安全的。 实际上用于执行构建的Makisu本身的容器镜像很少。它是基于基本图像指令(scratch base image

无需特权在Kubernetes中构建镜像之 Kaniko

女生的网名这么多〃 提交于 2020-02-27 12:26:09
Kaniko 简介 Kaniko 是 Google 造的轮子之一,用于在 Kubernetes 上无需 特权模式 构建 docker image 。 Kaniko 不依赖 Docker daemon 守护程序,而是完全在 userspace 中执行 Dockerfile 中的每个命令。这使您可以在 没有特权模式 或没有运行 Docker daemon 的环境(例如:Kubernetes集群)中构建容器镜像。 Kaniko 工作原理 传统的 Docker build 是 Docker daemon 根据 Dockerfile,使用特权用户(root)在宿主机依次执行,并生成镜像的每一层。 而 Kaniko 工作原理和此类似, Kaniko 执行器获取并展开基础镜像(在Dockerfile中FROM一行定义),按顺序执行每条命令,每条命令执行完毕后为文件系统做快照。快照是在用户空间创建,并与内存中存在的上一个状态进行对比,任何改变都会作为对基础镜像的修改,并以新层级对文件系统进行增加扩充,并将任何修改都写入镜像的元数据中。当Dockerfile中每条命令都执行完毕后,执行器将新生成的镜像推送到镜像仓库中。 Kaniko 解压文件系统,执行命令,在执行器镜像的用户空间中对文件系统做快照,这都是为什么Kaniko不需要特权访问的原因,以上操作中没有引入任何 Docker daemon

从 Jenkins 到 Jenkins X

房东的猫 提交于 2019-11-30 23:26:35
本文首发于: Jenkins 中文社区 这是一个关于 dailymotion 从 Jenkins 到 Jenkins X 的旅程,我们遇到的问题,以及我们是如何解决它们的故事。 我们的上下文 在 dailymotion ,我们坚信 devops 最佳实践,并且在 Kubernetes 投入了大量投资。 我们的部分产品已经部署在 Kubernetes 上,但并不是全部。 因此,当迁移我们的广告技术平台的时候,我们想要完全采用“ Kubernetes 式”——或者云原生,以追随技术趋势! 这意味着要重新定义整个 CI/CD 流水线,从静态/永久环境迁移,转向动态按需分配环境。 我们的目标是 授权给我们的开发人员 , 缩短我们的上线时间 以及 降低我们的运营成本 。 对于新的 CI/CD 平台我们的初始需求是: 尽可能避免从零开始 :我们的开发人员已经习惯使用 Jenkins 和声明式流水线,并且它们可以很好地满足我们当前的需求。 以公有云基础设施为目标 ——Google 云平台和 Kubernetes 集群 与 gitops 方法论兼容 ——因为我们喜欢版本控制、同行评审和自动化 在 CI/CD 生态系统中有相当多的参与者,但是只有一个符合我们的需求,Jenkins X ,它基于 Jenkins 和 Kubernetes ,原生支持预览环境和 gitops Kubernetes 之上的

从 Jenkins 迁移到 Jenkins X:一场持续交付之旅

三世轮回 提交于 2019-11-26 13:59:11
背景 在 dailymotion,我们信奉 DevOps 最佳实践,并且重度使用了 Kubernetes。我们的部分产品(并非全部)已经部署在 Kubernetes 上。在迁移我们的广告技术平台时,为了赶时髦(作者你这么直白的吗?)我们希望完全采用“Kubernetes 方式”或云原生!这意味着我们需要重新定义我们的整个 CI/CD 管道,并使用按需分配的动态环境来替代永久性的静态环境。我们的目标是为我们的开发人员提供最好的支持、缩短产品上市时间并降低运营成本。 我们对新 CI/CD 平台的初始要求是: 如果可能的话,尽量避免从头开始:我们的开发人员已经习惯使用 Jenkins 和声明性管道,目前这些东西都还好。 采用公有云基础设施——谷歌云平台和 Kubernetes 集群。 与 gitops 兼容——因为我们需要版本控制、评审和自动化。 CI/CD 生态系统中有不解决方案,但只有一个符合我们的要求,也就是 Jenkins X,它基于 Jenkins 和 Kubernetes,原生支持预览环境和 gitops。 Jenkins X: Kubernetes 上的 Jenkins Jenkins X 是一个高度集成化的 CI/CD 平台,基于 Jenkins 和 Kubernetes 实现,旨在解决微服务体系架构下的云原生应用的持续交付的问题,简化整个云原生应用的开发、运行和部署过程