Newgoo

Life And Code Are Long Journey

kubernetes中Pod设计模式

进程组 我们都知道容器的概念: 容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。 那么如果我们需要多个进程组成一个共享资源、文件的进程组又该怎么去处理呢? 这也就是Pod出现的原因,Pod是由一组容器组成一个容器组; 那么如果我们在容器里面启动多个进程又会出现什么问题呢? 要讨论出现什么问题,就先将它们放在一起看看会遇到什么问题; 比如我们一个服务存在多个进程......

kubelet 源码分析

pod创建流程 kubelet 工作内容 监视分配给该Node节点的pods 挂载pod所需要的volumes 下载pod的secret 通过docker/rkt来运行pod中的容器 周期的执行pod中为容器定义的liveness探针 上报pod的状态给系统的其他组件 上报Node的状态 基础架构 10250 kubelet API –kublet暴露出来的端口,通过该端口可以访......

k8s-informer 机制

首先上一张官方架构图 简介 Informer 是 Client-go 中的一个核心工具包。在 Kubernetes 源码中,如果 Kubernetes 的某个组件,需要 List/Get Kubernetes 中的 Object,在绝大多 数情况下,会直接使用 Informer 实例中的 Lister()方法(该方法包含 了 Get 和 List 方法),而很少直接请求 Kubernet......

Golang sync 包解析

包的用途 主要用于在并发中(同步机制,原子操作和对象池) 原子操作 atomic.Value 使用的是汇编语言编写,在sync/atomic包中, 在sync.atomic包中,有两个函数,Value.Store()和Value.Load()用于对内存中的数据进行原子的读和写,sync中的很多操作都是采用这样的方式对数据的于原子操作 Map 并发Map(1.9更新) 123456type ......

Golang sort 包源码分析

1. 排序 Sort() sort包提供了一个这样的interface,只要实现这个接口就能对包中Sort()函数的的调用 12345type Interface interface { Len() int //切片的长度 Less(i, j int) bool //比较大小的规则 Swap(i, j int) //交换规则} 在进行排序的过程中,会自动选择排序方式(快......

Golang 基本类型存储方式

结构体 结构体数据的对象是连续内存 字符串存储方式 1.字符串两个字节,一个是内容的指针,一个字符串的长度 2.字符串在切割时没有改变内容,仅仅改变了内容的指针和子串的长度 切片 1.包含三个部分(内容指针,长度,容量) 2.切割内容时和string切割相同,都是新建一个数据结构 3.扩容: * 1.如果新的大小是当前大小2倍以上,则大小增长为新大小 * 2.否则循环以下操作......

Golang 命名规范

命名原则 惯性:同一个意义在不同地方,环境应该有同样的命名 短小: 不能太过长,不然读者只关注名字,而非逻辑(ps:申明位置和使用位置越远,命名应当越长) 精确: 易读,易理解 命名方式 采用驼峰命名方式(ps:ServiceName),不要使用service_name 缩写要全大写(ServerHTTP) 局部变量 局部变量尽量短小,i代替index; 如果函数过长,则需要对代码进行......

Redis设计

前言 redis采用key-value的形式对数据进行存储; redis总共分为五种存储模式,(string、hash、list、set、sort set)和一种对key的操作 那么这是一种非关系型数据库,通过这五种存储模式可以实现将非关系数据库设计成关系数据库 1 五种存储模式对应的存储内容; string:用于存储普通数据,int,string等等类型的基本类型数据 hash:通......

Json 文件转换 Golang对象

json 文件 server.json 1234{ "ip": "", "port": "5001"} Go文件获取函数 main.go 123456789101112131415161718192021222324252627type Config struct { Ip string `json:"ip"` Port string `json:"p......

Redis命令管理

strings 关键字 用处 eg set 设置值 set key value get 获取值 get key setnx key不存在是在设置值 setnx key getset 设置并返回旧值 getset key setex 设置key并指定生存时间 setex key seconds value psetex 设置key值并指定生存时间(毫秒) ps......