服务网格的诞生 Service Mesh诞生背景 微服务通信基础设施 微服务治理 Service Mesh架构 边车模式(Sidecar Proxy-Based) 网络中心模式(Network-Centric-Based) 主机代理模式(Host Proxy-Based) 联邦集群模式(Multimesh-Based) 边车模式(Sidecar Proxy-Based) 网络中心模式(Network-Cen 2024-02-13 #serviceMesh
再谈源码学习 背景很久之前我写过类似的文章,关于如何去学习源码,但是那边文章已经没了,这里重新总结一些关于如何学习源码的一些方法。 具有相关知识阅读源码之前,需要对这个软件有一定的背景知识,比如说你是一个redis小白,或者没有用过redis,但是有数据结构,操作系统,计算机网络等背景知识,你想要了解Reactor模型,想要了解数据结构实现,想要了解持久化存储,就需要这些背景知识。同时对软件的系统架构,实现原理 2024-02-11 #learn
并发与并行的区别以及实现 背景不管是在面试的时候,还是在写代码的时候,都会提起什么是并行什么是并发,经常出现搞混的情况。甚至出现并发==并行这种尴尬的场景。为了解决这个问题,尝试从不同角度以及代码上来识别什么是并行,什么是并发。 并发并行 2024-02-05
内存泄漏排查工具-memleak memleakmemleak是BCC工具中的内存分析工具,它用来跟踪(trace)内存和释放请求,并且收集进程的调用堆栈,并展示进程中每个函数的调用情况。 实践这里使用《Linux 性能优化实战》中倪朋飞老师的例子来对memleak进行一个简单上手展示: 1$ docker run --name=app -itd feisky/app:mem-leak 这是一个计算斐波那契数列的进程。之后运行起 2024-02-05 #eBPF
SLA与SLO以及SLI之间的关系 背景做了一年的SRE,虽然大部分时间都在做开发,但是其中一些概念还是需要去了解的,这篇文章主要梳理下关于什么是SLA,SLO,SLI概念以及它们之间的关系。 SLA(Service-Level Agreement) 服务等级协议SLA简单来说就是一种保证下限的协议,没有任何一个服务可以保证自己不会出现问题,停机出现故障时必然的,但是在多长时间之内恢复以及相应的赔偿就是SLA需要做的事情了。SLA 2024-01-30 #Observability
从零开始实现一个operator(2)-控制器实现 控制器-Controller在上一篇中,已经介绍如何去实现一个CR,并且也在集群中创建了,但是并没有相关Pod以及资源被创建,是因为Controller没有被实现。这里来讲下如何实现一个Controller。 控制器实现reconciliation loopreconciliation loop也就是概念篇中提到的控制回路,它用来保证期望状态和当前状态一致性的关键机制。以下是它的工作状态: 监视 2024-01-19 #kubernetes
K8S节点NotReady排错思路 背景在K8S中这种问题节点出现问题导致NotReady的情况并不少见,比如资源不足导致节点不可用,这里简单介绍下我遇到的情况以及我是如何解决的。 排查思路我使用的是VMware虚拟化出来的三个节点,一个master两个node,在kubectl get node的时候发现节点不可用: 以往一般会直接去重启对应节点机器,但是集群是重启过的,进一步查看原因,使用kubectl describe no 2024-01-14 #kubernetes
client-go组件使用与原理 背景之前大部分时间都在用client-go进行开发,也用过informer做一些有意思的事情,但是很多细节方面的东西没有注意,这次算是对client-go原理进行一个整理。 架构设计client-go类型client-go支持四种类型客户端对象来和api server进行交互: RESTClient ClientSet DynamicClient DiscoveryClient 其他三种都是基 2024-01-12 #kubernetes
kubernetes架构设计解析 背景之前对kubernetes有过一些简单的了解,但是并没有去深入的去理解每个组件之间是如何工作的,所以正好复习一下。 概要首先看下官方给出来的架构图: 可以看到架构组件分为两类: 控制平面(control plane) 节点(node) 控制平面组件如下: kube-api-server etcd scheduler Controller Manager cloud-controller 2024-01-12 #kubernetes
从零实现一个operator(1)-kubebuilder实现redis operator operator实现步骤正式开始使用kubebuilder来实现operator,关于operator原理可以看之前文章介绍,根据官网教程中的步骤来初始化一个operator项目: 1kubebuilder init --domain my.domain --repo my.domain/guestbook #修改这里的my.domain和my.domain/guestbook 之后kubebu 2024-01-11 #kubernetes