k8s的整体架构

k8s中的核心组件

  1. kube-apiserver
  2. kube-scheduler
  3. kube-controller-manager
  4. Kubelet
  5. kube-dns
  6. etcd

部署资源中的一些API对象

  1. Namespace
  2. Pod
  3. Deployment
  4. DaemonSet
  5. StatefulSet
  6. Service
  7. Ingress
  8. Job
  9. CronJob
  10. PersistentVolume
  11. PersistentVolumeClaim
  12. StorageClass
  13. Secret
  14. LoadBalancer
  15. ConfigMap
  16. 创建自定义资源 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)

版权

本作品采用 CC BY-NC-ND 4.0 授权,转载必须注明作者和本文链接。