k8s 基础知识001

2021-12-10  本文已影响0人  FMD彩虹

k8s架构:
Kubernetes 主要由以下几个核心组件组成:

image.png

除了核心组件,还有一些推荐的 Add-ons:

核心组件简介
Etcd
Etcd 是 CoreOS 基于 Raft 开发的分布式 key-value 存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)
主要功能:

kube-apiserver
kube-apiserver 是 Kubernetes 最重要的核心组件之一,主要提供以下的功能

kube-scheduler
ube-scheduler 负责分配调度 Pod 到集群内的节点上,它监听 kube-apiserver,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点(更新 Pod 的 NodeName 字段)。
调度器需要充分考虑诸多的因素:

Controller Manager
Controller Manager 由 kube-controller-manager 和 cloud-controller-manager 组成,是 Kubernetes 的大脑,它通过 apiserver 监控整个集群的状态,并确保集群处于预期的工作状态。
在k8s中起到维护集群状态,监控整个集群健康状况(metrice),有故障检测,自动扩展、滚动更新等功能,实现集群的高可用。

image.png

Kubelet
每个Node节点上都运行一个 Kubelet 服务进程,默认监听 10250 端口,接收并执行 Master 发来的指令,管理 Pod 及 Pod 中的容器。每个 Kubelet 进程会在 API Server 上注册所在Node节点的信息,定期向 Master 节点汇报该节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。
在k8s上主要负责节点管理(包括节点的注册、状态更新):

kubelet 工作原理:
如下 kubelet 内部组件结构图所示,Kubelet 由许多内部组件构成

pod管理:
Kubelet 以 PodSpec 的方式工作。PodSpec 是描述一个 Pod 的 YAML 或 JSON 对象。 kubelet 采用一组通过各种机制提供的 PodSpecs(主要通过 apiserver),并确保这些 PodSpecs 中描述的 Pod 正常健康运行。(就是.yml配置文件中的spec)
获取Pod清单:Kubelet 通过 API Server Client(Kubelet 启动时创建)使用 Watch 加 List 的方式监听 "/registry/nodes/$ 当前节点名" 和 “/registry/pods” 目录,将获取的信息同步到本地缓存中。(本质就是watch-listen机制)
创建和修改 Pod 任务,执行流程:

pod启动流程(参考的非官网文档,需要看源码验证)
一般我们在创建pod的过程中都是,执行kubectl命令去apply对应的yaml文件,但是在执行这个操作的过程到pod被完成创建,k8s的组件都做了哪些操作呢?下面我们简要说说pod被创建的过程。

image.png
上一篇 下一篇

猜你喜欢

热点阅读