自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 容器在分布式集群中应该如何优雅的组合?

最近有幸拜读了Google在 2016年 发表的一篇论文,《Design patterns for container-based distributed systems》,这篇文章中描绘了几种在容器编排系统中使用容器的方式,即如何将不同服务的容器进行有机组合,并使得这些模式成为最佳实践方式,让整个分布式系统更加可靠和可维护,虽然已经过去5年之久,但文章中的思想仍然影响着对容器技术和分布式系统的发展。有兴趣的话欢迎来我的公众号交流:packy的技术杂货铺文章中将设计模式分成了三个大类:用于容器

2021-07-05 15:54:40 188

原创 编写一个自定义K8s Controller

在 K8s 中当我们需要监控某个资源的变化并作一系列操作时,使用 K8s 提供的 controller 机制来实现,同时 K8s 官方提供了一个通用库 client-go,通过它可以很容易实现自定义controller.Client-go & controller 架构在编写controller 之前,我们需要了解 client-go 对资源监控的整个架构和流程,并需要知道我们所需要自定义的是...

2020-03-06 16:14:11 1202

原创 Kubelet 源码分析--启动篇

在Kubernetes集群中,每个Node节点(又称Minion)上都会启动一个Kubelet服务进行。该进程用于处理Master节点下发到本节点的任务,管理Pod及Pod中的容器。每个Kubelet进程会在API Server上注册节点自身信息,定期向Master节点汇报节点资源的使用情况,并通过cAdvise监控容器和节点资源。此源码分析基于 K8s 1.14.6Kubelet 架...

2020-02-12 18:09:44 954

原创 kubelet-源码分析--启动篇

在Kubernetes集群中,每个Node节点(又称Minion)上都会启动一个Kubelet服务进行。该进程用于处理Master节点下发到本节点的任务,管理Pod及Pod中的容器。每个Kubelet进程会在API Server上注册节点自身信息,定期向Master节点汇报节点资源的使用情况,并通过cAdvise监控容器和节点资源。此源码分析基于 K8s 1.14.6Kubelet 架...

2020-02-12 18:01:41 462

原创 K8s、CRI与container

本篇文章梳理一下 K8s 与 CRI(Container Runtime Interface)、contaier 之间的关系。首先,我们需要知道 K8s 大体的工作流程原理。K8s 如何工作在 K8s 中,存在一个控制面板,也就是我们所说的 master node, 上面运行着 apiserver、controllerManager、kubeScheduler、kubedns 等组件。当我们想...

2020-01-15 15:50:01 1559

原创 深入理解container--容器运行时

我们都知道,容器技术其实在很久以前就已经出现,但只是在最近十年由于云计算的发展才逐渐进入大众的视野。对于容器运行时,传统意义上来说就是代表容器从拉取镜像到启动运行再到中止的整个生命周期,较类似于 Java 中的 Java hotspot 运行时。在本文中我会介绍容器运行时相关概念及组件原理,梳理下我们常听到的 OCI、runc、containerd 等名词之间的关系。何为容器运行时容器运行时...

2020-01-10 18:03:16 2108

原创 Linux 中的内存(cache,buffer,)

在Linux系统中,为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。内存查看当我们使用 free -h 命令时,会显示如下的信息 total used free shared buf...

2020-01-06 14:40:33 974

原创 kubemark使用记录

在 K8s 的使用中,我们会遇到这样一个场景,现有集群只有几个节点,但是我想模拟测试大规模集群时,集群的压力性能会表现如何呢?这里就需要用到 kubemark 了。原理kubemark 是 K8s 官方给出的性能测试工具,能够不受任何资源限制,模拟出一个大规模 K8s 集群。其主要架构如图所示:需要一个外部 K8s 集群(external cluster) 以及一个机器节点运行 kubemar...

2020-01-02 09:41:45 2463 3

原创 Golang学习笔记--Channel

如何定义使用定义每个通道都有与之关联的类型。此类型是允许通道传输的数据类型。不允许使用该通道传输其他类型的数据。通道的零值为nil。零通道没有任何用处,因此必须使用类似于 map 和 slice 的make来定义。package mainimport "fmt"func main() { var a chan int // 定义 channel if ...

2019-11-22 15:38:35 329

原创 Golang学习笔记-Goroutines

并发首先 go 是一个实现并发的语言,并非并行并发 vs 并行并行是在同一时间内,可以同时执行多个任务;并发则是在一个时间片内只能执行单一任务,并把一段时间切分为多个时间片,不同时间片执行不同任务,在宏观上看像是在一段时间内同时执行了多个任务。如下图:并行不会总是导致更快的执行时间。这是因为并行运行的组件可能必须相互通信。在组件在多个内核中并行运行的情况下,此通信开销很高。因此,并行程序并不...

2019-11-21 15:47:50 900

原创 golang学习笔记--Interface

什么是 Interface在面向对象的世界中,接口的一般定义是“接口定义对象的行为”,即只定义对象的行为,至于对象如何行动则具体实现在对象中。在 Golang 中,接口是一组方法签名,当一个类型为接口中的所有方法提供定义时,就说实现了该接口。接口指定类型应具有的方法,类型决定如何实现这些方法。接口的定义和实现package mainimport ( "fmt")//i...

2019-11-19 17:09:46 894

原创 istio-生产环境搭建

相关组件整个 istio 环境需要以下组件prometheus -- 用于 K8s 平台和 istio 平台监控jaeger -- 用于服务间的链路追踪elasticsearch -- 用于存储链路追踪的数据,(也可增加部署 fluntd 和 kibana 收集监控 K8s 平台日志)istio -- 平台本体由于需要用于生产环境中,istio 部署包中所集成的 Prometh...

2019-11-13 14:42:16 1937

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除