淦 Blog

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

Kubernetes核心数据结构

Group、Version、Resource 核心数据结构 在整个Kubernctes体系架构中,资源是 Kubernetcs最重要的概念。Kubernetes系统虽然有相当复杂和众多功能,但它本质上是一个资源控制系统——注册、管理、调度资源并维护资源的状态。 Kubcrnctes将资源再次分组和版本化,形成 Group(资源组)、Version(资源版本)、Resource(资源)。 ...

Kubernetes监控关键指标

工作负载节点 所有的 Kubernetes 组件,都提供了/metrics接口用来暴露监控数据。 Kube-Proxy Kube-Proxy 监听的端口10249用来暴露监控指标。 通用的 Go 程序相关的指标 通用的Go程序相关的指标 解释 go_gc_duration_seconds GC...

Kubernetes网络基础

网络基础 tun/tap设备 从Linux文件系统的角度看,tun/tap设备是用户可以用文件句柄操作的字符设备;从网络虚拟化角度看,它是虚拟网卡,一端连着网络协议栈,另一端连着用户态程序。tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装。 tun/tap设备可以将TCP/IP协议栈处理好的网络包发送给任何一个使用tun/tap驱动的进程,由进...

Kubernetes网络之DNS

通过域名访问服务 DNS服务基本框架 Kubernetes DNS服务是用来解析Kubernetes集群内的Pod和Service域名的,而且一般情况下只供集群内的容器使用。 当Kubernetes的DNS服务Cluster IP分配后,安装程序会给Kubelet配置–cluster-dns=启动参数,DNS服务的IP地址将在用户容器启动时传递,并写入每个容器的/etc/resolv.co...

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 主要功能是提供存储服务视...