4 天前 / u539609
Version k8s 版本v1.18.3 CNICNI 严格来说不是 kubelet 的一部分,而是容器网络的标准,整个 kubelet 中涉及到 CNI 的部分主要在 dockershim 中 ( 然而 dockershim 也要被废弃了)。但是 CNI 对于理解 pod 的生命周期仍然是至关重要的,因此本次分析还是聊一聊 CNI 简介 CNI(Container Network Interface)定义了容器和网络的关系,提供了一套为容器设置网络的插件机制。 CNI 插件实际上是一个二进制可执行文件,通过环境变量和 stdin 获取参数。
6 天前 / u539609
Version k8s 版本v1.18.3 CRICRI 是 Kubernetes 为了将容器运行时抽离出来而定义的接口。一开始 Kubernetes 是不支持 CRI 的,而是抽象了 dockershim,直接对接了 docker。然而随着容器运行时的增加 ( 主要是当时的 rkt),频繁修改 Kubernetes 主线代码过于麻烦,因此抽象了 CRI 去对接所有的容器运行时。 kubelet 通过 gRPC 和实现了 CRI 的进程交互,以达到解耦合的目的。 CRI 中的 gRPC 服务定义了以下几个 interface ( 一) RuntimeService,容器运行时相关的操作 RuntimeVersioner,获取版本相关信息 ContainerManager...
6 天前 / kafeidou
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 作者:FogDong(才云) 编辑:Bach(才云) K8sMeetup 什么是流水线? 在计算机中,流水线是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术,也叫 Pipeline。由于这种 s 工作方式与工厂中的生产流水线十分相似, 因此也被称为流水线技术。从本质上讲,流水线技术是一种时间并行技术。
9 天前 / Geekwolf
01 理论概要 我们知道 Kubernetes 提供 CRD 机制用以扩展资源,在某些场景下我们可以利用 CRD 扩展通过 Kubernetes 存储资源,也就是把 Kubernetes 当作存储来使用。按照官方的说法 CRD + Controller = Operator,kubebuilder可以生成这样的代码框架,并且可自定义选择是否生成 Controller。client 相关代码则可以通过code-generator生成,生成 informer、lister、clientset 等系列代码。通过这种方式,我们只需要在生成的代码中填充业务代码,而无需关心框架之外的代码,这样可以极大的提升开发效率和降低 CRD 的上手门槛。
10 天前 / u539609
前面的章节中我们介绍了在 Kubernetes 中的持久化存储的使用,了解了 PV、PVC 以及 StorageClass 的使用方法,从本地存储到 Ceph 共享存储都有学习,到这里我们其实已经可以完成应用各种场景的数据持久化了,但是难免在实际的使用过程中会遇到各种各样的问题,要解决这些问题最好的方式就是来了解下 Kubernetes 中存储的实现原理。 Kubernetes 默认情况下就提供了主流的存储卷接入方案,我们可以执行命令 kubectl explain pod.spec.volumes 查看到支持的各种存储卷,另外也提供了插件机制,允许其他类型的存储服务接入到 Kubernetes 系统中来...
13 天前 / fredal
随着云原生化流行的大趋势,我们的基础组件也需要逐渐上 Kubernetes 了。Apache Zookeeper 作为目前最流行的分布式协调组件,在我们的微服务架构中负责扮演注册中心的角色。在 Kubernetes 中运行 Zookeeper 集群是很有意义的,可以利用其原生的弹性扩缩容、高可用特性。 使用 StatefulSet 部署 Zookeeper 官方提供了使用 statefulSet 的方式来部署 Zookeeper 运行 Zookeeper,它会创建一个 headless service,一个 cluster service,一个 podDisruptionBudget,一个 statefulSet。
16 天前 / KevinYan
前言今天推荐一篇关于 Kubernetes 上服务滚动更新相关的配置选项的文章,文章列出了最常用的几个配置项,解释了他们是怎么影响调度器对服务进行滚动更新的,同时还带出了 Kubernetes 项目中 Pod 这个逻辑单元的 Ready 状态是怎么确定的,并不是容器运行起来后 Pod 就进入 Ready 状态的。总之个人觉得是篇非常好的普及 Kubernetes 基础的文章,文章由本人完全手工翻译,尽量做到通顺易懂,英文好的同学可以直接看原文。 原文标题:Kubernetes Deployments 滚动更新配置 / Kubernetes Deployments Rolling Update Configration. 发布时间:February 26, 2020...
24 天前 / u539609
KEDA 是 Kubernetes 基于事件驱动的自动伸缩工具,通过 KEDA 我们可以根据需要处理的事件数量来驱动 Kubernetes 中任何容器的扩展。KEDA 可以直接部署到任何 Kubernetes 集群中和标准的组件一起工作。 在 Kubernetes 中 KEDA 有两个关键的角色: 扩展客户端:用于激活和停用 Deployments 来扩展到配置的副本,并在没有事件的情况下将副本缩减回零。Metrics Server:一种 Metrics 指标服务,暴露了大量与事件相关的数据,例如队列长度,允许基于事件的扩展,消耗特定类型的事件数据。Metrics Server 与 HPA 进行通信,以驱动 Kubernetes 部署副本的扩展。
31 天前 / K8sMeetup
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Tekton。 作者:FogDong(Tekton 社区) 编辑:Bach(才云) K8sMeetup 什么是流水线? 在计算机中,流水线是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术,也叫 Pipeline。由于这种 s 工作方式与工厂中的生产流水线十分相似, 因此也被称为流水线技术。从本质上讲,流水线技术是一种时间并行技术。
32 天前 / K8sMeetup
本文从 Pod 和节点的配置开始,介绍了 Kubernetes Scheduler 框架、扩展点、API 以及可能发生的与资源相关的瓶颈,并展示了性能调整设置,涵盖了 Kubernetes 中调度的大多方面。 作者:Ron Sobol 翻译:Bach(才云) 校对:星空下的文仔(才云)、bot(才云) Kubernetes Scheduler 是 Kubernetes 控制平面的核心组件之一。它在控制平面上运行,将 Pod 分配给节点,同时平衡节点之间的资源利用率。将 Pod 分配给新节点后,在该节点上运行的 kubelet 会在 Kubernetes API 中检索 Pod 定义,根据节点上的 Pod 规范创建资源和容器。
44 天前 / OPPO互联网技术
本文来自 OPPO 云平台团队高级工程师徐工,他自 2014 年开始从事容器化相关工作,目前负责 OPPO 云平台的编排与调度方向的工作,主要关注技术领域为超大规模的集群管理与调度,混合云平台建设与融合计算。 伴随着 kubernetes 1.20 中对于 docker 的弃用,关于 docker 的灭亡与 kubernetes 的兴起的话题再度热了起来。讨论中关于 docker 灭亡的观点我不敢苟同。docker 还远未到达灭亡的程度。相较而言,我觉得更恰当的说法应该是 docker 的衰落。本文我也就我个人的角度,聊聊我所经历的 docker 的衰落与 kubernetes 的兴起。
44 天前 / kafeidou
12 月 19 日,KubeSphere 开源社区联合 CNCF 将在北京举办一场年度的云原生 Meetup,聚焦用户落地实践的干货分享,以及现场动手实践的 Workshop 和闪电演讲,现场有来自 AWS、中通、微众银行的多位重量级讲师进行分享,欢迎大家点击文末的「阅读原文」或扫描二维码免费报名 Meetup! Docker 真的要被 Kubernetes 社区剔除了吗? 最近,Kubernetes 在 1.20 版本中 的 ChangeLog 提到将在未来的版本中废弃 Docker 作为容器运行时,这个事情在全球都闹得沸沸扬扬。
45 天前 / 成富
在前一篇文章中介绍了 Kubernetes 上的包管理工具 Helm。Helm Chart 以模板的形式来生成 Kubernetes 上的资源定义,允许对应用的安装进行灵活的定制。Helm 也提供了对安装到 Kubernetes 上的 release 的管理。不过,Helm Chart 的开发相对复杂,需要了解模板的语法。本文中要介绍的kustomize则提供了另外一种安装应用的方案。 什么是 kustomizekustomize 的名称来源于英文单词 customize ,也就是自定义,只不过把 c 换成了表示 Kubernetes 的 k。
47 天前 / KevinYan
前言作为一个后端工程师,因为负责的大部分项目都是 Web 服务这类的“无状态应用”,在平时工作中接触到的最常用的 Kubernetes 控制器是 Deployment,但是 Deployment 只适合于编排“无状态应用”,它会假设一个应用的所有 Pod 是完全一样的,互相之间也没有顺序依赖,也无所谓运行在哪台宿主机上。正因为每个 Pod 都一样,在需要的时候可以水平扩 / 缩,增加和删除 Pod。 但是并不是所有应用都是无状态的,尤其是每个实例之间有主从关系的应用和数据存储类应用,针对这类应用使用 Deployment 控制器无法实现正确调度...
49 天前 / openio
对于开发人员不用过度惊慌,Docker 容器和映像仍然存在。不是说世界末日来了,实际上它不会改变一切。 但是值得一读背后的原因: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/ https://kubernetes.io/blog/2020/12/02/dockershim-faq/ 对于 K8s 管理员仔细阅读并开始考虑 Docker 替代方案 是标题党吗不,这是真的发生了。Docker 现在在 Kubernetes 中已弃用。 参考 https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation kubelet 中的 Docker 支持现已弃用...