控制平面 : 管理集群中的工作节点和 Pod
节点 : 一组工作机器,称为节点,每个集群至少有一个节点
pod
:节点会托管pod
,pod
是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合
![[Pasted image 20230514120922.png]]
接下来我们细说一下其中的控制平面中的组件
控制平面组件(Control Plane Components)
控制全局,比如创建pod
,调度资源等等
1. kube-apiserver
公开 Kubernetes API,负责接受请求
2.kube-scheduler
负责调度节点,监视节点
3.etcd
一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。
4.kube-controller-manager
负责管理运行控制器
控制器
- 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应
- 任务控制器(Job Controller):监测代表一次性任务的 Job 对象,然后创建 Pods 来运行这些任务直至完成
- 端点分片控制器(EndpointSlice controller):填充端点分片对象(以提供 Service 和 Pod 之间的链接)。
- 服务账号控制器(ServiceAccount controller):为新的命名空间创建默认的服务账号(ServiceAccount)。
5.cloud-controller-manager
云控制器管理器,将集群连接到云提供商的 API 之上, 并将与该云平台交互的组件同与你的集群交互的组件分离开来。
节点(Node) 组件
节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境
1. kubelet
kubelet会在集群中的每个节点中运行,保证每个容器运行在pod
中, kubelet只会管理由k8s创建的容器
2.kube-proxy(代理)
指集群中每个节点上所运行的代理,维护节点上的网络规则
3. 容器运行时(Container Runtime)
负责运行容器的软件
插件(Addons)
DNS
集群 DNS 是一个 DNS 服务器,和环境中的其他 DNS 服务器一起工作,它为 Kubernetes 服务提供 DNS 记录。
Web 界面## interface 是什么?
interface 是一种抽象类型,它是一组方法的集合,用于描述一个对象或类型的行为
interface 源码
interface 分为两种类型iface
和eface
,iface
表示非空接口,eface
表示空接口,我们先从简单的eface
说起
eface
type eface struct {
_type *_type
data unsafe.Pointer
}
data 指向对象信息的指针而另一个是_type
的指针
_type
type _type struct {
// 类型大小
size uintptr
ptrdata uintptr
// 类型的 hash 值
hash uint32
// 类型的 flag,和反射相关
tflag tflag
// 内存对齐相关
align uint8
fieldalign uint8
// 类型的编号,有bool, slice, struct 等等等等
kind uint8
alg *typeAlg
// gc 相关
gcdata *byte
str nameOff
ptrToThis typeOff
}
包括数据类型大小,内存对齐,hash值,gc相关
iface
与eface不同的是,iface 是非空接口,意味着结构体要包含方法,所以内部是使用了itab封装了type,增加了interfacetype
指针
type iface struct {
tab *itab // 表示类型和接口之间的映射
data unsafe.Pointer // 表示接口的值(实际类型的指针)
}
type itab struct {
inter *interfacetype // 接口类型
_type *_type // 实际类型
link *itab // 链接到其他itab,以支持多重继承
hash uint32 // 用于类型判断的哈希值
bad bool // 实际类型是否实现了接口
inhash bool // 是否已将该itab添加到哈希表中
unused [2]byte
fun [1]uintptr // 存储实际类型方法的指针
}
type interfacetype struct {
typ _type // 接口类型的元数据
pkgpath name // 包路径
mhdr []imethod // 接口方法集合
}
用户可以管理集群中运行的应用程序以及集群本身, 并进行故障排除