1. C/S架构

Kubernetes 遵循非常传统的客户端服务端架构,客户端通过 RESTful 接口或者直接使用 kubectl 与 Kubernetes 集群进行通信,这两者在实际上并没有太多的区别,后者也只是对 Kubernetes 提供的 RESTful API 进行封装并提供出来。

左侧是一个官方提供的名为 kubectl 的 CLI (Command Line Interface)工具,用于使用 K8S 开放的 API 来管理集群和操作对象等。
右侧则是 K8S 集群的后端服务及开放出的 API 等。

2. 集群架构

每一个 Kubernetes 集群都由一组 Master 节点和一系列的 Worker 节点组成,其中 Master 节点主要负责存储集群的状态并为 Kubernetes 对象分配和调度资源。

2.1 Master


Master 是整个 K8S 集群的“大脑”,与大脑类似,它有几个重要的功能:

  • 接收:外部的请求和集群内部的通知反馈
  • 发布:对集群整体的调度和管理
  • 存储:存储

它主要包含以下几个重要的组成部分。

2.1.1 Cluster state store

存储集群所有需持久化的状态,并且提供 watch 的功能支持,可以快速的通知各组件的变更等操作。

因为目前 Kubernetes 的存储层选择是 etcd ,所以一般情况下,大家都直接以 etcd 来代表集群状态存储服务。即:将所有状态存储到 etcd 实例中。

2.1.2 API Server

其中 API Server 负责处理来自用户的请求,其主要作用就是对外提供 RESTful 的接口,包括用于查看集群状态的读请求以及改变集群状态的写请求,也是唯一一个与 etcd 集群通信的组件

2.1.3 Controller Manager

而 Controller 管理器运行了一系列的控制器进程,这些进程会按照用户的期望状态在后台不断地调节整个集群中的对象,当服务的状态发生了改变,控制器就会发现这个改变并且开始向目标状态迁移

2.1.4 Scheduler

最后的 Scheduler 调度器其实为 Kubernetes 中运行的 Pod 选择部署的 Worker 节点,它会根据用户的需要选择最能满足请求的节点来运行 Pod,它会在每次需要调度 Pod 时执行

2.2 Node


简单来说就是加入集群中的机器。那 Node 是如何加入集群接受调度,并运行服务的呢?这都要归功于运行在 Node 上的几个核心组件。

2.2.1 Kubelet

kubelet 是一个节点上的主要服务,它周期性地从 API Server 接受新的或者修改的 Pod 规范并且保证节点上的 Pod 和其中容器的正常运行,还会保证节点会向目标状态迁移,该节点仍然会向 Master 节点发送宿主机的健康状况。

2.2.2 Container runtime

容器运行时最主要的功能是下载镜像和运行容器,我们最常见的实现可能是 Docker , 目前还有其他的一些实现,比如 rkt, cri-o。

K8S 提供了一套通用的容器运行时接口 CRI (Container Runtime Interface), 凡是符合这套标准的容器运行时实现,均可在 K8S 上使用。

2.2.3 Kube Proxy

另一个运行在各个节点上的代理服务 kube-proxy 负责宿主机的子网管理,同时也能将服务暴露给外部,其原理就是在多个隔离的网络中把请求转发给正确的 Pod 或者容器。

3. 重要概念

3.1 对象

Kubernetes 对象是系统中的持久实体,它使用这些对象来表示集群中的状态,这些对象能够描述:哪些应用应该运行在集群中,它们请求的资源下限和上限以及重启、升级和容错的策略。每一个创建的对象其实都是我们对集群状态的改变,这些对象描述的其实就是集群的期望状态,Kubernetes 会根据我们指定的期望状态不断检查对当前的集群状态进行迁移。

3.2 Pod

Pod 是 Kubernetes 中最基本的概念,它也是 Kubernetes 对象模型中我们可以创建或者部署的最小并且最简单的单元。


它将应用的容器、存储资源以及独立的网络 IP 地址等资源打包到了一起,表示一个最小的部署单元,但是每一个 Pod 中的运行的容器可能不止一个,这是因为 Pod 最开始设计时就能够在多个进程之间进行协调,构建一个高内聚的服务单元,这些容器能够共享存储和网络,非常方便地进行通信。

3.3 控制器

最后要介绍的就是 Kubernetes 中的控制器,它们其实是用于创建和管理 Pod 的实例,能够在集群的层级提供复制、发布以及健康检查的功能,这些控制器其实都运行在 Kubernetes 集群的主节点上。

参考资料

《Kubernetes 从上手到实践》

