KUBERNETES之核心概念
四、K8s核心概念
1.概念解析
- cluster
超大计算机抽象,由多个节点组成 - container
应用居住和运行在容器当中 - pod
K8s基本调度单位,可以跑一个或多个容器,共享Pod的文件系统和网络,每个Pod共享一个ip
- ReplicaSet
- ReplicationController为RS之前的过时的概念
副本集可以应用是一种基本的发布机制,一个应用发布时会运行多个Pod,实现高可用,RS会监控和维护Pod数量,通过RS可以做出基本的发布与滚动、蓝绿等高级发布机制,但是配置比较繁琐。
- Service
Service屏蔽了应用的IP寻址与负载均衡等细节,消费方可以通过服务名访问目标服务,K8s的底层机制会做寻址和负载均衡,即使Pod的ip发生变化,Service会屏蔽这种变更让消费方无感知
- Deployment
通过RS可以实现基本高级发布,但是过程比较繁琐,使用Deployment通过管理RS,简化了RS的高级发布
例:滚动发布
例:发布和服务
- ConfigMap/Secret
微服务在上线时常常需要设置一些可变配置,这些配置针对不通环境,这些配置有些可能是在启动时一次性配置好的,如连接数据库的字符串,有些是要经常变动的,比如货物的限购数量等等,ConfigMap将配置以环境变量的形式注入Pod中
Secret用于敏感数据配置
- DaemonSet
用来描述每个宿主机上必须且只能运行一个守护进程的Pod,每个worker节点部署一个服务,例如fluned日志采集进程 - StatefulSet
有状态的发布 - Job
用来描述一次性运行的Pod(如大数据任务) - CronJob
描述定时任务 - HPA
水平Pod自动伸缩器
2.对象分类
这种用法,就是所谓的“声明式API”API对象
2.1 编排对象
Kubernetes项目中,首先通过一个"编排对象",比如Pod,Job,CronJob等,来描述你管理的应用
2.2 服务对象
然后,在为它定义一些"服务对象",比如Service,Secret等,这些对象负责具体的功能
这种用法,就是所谓的"声明式API"
3.调度&编排
3.1 调度
过去很多的集群管理项目(比如 Yarn、Mesos,以及 Swarm)所擅长的,都是把一个容器,按照某种规则,放置在某个最佳节点上运行起来。这种功能,我们称为“调度”。
3.2 编排
K8s擅长的是按照用户的意愿和整个系统的规则,完全自动化地处理好容器之间的各种关系,这种功能即是:编排