1.4kubernetes基本概念和术语(2)-- Label、RC

欢迎各位读者评论留言,共同学习,共同进步。
《kubernetes权威指南》笔记
上一节见1.4kubernetes基本概念和术语(1)

4.Label

  • 特点:
    1). key=value的键值对。
    2). Label可添加到多种资源对象上,例如Node、Pod、Service、RC等。
    3). label和资源对象可以是多对多的关系。
    4).Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

  • 用途:
    可以通过给指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调度、配置、部署等管理工作。
    例如:部署不同版本的应用到不同的环境中;监控和分析应用(日志记录、监控、告警)等。


    标签分类举例
  • 标签查询: 给某个资源对象定义一个Label,就相当于给它打了一个标签,随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象,Kubernetes通过这种方式实现了类似SQL的简单又通用的对象查询机制。
    可用的查询举例: =、!=、In 、 NotIn 、 Exists和DoesNotExist等

  • 使用:
    Pod中在metadata中配置label;
    管理对象RC和Service则通过Selector字段设置需要关联Pod的Label;
    其他管理对象如Deployment、ReplicaSet、DaemonSet和Job则可以在Selector中使用基于集合的筛选条件定义。

具体使用,参考k8s 官网: Labels and Selectors

  • 应用场景举例:
    ◎ kube-controller进程通过在资源对象RC上定义的Label Selector来筛选要监控的Pod副本数量,使Pod副本数量始终符合预期设定的全自动控制流程。
    ◎ kube-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立每个Service到对应Pod的请求转发路由表,从而实现Service的智能负载均衡机制。
    ◎ 通过对某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,kube-scheduler进程可以实现Pod定向调度的特性。


例子1:很好理解,在RC配置中即可实现。

图片举例

上图讲解的是使用selector,选择的则是画圈的两个Pod.

5.Replication Controller

支持Pod自动扩缩,实现集群高可用,版本滚动升级。

RC结构基本分三部分,如下图:


RC 结构

作用:◎ 在大多数情况下,我们通过定义一个RC实现Pod的创建及副本数量的自动控制。
◎ 在RC里包括完整的Pod定义模板。
◎ RC通过Label Selector机制实现对Pod副本的自动控制。

◎ 通过改变RC里的Pod副本数量,可以实现Pod的扩容或缩容。

1). 扩容:通过修改RC的副本数量,来实现Pod的动态缩放:

$ kubectl scale rc redis-slave --replicas=3

2).删除: 删除RC并不会影响通过该RC已创建好的Pod。为了删除所有Pod,可以设置replicas的值为0,然后更新该RC。另外,kubectl提供了stop和delete命令来一次性删除RC和RC控制的全部Pod。

◎ 通过改变RC里Pod模板中的镜像版本,可以实现Pod的滚动升级。

滚动升级:应用升级时,通常会使用一个新的容器镜像版本替代旧版本。通过RC机制,Kubernetes很容易就实现了这种高级实用的特性。

比如我们设置新旧的label相同,但是RC中设置的template是最新的版本,那么在默认集群节点个数固定情况,每去掉一个都会动态创新一个新版本,知道都是新的版本为止。

  • RC调度过程:
    在我们定义了一个RC并将其提交到Kubernetes集群中后,Master上的Controller Manager组件就得到通知,定期巡检系统中当前存活的目标Pod,并确保目标Pod实例的数量刚好等于此RC的期望值,如果有过多的Pod副本在运行,系统就会停掉一些Pod,否则系统会再自动创建一些Pod。可以说,通过RC,Kubernetes实现了用户应用集群的高可用性,并且大大减少了系统管理员在传统IT环境中需要完成的许多手工运维工作(如主机监控脚本、应用监控脚本、故障恢复脚本等)。

与replica Set对比
1). Replica Sets支持基于集合的Label selector(Set-based selector),而RC只支持基于等式的Label Selector(equality-based selector),这使得Replica Set的功能更强。
2). 主要被Deployment这个更高层的资源对象所使用,从而形成一整套Pod创建、删除、更新的编排机制。我们在使用Deployment时,无须关心它是如何创建和维护Replica Set的,这一切都是自动发生的。
3). Replica Set与Deployment,是Kubernetes 1.3里Pod自动扩容(伸缩)这个告警功能实现的基础,也将继续在Kubernetes未来的版本中发挥重要的作用。

你可能感兴趣的:(1.4kubernetes基本概念和术语(2)-- Label、RC)