K8s 基本概念和术语
文章目录基本概念和术语MasterNodePodLabelReplication ControllerReplica SetDeploymentHorizontal Pod AutoscalerStatefulSetServiceJobVolumePersistent VolumeNamespace(命名空间)Annotation(注解)ConfigMap基本概念和术语MasterK8s 里的Ma
文章目录
Master
K8s 里的Master指的是集群控制节点,每个K8s集群都至少有一个Master负责整个集群的管理和控制,
由它接受和执行所有命令.
- Master上运行的以下关键进程
- Kubernetes API Server(kube-apiserver):提供了HttpRest接口的关键服务进程,是所有资源增删改查等操作的唯一入口,也是集群控制的入口进程.
- Kubernetes Controller Manager(kube-controller-manager):K8s里所有资源对象的自动化控制中心.
- Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod调度)的进程.
- etcd服务:K8s里所有资源对象的数据都保存在etcd中.
Node
除了Master,K8s集群中的其他机器被称为Node,是主要的工作负载节点.
- 每个Node上都运行着以下关键进程.
- kubelet:负责Pod对的容器的创建、启停等任务,同时与Master密切协作,实现集群的管理的基本功能.
- kube-proxy:实现Kubernetes Service的通信与负载均衡机制的重要组件.
- Docker Engine:Docker引擎,负载本机的容器创建和管理工作.
Pod
Pod是K8s最重要的基本概念,如图,每个pod都含有一个特殊的被成为“根容器”的Pause容器,每个Pod也包含一个或多个紧密相关用户业务的容器.
- Pause作用
- 用Pause判断整个Pod的存活状态
- Pod里多个业务容器共享Pause容器的IP及挂载的Volume,解决了网络通信问题及文件共享
K8s要求底层网络支持集群内任意两个Pod之间的TCP/IP直接通信,这通常采用虚拟二层网络技术实现.
- Pod类型
- 普通的Pod:数据保存在etcd中,Master可调度
- 静态的Pod:数据存放在某个Node节点上
Label
一个Label是一个key=value的键值对,其中key与value由用户自己指定.
Replication Controller
RC是K8s系统中的核心概念,它定义了一个期望场景,即声明某种Pod的副本数量在任意时刻都符合某个预期值.
- RC的定义
- Pod期待的副本数量
- 用于筛选目标的Pod的Label Selector
- 当Pod的副本数量小于预期数量时,用于创建新Pod的Pod模板
Replica Set
’下一代的RC‘,主要特性
- 通过定义RC实现Pod的创建及副本数量控制
- 通过改变RC里副本数量,实现扩容及缩容
- 通过改变RC模板,实现滚动升级
Deployment
Deployment是K8s在1.2版本引入的新概念,用于更好的解决Pod的编排问题.
它为我们提供了随时知道当前Pod部署的进度
Horizontal Pod Autoscaler
HPA实现自动化、智能化扩容和缩容.
StatefulSet
定义有状态的服务.StatefulSet除了要与PV卷捆绑使用以存储Pod状态数据,还要与Headless Service配合使用。
Service
K8s里的每个Service其实就是我们经常提起的微服务架构中的一个"微服务".Service定义了一个服务的访问入口地址,前端的应用(Pod)
通过这个入口地址访问其背后的一组由Pod副本组成的集群实例,Service与其后端Pod副本之间则是通过Label Selector来实现"无缝对接"的.
而RC的作用实际上是保证Service的服务能力和服务质量始终处于预期的标准.Service一旦创建,K8s就会自动为它分配一个可用的Cluster IP,
而且在Service的整个生命周期内,它的Cluster IP不会发生改变.
- 服务发现机制
- Service都有一个唯一的Cluster IP以及唯一的名字.通过Add-On增值包的方式引入了DNS系统,把服务名作为DNS域名.
- 外部系统访问Service的问题
- NodePort实现需要在每个Node上为需要的外部访问的Service开启一个对应TCP监听端口
- Service类型:ClusterIp、NodePort、LoadBalancer、ExternalName
Job
批处理任务通常并行(或者串行)启动多个计算进程去处理一批工作项,在处理完成后,整个批处理任务结束.
- 特点
- Job所控制的副本是短暂运行的,可以将其视为一组Docker容器,其中每个容器Docker都仅仅只运行一次
- Job所控制的Pod副本的工作模式能够多实例并行计算,
Volume
Volume是Pod中能够被多个容器访问的共享目录.
- K8s提供Volume类型
- emptyDir
- 临时空间,例如用于某些应用程序运行时所需要的临时目录,且无须永久保留
- 长时间任务的中间过程CheckPoint的临时保存目录
- 一个容器需要从另一个容器中获取数据的目录(多容器共享目录)
- hostPath
- 容器用用程序生成的日志文件需要永久保存时,可以使用宿主机的高速文件系统进行存储
- 需要访问宿主机上Docker引擎内部数据结构的容器应用时,可以通过定义hostPath为宿主机/var/lib/docker目录,使容器内部应用可以直接访问Docker的文件系统
- gcePersistentDisk
- awsElasticBlockStore
- NFS
- emptyDir
Persistent Volume
Persistent Volume(简称PV),PV可以理解成K8s集群中的某个网络存储中对应的一块存储.
- 特点
- PV只能是网络存储,不属于任何Node,但可以在每个Node上访问
- PV并不是定义在Pod上的,而是独立于Pod之外定义的
- 目前只有:GCE Persistent Disks、NFS、RBD、iSCSCI、AWS ElasticBlockStore、GlusterFS等
Namespace(命名空间)
Namespace在很多情况下实现多租户的资源隔离.Namespace通过将集群内部的资源对象“分配”到不同的Namespace中,
形成逻辑上分组的不同项目、小组或用户组,便于不同的分组在共享使用整个集群的资源的同时还能被分别管理.
Annotation(注解)
Annotation与Label类似,也使用key/value键值对的形式定义.
Annotation是用户任意定义的"附加"信息,以便于外部工具进行查找.
- 常用方式
- build信息、release信息、Docker镜像信息等,例如时间戳、release id号、PR号、镜像hash值、docker registry地址等
- 日志库、监控库、分析库等资源库的地址信息
- 程序调试工具信息,例如工具名称、版本号等
- 团队的联系信息,例如电话号码、负责人名称、网址等
ConfigMap
为了解决不能在Docker容器启动后在修改容器里的配置文件,然后用新的配置文件重启容器里的用户主进程.
更多推荐
所有评论(0)