【云原生】K8S 相关知识点整理 -- 综述

【1】Kubernetes (K8S) 架构

K8S 的物理架构是 master/node 模式,K8S 集群至少需要一个主节点 (Master) 和多个工作节点 (Worker)

  • Master 节点是集群的控制节点,负责整个集群的管理和控制,主要用于暴露 API、调度部署和对节点进行管理;
  • Worker 节点主要用于运行容器;

单 Master 节点架构图示

k8s多master集群架构图 k8s集群最少几个节点_云原生

 多 Master 节点架构图示

k8s多master集群架构图 k8s集群最少几个节点_Server_02

在多 Master 节点的架构中,使用 keeplive 与 nginx 对多个 master 节点进行负载均衡管理,以实现多个 Master 节点的高可用;

【2】Kubernetes (K8S) 组件

Master 节点

  • kubectl,管理 K8S 的命令行工具,可以操作 K8S 中的资源对象
  • etcd,高可用的键值数据库,存储 K8S 的资源状态信息和网络信息,etcd 中的数据变更通过 api server 进行
  • apiserver,提供 K8S api,整个系统的对外接口,提供资源操作的唯一入口,供客户端和其它组件调用,提供了 K8S 各类资源对象 (pod, deployment, Service 等) 的增删改查等功能,是整个系统的数据总线和数据中心,并提供认证、授权、访问控制、API 注册和发现等机制,并将操作对象持久化到 etcd 中
  • scheduler,负责 K8S 集群中 pod 的调度,scheduler 通过与 apiserver 交互监听到创建 Pod 副本的信息后,会检索所有符合该 Pod 要求的工作节点列表,开始执行 Pod 调度逻辑,调度成功后将 Pod 绑定到目标节点上,相当于 “调度室”
  • Controller-Manager,作为集群内部的管理控制中心,负责集群内的 Node、Pod 副本、服务端点 (Endpoint)、命名空间 (Namespace)、服务账号 (ServiceAccount)、资源定额 (ResourceQuota) 的管理,当某个 Node 意外宕机时,Controller Manager 会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态

Worker 节点

  • kubelet,每个 Node 节点上的 kubelet 会定期调用 API Server 的 REST 接口报告自身状态,API Server 接收这些信息后,将节点状态信息更新到 etcd 中;kubelet 通过 API Server 监听 Pod 信息,从而对 Node 机器上的 Pod 进行管理,如创建、删除、更新 Pod 等操作
  • kube-proxy,提供网络代理和负载均衡,是实现 service 的通信与负载均衡机制的重要组件,kube-proxy 负责为 Pod 创建代理服务,从 apiserver 获取所有 service 信息,并根据 service 信息创建代理服务,实现 service 到 Pod 的请求路由和转发,从而实现 K8S 层级的虚拟转发网络,将到 service 的请求转发到后端的 pod 上
  • Coredns,是一个 DNS 服务,可以为集群提供服务发现的功能
  • Calico,一套开源的网络和网络安全方案,用于容器、虚拟机、宿主机之前的网络连接
  • Docker,容器应用引擎,负责启动容器,在 k8s1.20 版本之后建议废弃 docker,使用 container 作为容器应用引擎

【3】K8S 核心资源简介

【3.1】K8S 核心资源简介 -- Pod

参见博客,【云原生】K8S 相关知识点整理 -- Pod

【3.2】K8S 核心资源简介 -- 控制器

参见博客,【云原生】K8S 相关知识点整理 -- 控制器

【3.3】K8S 核心资源简介 -- 服务 (Service)

参见博客,【云原生】K8S 相关知识点整理 -- Service

【3.4】K8S 核心资源简介 -- 持久化存储

参见博客,【云原生】K8S 相关知识点整理 -- 持久化存储

【3.5】K8S 核心资源简介 -- 配置管理中心

参见博客,【云原生】K8S 相关知识点整理 -- 配置管理中心

参考与致谢
本博客为博主学习笔记,同时参考了网上众博主的博文以及相关专业书籍,在此表示感谢,本文若存在不足之处,请批评指正。