Kubernetes 入门(2)基本组件相关推荐

  1. Kubernetes入门——Kubernetes日志采集与监控告警

    作者简介: 郭川磊 百度基础架构部研发工程师 负责云原生产品的研发 本文基于百度云原生团队『云原生基础知识概述及实践』系列视频课程--『Kubernetes入门-Kubernetes实现应用高可用』梳 ...

  2. Kubernetes入门——Kubernetes工作原理及使用

    作者简介: 星龙 百度基础架构部研发工程师 负责混部调度系统研发 本文基于百度云原生团队『云原生基础知识概述及实践』系列视频课程--『Kubernetes入门-Kubernetes工作原理』梳理. 视 ...

  3. Kubernetes入门——深入浅出讲Docker

    作者简介: 李子昂 百度基础架构部研发工程师 负责百度分布式Redis平台的研发和运维 专注于基础架构中间件的研发和优化 本文基于『云原生基础知识概述及实践』系列视频课程--『Kubernetes入门 ...

  4. Kubernetes入门——Kubernetes应用部署

    郭良帅 百度基础架构部资深工程师 负责云原生产品研发 本文基于百度云原生团队『云原生基础知识概述及实践』系列视频课程--『Kubernetes入门-Kubernetes应用部署』梳理. 视频课程可点击 ...

  5. Kubernetes入门培训(内含PPT)-(转)

    Kubernetes入门培训(内含PPT) https://mp.weixin.qq.com/s/T6vzHupm1oqcznrCd13xDg 原创 半夏透心凉 云原生技术爱好者社区 2月2日 来自专 ...

  6. kubernetes 入门实践-搭建集群

    ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ(一个人的真正伟大之处就在于他能够认识到自己的渺小 -- 保罗) ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤㅤㅤ 上一篇:kubernetes 入门实践-核心概念 下 ...

  7. kubernetes入门实战

    kubernetes入门实战 文章目录 kubernetes入门实战 一. Namespace 二. Pod 三. Label 四. Deployment 一. Namespace Namespace ...

  8. kubernetes 入门介绍

    这里写目录标题 1. kubernetes 入门介绍 1.1. 发展历程 1.2. 竞争对手 1.3. k8s 概述 1.4. k8s 功能 1.4.1. 自动装箱 1.4.2. 自我修复 (自愈能力 ...

  9. Kubernetes入门指南-基础篇

    Kubernetes入门指南-基础篇 基础入门 kubernetes简介 kubernetes是一个平台 kubernetes架构 kubernetes不是什么 核心组件 kubernetes基本概念 ...

  10. Kubernetes入门教程 --- 使用二进制安装

    Kubernetes入门教程 --- 使用二进制安装 1. Introduction 1.1 架构图 1.2 关键字介绍 1.3 简述 2. 使用Kubeadm Install 2.1 申请三个虚拟环 ...

最新文章

  1. 如何导出android studio程序,Android Studio 如何导出 Jar 给 Unity 使用
  2. IBM db2安装好了以后,启动不了服务
  3. 卧底各大程序员圈,才知道什么才是牛逼的程序员!
  4. 知识图谱实践篇(二):关系数据库到RDF
  5. 3_4 IteratorMode 迭代器模式
  6. 20175204 张湲祯 2018-2019-2《Java程序设计》第三周学习总结
  7. mysql 1143_ERROR 1143 (42000): SELECT command denied to user
  8. java resouce_Java 获取Resource目录下的文件解决办法
  9. java 7 collection 详解(一)
  10. Golang语言 零基础入门教程
  11. Python Google关键词搜索 Google人机验证
  12. 软件测试常用的测试方法有哪些?
  13. 来自H3C的降维打击:H3C BX54鲸路由评测体验
  14. python透视表画图_透视表、交叉表、matplotlib作图
  15. 睡眠有助于巩固复杂问题解决技能的记忆痕迹
  16. A16.从零开始前后端react+flask - 将前端数据保存到数据库
  17. Flutter学习之入门和体验
  18. python中的mat的操作
  19. 从现在开始,和copy正则say拜拜!
  20. tcl43f3390-3d安卓(android)软件,TCL L43F3390A-3D通过U盘安装沙发管家教程

热门文章

  1. 【C++ Primer | 13】课后习题答案
  2. 疯狂涨知识!Java多态实现原理技术总监都拍手叫好
  3. 交大c语言第一次作业答案,第一次作业答案(供参考)
  4. 决策树——ID3和C4.5
  5. css知识笔记(二)——盒子模型
  6. 如何测试数据库表空间不足场景
  7. Discuz!NT数据库读写分离方案
  8. TensorFlow自带例子
  9. sockets C#
  10. 快速入门Pytorch(1)--安装、张量以及梯度