k8s中的核心组件
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- Kubelet
- kube-dns
- etcd
部署资源中的一些API对象
- Namespace
- Pod
- Deployment
- DaemonSet
- StatefulSet
- Service
- Ingress
- Job
- CronJob
- PersistentVolume
- PersistentVolumeClaim
- StorageClass
- Secret
- LoadBalancer
- ConfigMap
- 创建自定义资源 CRD(CustomResourceDefinition)
k8s是的架构是由Master 和 Node 两种节点组成,这两种角色分别对应着控制节点和计算节点
- Master(控制节点):由三个紧密协作的独立组件组合而成,整个集群的持久化数据就是由 kube-apiserver 处理后保存在 Etcd 中 负责API服务的 kube-apiserver 负责调度的 kube-scheduler, 负责容器编排的 kube-controller-manager
- Node(计算节点):只有一个最核心的kubelet 的组件 kubelet 主要负责同容器运行时(比如Docker)打交道,而这个交互所依赖的是一个称作 CRI(Container Runtime Interface)的远程调用接口,这个接口定义了容器运行时的各项核心操作,如启动一个容器需要的所有参数。kubelet 的另一个重要功能,则是调用网络插件和存储插件为容器配置网络和持久化存储。这两个插件与 kubelet 进行交互的接口。
K8S 整体上遵循 C/S 架构,可用下面的图来表示其结构:
Master,接收请求、发布对集群整体的调度和管理、存储
Node,接受集群调度,并运行服务
- Container runtime:容器运行时最主要的功能是下载镜像和运行容器
- Kube Proxy:提供一种代理的服务,可以让你可以通过 Service 访问到 Pod
K8s与docker交互的用到的是CRI和OCI
- 容器的运行时分为两种:CRI 运行时、OCI 运行时
- CRI(Container Runtime Interface),是 K8s 定义的一组与容器运行时进行交互的接口,用于将 K8s 平台与特定的容器实现解耦
- OCI(Open Container Initiative),可以看做是「容器运行时」的一个标准,Ta 使用 Linux 内核系统调用(例如:cgroups 与命名空间)生成容器
- CNI(Container Networking Interface)
- CSI(Container Storage Interface)