书籍豆瓣链接:《Kubernetes in Action中文版》
中文官方文档:《Kubernetes文档》
开始学习时间:
预计完成时间:
实际完成时间:
相关资料
使用 ConfigMaps、Secrets 和 Downward API 配置应用
《Kubernetes in action 读书笔记》:运维架构演进
《Kubernetes in action 读书笔记》:容器技术的发展
《Kubernetes in action 读书笔记》:Kurbernetes 架构设计
《Kubernetes in action 读书笔记》:Kurbernetes 横空出世
概念
概述
Kubernetes是什么
技术演变
早期,各机构是在物理服务器上运行应用程序。由于无法限制在物理服务器中运行的应用程序资源使用,因此会导致资源分配问题。
虚拟化技术允许你在单个物理服务器的 CPU 上运行多台虚拟机(VM),每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统(OS)
容器类似于 VM但是更宽松的隔离特性,使容器之间可以共享操作系统(OS),每个容器都具有自己的文件系统、CPU、内存、进程空间等
Kubernetes组件
一个 Kubernetes 集群是由一组被称作节点(node)的机器组成, 这些节点上会运行由 Kubernetes 所管理的容器化应用
工作节点会托管所谓的 Pods,而 Pod 就是作为应用负载的组件。 控制平面管理集群中的工作节点和 Pods
控制平面组件
控制平面组件会为集群做出全局决策,比如资源的调度。 通常会在同一个计算机上启动所有控制平面组件, 并且不会在此计算机上运行用户容器
- kube-apiserver
控制平面的前端,设计上考虑了水平扩缩,可以运行多个实例,并在这些实例之间平衡流量
- etcd
是兼顾一致性与高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库 etcd官方文档-原理学习
- kube-scheduler
监视新创建的、未指定运行节点(node)的 Pods, 并选择节点来让 Pod 在上面运行
- kube-controller-manager
负责运行控制器进程,这些控制器包括:
1 | 节点控制器(Node Controller):负责在节点出现故障时进行通知和响应 |
- cloud-controller-manager
1 | 看不懂 |
Node组件
节点组件会在每个节点上运行,负责维护运行的 Pod 并提供 Kubernetes 运行环境
- kubelet
kubelet 会在集群中每个节点(node)上运行。 它保证容器(containers)都运行在 Pod 中
- kube-proxy
kube-proxy 是集群中每个节点(node)所上运行的网络代理, 实现 Kubernetes 服务(Service) 概念的一部分
- Container Runtime
容器运行环境是负责运行容器的软件,Kubernetes 支持许多容器运行环境,例如 Docker
Kubernetes API
使用 Kubernetes 对象
Kubernetes架构
节点
通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载
节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。
管理
节点与控制面通信
节点到控制面
控制器
控制器模式
- 通过API服务控制:Job 是一种 Kubernetes 资源,Job 控制器是通知 API 服务器来创建或者移除 Pod
- 直接控制:例如,如果你使用一个控制回路来保证集群中有足够的 节点,那么控制器就需要当前集群外的 一些服务在需要时创建新节点。和外部状态交互的控制器从 API 服务器获取到它想要的状态,然后直接和外部系统进行通信 并使当前状态更接近期望状态。