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擅长的是按照用户的意愿和整个系统的规则,完全自动化地处理好容器之间的各种关系,这种功能即是:编排