<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[jimzbq的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jimzbq</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jimzbq]]></copyright><item><title><![CDATA[容器在分布式集群中应该如何优雅的组合？]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/118491839</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/118491839</guid><author>jimzbq</author><pubDate>Mon, 05 Jul 2021 15:54:40 +0800</pubDate><description><![CDATA[最近有幸拜读了Google在 2016年 发表的一篇论文，《Design patterns for container-based distributed systems》，这篇文章中描绘了几种在容器编排系统中使用容器的方式，即如何将不同服务的容器进行有机组合，并使得这些模式成为最佳实践方式，让整个分布式系统更加可靠和可维护，虽然已经过去5年之久，但文章中的思想仍然影响着对容器技术和分布式系统的发展。

有兴趣的话欢迎来我的公众号交流：packy的技术杂货铺


文章中将设计模式分成了三个大类：

用于容器]]></description><category></category></item><item><title><![CDATA[编写一个自定义K8s Controller]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/104698321</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/104698321</guid><author>jimzbq</author><pubDate>Fri, 06 Mar 2020 16:14:11 +0800</pubDate><description><![CDATA[在 K8s 中当我们需要监控某个资源的变化并作一系列操作时，使用 K8s 提供的 controller 机制来实现，同时 K8s 官方提供了一个通用库 client-go，通过它可以很容易实现自定义controller.
Client-go & controller 架构
在编写controller 之前，我们需要了解 client-go 对资源监控的整个架构和流程，并需要知道我们所需要自定义的是...]]></description><category></category></item><item><title><![CDATA[Kubelet 源码分析--启动篇]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/104282857</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/104282857</guid><author>jimzbq</author><pubDate>Wed, 12 Feb 2020 18:09:44 +0800</pubDate><description><![CDATA[在Kubernetes集群中，每个Node节点（又称Minion）上都会启动一个Kubelet服务进行。该进程用于处理Master节点下发到本节点的任务，管理Pod及Pod中的容器。每个Kubelet进程会在API Server上注册节点自身信息，定期向Master节点汇报节点资源的使用情况，并通过cAdvise监控容器和节点资源。

此源码分析基于 K8s 1.14.6



Kubelet 架...]]></description><category></category></item><item><title><![CDATA[kubelet-源码分析--启动篇]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/104282753</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/104282753</guid><author>jimzbq</author><pubDate>Wed, 12 Feb 2020 18:01:41 +0800</pubDate><description><![CDATA[在Kubernetes集群中，每个Node节点（又称Minion）上都会启动一个Kubelet服务进行。该进程用于处理Master节点下发到本节点的任务，管理Pod及Pod中的容器。每个Kubelet进程会在API Server上注册节点自身信息，定期向Master节点汇报节点资源的使用情况，并通过cAdvise监控容器和节点资源。

此源码分析基于 K8s 1.14.6



Kubelet 架...]]></description><category></category></item><item><title><![CDATA[K8s、CRI与container]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103990779</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103990779</guid><author>jimzbq</author><pubDate>Wed, 15 Jan 2020 15:50:01 +0800</pubDate><description><![CDATA[本篇文章梳理一下 K8s 与 CRI（Container Runtime Interface）、contaier 之间的关系。首先，我们需要知道 K8s 大体的工作流程原理。
K8s 如何工作
在 K8s 中，存在一个控制面板，也就是我们所说的 master node， 上面运行着 apiserver、controllerManager、kubeScheduler、kubedns 等组件。当我们想...]]></description><category></category></item><item><title><![CDATA[深入理解container--容器运行时]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103928798</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103928798</guid><author>jimzbq</author><pubDate>Fri, 10 Jan 2020 18:03:16 +0800</pubDate><description><![CDATA[我们都知道，容器技术其实在很久以前就已经出现，但只是在最近十年由于云计算的发展才逐渐进入大众的视野。对于容器运行时，传统意义上来说就是代表容器从拉取镜像到启动运行再到中止的整个生命周期，较类似于 Java 中的 Java hotspot 运行时。在本文中我会介绍容器运行时相关概念及组件原理，梳理下我们常听到的 OCI、runc、containerd 等名词之间的关系。

何为容器运行时
容器运行时...]]></description><category></category></item><item><title><![CDATA[Linux 中的内存（cache，buffer，）]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103857260</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103857260</guid><author>jimzbq</author><pubDate>Mon, 06 Jan 2020 14:40:33 +0800</pubDate><description><![CDATA[在Linux系统中，为了提高文件系统性能，内核利用一部分物理内存分配出缓冲区，用于缓存系统操作和数据文件，当内核收到读写的请求时，内核先去缓存区找是否有请求的数据，有就直接返回，如果没有则通过驱动程序直接操作磁盘。
内存查看
当我们使用 free -h 命令时，会显示如下的信息
              total        used        free      shared  buf...]]></description><category></category></item><item><title><![CDATA[kubemark使用记录]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103799196</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103799196</guid><author>jimzbq</author><pubDate>Thu, 02 Jan 2020 09:41:45 +0800</pubDate><description><![CDATA[在 K8s 的使用中，我们会遇到这样一个场景，现有集群只有几个节点，但是我想模拟测试大规模集群时，集群的压力性能会表现如何呢？这里就需要用到 kubemark 了。
原理
kubemark 是 K8s 官方给出的性能测试工具，能够不受任何资源限制，模拟出一个大规模 K8s 集群。其主要架构如图所示:需要一个外部 K8s 集群（external cluster） 以及一个机器节点运行 kubemar...]]></description><category></category></item><item><title><![CDATA[Golang学习笔记--Channel]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103201884</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103201884</guid><author>jimzbq</author><pubDate>Fri, 22 Nov 2019 15:38:35 +0800</pubDate><description><![CDATA[如何定义使用
定义
每个通道都有与之关联的类型。此类型是允许通道传输的数据类型。不允许使用该通道传输其他类型的数据。
通道的零值为nil。零通道没有任何用处，因此必须使用类似于 map 和 slice 的make来定义。
package main

import "fmt"

func main() {  
    var a chan int      // 定义 channel
    if ...]]></description><category></category></item><item><title><![CDATA[Golang学习笔记-Goroutines]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103183969</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103183969</guid><author>jimzbq</author><pubDate>Thu, 21 Nov 2019 15:47:50 +0800</pubDate><description><![CDATA[并发
首先 go 是一个实现并发的语言，并非并行
并发 vs 并行
并行是在同一时间内，可以同时执行多个任务；并发则是在一个时间片内只能执行单一任务，并把一段时间切分为多个时间片，不同时间片执行不同任务，在宏观上看像是在一段时间内同时执行了多个任务。如下图：并行不会总是导致更快的执行时间。这是因为并行运行的组件可能必须相互通信。在组件在多个内核中并行运行的情况下，此通信开销很高。因此，并行程序并不...]]></description><category></category></item><item><title><![CDATA[golang学习笔记--Interface]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103146820</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103146820</guid><author>jimzbq</author><pubDate>Tue, 19 Nov 2019 17:09:46 +0800</pubDate><description><![CDATA[什么是 Interface
在面向对象的世界中，接口的一般定义是“接口定义对象的行为”，即只定义对象的行为，至于对象如何行动则具体实现在对象中。
在 Golang 中，接口是一组方法签名，当一个类型为接口中的所有方法提供定义时，就说实现了该接口。接口指定类型应具有的方法，类型决定如何实现这些方法。
接口的定义和实现
package main

import (  
    "fmt"
)

//i...]]></description><category></category></item><item><title><![CDATA[istio-生产环境搭建]]></title><link>https://blog.youkuaiyun.com/jimzbq/article/details/103048973</link><guid>https://blog.youkuaiyun.com/jimzbq/article/details/103048973</guid><author>jimzbq</author><pubDate>Wed, 13 Nov 2019 14:42:16 +0800</pubDate><description><![CDATA[相关组件
整个 istio 环境需要以下组件

prometheus -- 用于 K8s 平台和 istio 平台监控
jaeger -- 用于服务间的链路追踪
elasticsearch -- 用于存储链路追踪的数据，（也可增加部署 fluntd 和 kibana 收集监控 K8s 平台日志）
istio -- 平台本体



由于需要用于生产环境中，istio 部署包中所集成的 Prometh...]]></description><category></category></item></channel></rss>