淦 Blog

我干了什么 究竟拿了时间换了什么

Kubernetes之CNI

CNI是容器网络的标准化,试图通过JSON描述一个容器网络配置。 CNI是Kubernetes与底层网络插件之间的一个抽象层,为Kubernetes屏蔽了底层网络实现的复杂度,同时解耦了Kubernetes的具体网络插件实现。 CNI主要有两类接口:分别是在创建容器时调用的配置网络接口: 1 AddNetwork(net *NetworkConfig,rt* RuntimeConf)(...

Docker容器网络

Linux网络虚拟化 网络虚拟化基石:network namespace network namespace,它在Linux内核2.6版本引入,作用是隔离Linux系统的设备,以及IP地址、端口、路由表、防火墙规则等网络资源。因此,每个网络namespace里都有自己的网络设备(如IP地址、路由表、端口范围、/proc/net目录等)。 veth pair veth是虚拟以太网卡(Virtu...

Golang泛型

概述 泛型编程的核心思想是从具体的、高效的运算中抽象出通用的运算,这些运算可以适用于不同形式的数据,从而能够适用于各种各样的场景。 显然,泛型是高级语言为了让一段代码拥有更强的抽象能力和表现力而设计出来的。 Go为什么需要泛型 Go 作为强类型语言,在没有泛型之前,在许多场景下书写代码都很繁琐。例如,还是刚才要判断两个数的大小这个例子,在 Go 中一般需要调用 math.Min 与 ma...

Kubernetes kube-apiserver

架构设计 kube-apiserver组件负责将kubernetes的“资源组、资源版本、资源”以RESTful风格的形式对外暴露并提供服务,是Kubernetes系统集群中所有组件沟通的桥梁。 kube-apiserver提供了3种HTTP Server 服务,分别是APIExtensionsServer、KubeAPIServer、 AggregatorServer。 AP...

Kubernetes client-go

Client客户端对象 client-go支持4种Client客户端对象与Kubernetes API Server交互的方式。 RESTClient是最基础的客户端。RESTClient对 HTTP Request进行了封装,实现了 RESTful 风格的 API。ClientSet、DynamicClient及DiscoveryClient客户端都是基于RESTClient 实...

Kubernetes CSI

概述 与容器对接的存储接口标准,存储提供方只需基于标准接口进行存储插件的实现,就能使用Kubernetes的原生存储机制为容器提供存储服务了。这套标准被称为CSI(容器存储接口)。 在CSI成为Kubernetes的存储供应标准之后,存储提供方的代码就能与Kubernetes代码彻底解耦,部署也与Kubernetes核心组件分离。 组件 Controller 主要功能是提供存储服务视...

Golang接口

使用方法 声明与定义 接口是Go语言中的特殊类型,其包含两种形式:一种是带方法签名的接口,一种是空接口。带方法签名的接口内部包含其他类型可以实现的方法签名的集合。 1 2 3 4 type InterfaceName interface { funcNameA() funcNameB(a int, b string) error } 1 type InterfaceName inter...

Golang垃圾回收

在计算机科学中,垃圾回收(Garbage Collection,GC)是自动内存管理的一种形式,通常由垃圾收集器收集并适时回收或重用不再被对象占用的内存。垃圾回收作为内存管理的一部分,包含3个重要的功能:分配和管理新对象、识别正在使用的对象、清除不再使用的对象。 5种经典算法 标记-清扫 分为两个主要阶段,第1阶段是扫描并标记当前活着的对象,第2阶段是清扫没有被标记的垃圾对象。因此,标记-...

Golang反射

使用方法 两种基本类型 1 2 func ValueOf(i interface{}) Value func TypeOf(i interface{}) Type 这两个函数的参数都是空接口interface{},内部存储了即将被反射的变量。 可以将reflect.Value看作反射的值,reflect.Type看作反射的实际类型。其中,reflect.Type是一个接口,包含和类型有关的...

Golang内存分配管理

内存分配全局视野 span与元素 Go语言将内存分成了大大小小67个级别的span,其中,0级代表特殊的大对象,其大小是不固定的。当具体的对象需要分配内存时,并不是直接分配span,而是分配不同级别的span中的元素。因此span的级别不是以每个span的大小为依据的,而是以span中元素的大小为依据的。 span等级 元素大小(字节) ...