赞
踩
什么是k8s?
Kubernetes是一个用于容器集群的自动化部署、扩容以及运维的开源平台。
k8s诞生的目的
k8s孕育的初衷是培育出一个组件及工具的生态,帮助大家减轻在公有云及私有云上运行应用的负担,换言之,使得大型分布式应用的构建和运维变得更加简单(当然,越简单的表面意味着越复杂的内部细节)。
整体架构图
组件一览
Node: 硬件节点
Node是k8s中最小的计算硬件单元,它类似于传统集群中单台机器的概念,是对硬件物理资源的一层抽象,它可以是真实机房的物理机器,又或者是云平台上的ECS,甚至可以是边缘计算的一个终端。
无论如何,借助Node的抽象,我们可以把任何一台机器简单的看做是一组CPU和RAM资源的组合,从而达到解耦的效果
Cluster: 集群
对于大型系统,我们往往不会把关注点放在单个机器上,而是聚焦更大粒度的集群。
在k8s中,一般将集群看做一个整体,而不关心内部节点的状态,集群内部状态的调整将由k8s自动完成。
Persistent Volumes: 持久卷
考虑到集群内部的节点始终在发生调度和变动,所以所有节点内部的文件系统都是易失的,无法保证持久,为了解决这一问题,k8s引入了持久卷的概念,用于映射实际的物理储存节点(云盘或者是物理磁盘),它可以随时被挂载到任何的集群上去。
Container: 容器
容器是打包好的运行环境,这点无需再多赘述。值得一提的是k8s中的容器支持不仅仅包含了docker,还支持一些其他的容器标准
Pod
这是k8s区别于其他容器编排平台的一个显著特点:它不直接运行容器,而是运行一种称为Pod的高级结构,里面封装了一系列相关的容器,并共享相同的namespace和网络。
Pod也是k8s进行服务编排和缩扩容的基本单位,这意味着Pod里所有的容器都会被一并缩放(不管是否有必要),因此定制Pod时应该使它的体积尽可能小一些。
另外还有一个和Pod相关的概念,就是副本集(Replica Sets),它是指在扩容时产生的Pod的复制
我们可以把上面几个逻辑概念的关系用下图表示:
Deployment: 部署
deployment是用于管理pod的抽象层,它的定位类似于docker-compose。
k8s一个很巧妙的地方在于它把deployment层设计成“过程无关”的,你只需要声明你所期望的最终状态,k8s将会自动为你调度pod并保证它们满足你的预期。
Ingress: 入口
当我们将整个系统以及其精巧的内部结构搭建起来后,我们仍然需要一个通道,使得它能够真正地与外界沟通,这就是Ingress
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。