要想深入理解Kubernetes的特性和工作机制,就必须掌握Kubertenes模型中的核心概念;
    首先是集群组件,从架构上看,Kubernetes集群也采用了典型的”主-从”架构(管理组件[Master]和工作节点(Node)组件构成)。
    另外,Kubernetes集群的主要任务始终围绕着应用的生命周期。通过将不同资源进行不同层次的抽象,提供了灵活可靠的生命周期管理。
    核心抽象包括:

    • 容器组(Pod):由位于同一个节点上若干容器组成,彼此共享网络命名空间和存储卷(Volume)。Pod是Kubernetes中进行管理的最小资源单位,是最为基础的概念。与容器类似,Pod是短暂的,随时可变的。
    • 服务(Service):若干Pod形成的对外提供某个功能的抽象,不随Pod改变而变化,带有唯一固定的访问途径,如IP地址或者域名
    • 复制控制器(Replication Controller):负责启动、创建Pod,并维护其健康运行的状态。是用户管理Pod的句柄。 -> Replication Set
    • 部署(Deployment):更新Pod,并可根据参数自动创建管理Pod的复制控制器,并且支持升级。(一般用于滚动升级)
    • 横向Pod扩展器(Horizontal Pod Autoscaler,HPA):类似云里面的自动扩展组,根据Pod的使用率自动调整一个部署里面的Pod的个数,保障服务可用性。

    Kubernetes核心概念图
    Kubernetes核心概念 - 图1

    辅助概念,主要包括:

    • 注解(Annotationi):键值对,可以存放大量任意数据,一般用来添加对资源对象的而详细说明,可供其他工具处理;
    • 标签(Label):键值对,可以标记到资源对象上,用来对资源进行分类和筛选
    • 名字(Name):用户提供给资源的别名,同类资源不能重名
    • 命名空间(Namespace):这里是指资源的空间,避免不同租户的资源发生命名冲突,另外可以进行资源限额
    • 持久卷(PersistentVolume):类似Docker中数据卷的概念,就是一个数据目录,Pod对其有访问权限
    • 私密数据(Secret):存放敏感数据,例如用户认证的口令等
    • 选择器(Selector):基于标签概念的一个正则表达式,可通过标签来筛选出一组资源
    • Daemon集(DaemonSet):确保节点上肯定运行某个Pod,一般用来采集日志和监控节点
    • 任务(Job):确定给定数目的Pod正常退出
    • 入口资源(Ingress Resource):用来提供七层代理服务
    • 资源限额(Resource Quotas):用来限值某个命名空间下对资源的使用,开始逐渐提供多租户支持
    • 安全上下文(Security Context):应用到容器上的系统安全配置,包括uid、gid、capabilities、SELinux角色等
    • 服务账号(Service Accounts):操作资源的用户账号