-
Kubernetes的主要功能
Kubernetes是一个自动化的容器编排平台,负责应用的部署、应用的弹性以及应用的管理,这些都是基于容器的。
核心功能:
-
服务的发现与负载的均衡
-
容器的自动装箱,也叫作scheduling,就是“调度”,把一个容器放到某个集群中的某台机器上,Kubernetes会帮助我们去做存储的编排,让存储的生命周期与容器的生命周期有一个连接
-
容器的自动恢复。对不可用的容器进行恢复
-
应用的自动发布与应用的自动回滚,以及应用相关的配置密文的管理
-
对于job类型的任务,Kubernetes可以做批量执行
-
Kubernetes支持水平伸缩,Kubernetes会监测业务上所承担的负载,如果某个业务的CPU利用率过高或者响应时间过长,可以对这个业务进行一次扩容
-
-
Kubernetes的架构
Kubernetes架构是一个典型的二层架构和server-client架构。Master作为中央的管控节点,会与node进行连接。
所有UI、Clients等用户组件只会和Master连接,把希望的状态或者想执行的命令告诉Master,再由Master下发给相应的node节点,再进行最终的执行。
Kubernetes架构的Master:
包括四个主要组件:API Server、Controller、Schedule、etcd
**API Server:**处理API操作,Kubernetes中的所有组件都会与API Server进行连接,组件与组件之间一般不进行独立的连接, 都依赖于API Server进行消息的传送
**Controller:**控制器,用来完成对集群状态的一些管理。例如Kubernetes的自动恢复和水平伸缩
**Schedule:**调度器,完成调度的操作
**etcd:**分布式存储系统
Kubernetes架构的Node:
Node是真正运行业务负载的,每个业务负载会以Pod的形式运行
一个Pod运行一个或多个容器,真正运行pod的是Node最关键的组件kuberlet,它通过API Server接收到所需要的Pod运行的状 态,然后提交到Container Runtime
Kubernetes不会直接进行网络的存储操作,用户或者云厂商需要写相应的Storage Plugin或者Network Plugin去完成存储操作或网络操作
用户可以通过 UI 或者 CLI 提交一个 Pod 给 Kubernetes 进行部署,这个 Pod 请求首先会通过 CLI 或者 UI 提交给 Kubernetes API Server,下一步 API Server 会把这个信息写入到它的存储系统 etcd,之后 Scheduler 会通过 API Server 的 watch 或者叫做 notification 机制得到这个信息:有一个 Pod 需要被调度。
这个时候 Scheduler 会根据它的内存状态进行一次调度决策,在完成这次调度之后,它会向 API Server report 说:“OK!这个 Pod 需要被调度到某一个节点上。”
这个时候 API Server 接收到这次操作之后,会把这次的结果再次写到 etcd 中,然后 API Server 会通知相应的节点进行这次 Pod 真正的执行启动。相应节点的 kubelet 会得到这个通知,kubelet 就会去调 Container runtime 来真正去启动配置这个容器和这个容器的运行环境,去调度 Storage Plugin 来去配置存储,network Plugin 去配置网络。
-
Kubernetes的核心概念与它的API
-
第一个概念:Pod
Pod是KUbernetes中一个最小调度以及资源单元
由一个或多个容器组成
定义容器运行的方式(Command、环境变量)
提供给容器共享的运行环境(网络、进程空间)
-
第二个概念:Volume
用来管理Kubernetes存储,声明在Pod的容器中可访问的文件目录
可以被挂载在Pod中一个或多个容器的指定路径下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08HXa5Fz-1632980684098)(C:\Users\zz\AppData\Roaming\Typora\typora-user-images\image-20210930111701426.png)]
支持多种后端存储的,如本地存储、分布式存储、云存储
-
第三个概念:Deployment
定义一组 Pod 的副本数目、以及这个 Pod 的版本。一般用 Deployment 这个抽象来做应用的真正的管理,而 Pod 是组成 Deployment 最小的单元。
通过控制器维持Pod的数目,自动恢复失败的Pod
通过控制器以指定的策略控制版本,滚动升级、重新生成、回滚
-
第四个概念:Service
提供访问一个或多个Pod实例的稳定访问地址
支持多种访问方式实现:ClusterIP、NodePort、LoadBanlancer
-
第五个概念:Namespace
Namespace用来做一个集群内部的逻辑隔离,包括鉴权、资源管理
同一个Namespace下的资源需要命名的唯一性,不同Namespace下的资源可以重名
-
Kubernetes的API
Kubernetes的API是由HTTP+JSON组成的:用户访问的方式是HTTP,访问的API中的内容是JSON格式的
API-Label:一组Key:Value,可以被selector查询,资源集合的默认表达方式
通过 label,kubernetes 的 API 层就可以对这些资源进行一个筛选,那这些筛选也是 kubernetes 对资源的集合所表达默认的一种方式。
-
Kubernetes的核心概念
最新推荐文章于 2022-11-04 10:20:43 发布