k8s介绍
Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,
为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,
提高了大规模容器集群管理的便捷性。
Kubernetes优势:
– 容器编排
– 轻量级
– 开源
– 弹性伸缩
– 负载均衡
- 管理副本数量
- 服务发现
...
...
...
一、cluster(集群)、master(主节点)、node(从节点)
cluster(集群)是 计算、存储和网络资源的集合,k8s利用这些资源运行各种基于容器的应用
master和node都是一个节点通常分别代表一台服务器节点。
master表示集群主节点(高可用集群环境下通常会搭建多台master节点),主要负责管理和保存元数据信息。
node又可称为worker(从节点),类似于工作执行者。
二、pod
pod是k8s的最小工作单元。每个pod包含一个或者多个容器。pod中的容器会作为一个整体被master调度到一个node上运行。
类似于docker中的从container。
三、controller
k8s通常不会直接创建pod,而是通过controller来管理pod的。
controller中定义了pod的部署特性,比如有几个副本,在什么样的node上运行、运行时候的环境信息等。
为了满足不同的业务场景,k8s提供了多种controller,包括deployment、replicaset、daemonset、statefulset、job等。
四、deployment(通常采用)、replicaset、daemonset、statefulset、job
# deployment
是最常用的controller。deployment可以管理pod的多个副本,并确保pod按照期望的状态运行。
# replicaset
实现了pod的多副本管理。使用deployment时会自动创建replicaset,
也就是说deployment是通过replicaset来管理pod的多个副本的,我们通常不需要直接使用replicaset。
# daemonset
用于每个node最多只运行一个pod副本的场景。正如其名称所示的,daemonset通常用于运行daemon。
# statefuleset
能够保证pod的每个副本在整个生命周期中名称是不变的,而其他controller不提供这个功能。
当某个pod发生故障需要删除并重新启动时,pod的名称会发生变化,
同时statefulset会保证副本按照固定的顺序启动、更新或者删除。
# job
用于运行结束就删除的应用,而其他controller中的pod通常是长期持续运行的。
五、service(服务)
理解一:
deployment可以部署多个副本,每个pod 都有自己的IP,外界如何访问这些副本那?
答案是service
k8s的 service定义了外界访问一组特定pod的方式。service有自己的IP和端口,service为pod提供了负载均衡。
k8s运行容器pod与访问容器这两项任务分别由controller和service执行。
理解二:
当访问量很多的时候,如果只有一个Pod可能不够用,利用k8s可以很方便地扩展出几个甚至几十个Pod。
当Pod很多的时候,就需要一个提供负载均衡的地方,能够把用户的请求发送到这些Pod。Service便可以实现这个功能。
Service能够根据标签找到所有相关的Pod,并把这些Pod的IP收集记录下来,当有请求发送到Service时,
Service会再把请求负载均衡到各个Pod。
六、namespace(命名空间)
可以将一个物理的cluster逻辑上划分成多个虚拟cluster,每个cluster就是一个namespace。
不同的namespace里的资源是完全隔离的。
七、Volume(卷)
每个Pod被k8s调度,当其中一个因为故障重启,里面的文件也会随之”蒸发“掉,这时候就需要把其中的文件给持久化到某个地方。
在k8s中就是通过Volume挂载持久盘到Pod中的。
篇01:kubernetes常用命令记录——<01>
篇02:kubernetes集群安装过程记录——<02>
kubernetes官方文档
参考文章: https://jingwei.link/2018/08/04/k8s-foundation-concepts.html
参考文章:https://www.jianshu.com/p/2ec64951d3ba