深入理解 K8S 资源管理和调度 | 青训营笔记

65 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第8天

本节课程主要介绍了容器编排引擎-Kubernetes。

一、Kubernetes 简介

Kubernetes是什么?

Kubernetes一个用于容器集群的自动化部署、扩容以及运维的开源平台。通过Kubernetes,你可以快速有效地响应用户需求;快速而有预期地部署你的应用;极速地扩展你的应用;无缝对接新应用功能;节省资源,优化硬件资源的使用。为容器编排管理提供了完整的开源方案。

容器一般指Docker容器,实现与宿主机解耦。

Kubernetes的功能主要是快速效应需求,部署扩展应用,优化硬件资源使用。

现在Kubernetes着重于不间断的服务状态(比如web服务器或者缓存服务器)和原生云平台应用(Nosql),在不久的将来会支持各种生产云平台中的各种服务,例如,分批,工作流,以及传统数据库。

二、Kubernetes架构

Kubernetes集群包含有节点代理kubelet和Master组件。

360截图20220818203808464.jpg Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。

每个节点上都要运行Docker。Docker来负责所有具体的映像下载和容器运行。

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

  • etcd保存了整个集群的状态;
  • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

三、Kubernetes调度

Kubernetes 调度是将 Pod 分配给集群中匹配节点的过程。Scheduler 监控新创建的 Pod,并为其分配最佳节点。它会根据 Kubernetes 的调度原则和我们的配置选项选择最佳节点。