ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

集群资源管理

2020-04-21 15:58:43  阅读:342  来源: 互联网

标签:可以 object namespace label 集群 Label 资源管理



为了管理异构和不同配置的主机,为了便于Pod的运维管理,Kubernetes中提供了很多集群管理的配置和管理功能,通过namespace划分的空间,通过为node节点创建label和taint⽤于pod的调度等

Node

Node是kubernetes集群的⼯作节点,可以是物理机也可以是虚拟机。

Node的状态
Node包括如下状态信息

  • Address
    HostName:可以被kubelet中的 --hostname-override 参数替代。
    ExternalIP:可以被集群外部路由到的IP地址。
    InternalIP:集群内部使⽤的IP,集群外部⽆法访问。
  • Condition
    OutOfDisk:磁盘空间不⾜时为 True
    Ready:Node controller 40秒内没有收到node的状态报告为 Unknown ,健康为 True ,否则为 False 。
    MemoryPressure:当node没有内存压⼒时为 True ,否则为 False 。
    DiskPressure:当node没有磁盘压⼒时为 True ,否则为 False 。
  • Capacity
    CPU
    内存
    可运⾏的最⼤Pod个数
    Info:节点的⼀些版本信息,如OS、kubernetes、docker等

Node管理

禁⽌pod调度到该节点上
kubectl cordon
驱逐该节点上的所有pod
kubectl drain

该命令会删除该节点上的所有Pod(DaemonSet除外),在其他node上重新启动它们,通常该节点需要维护时使⽤该
命令。直接使⽤该命令会⾃动调⽤ kubectl cordon 命令。当该节点维护完成,启动了kubelet后,再使⽤ kubectl uncordon 即可将该节点添加到kubernetes集群中。

Namespace

在⼀个Kubernetes集群中可以使⽤namespace创建多个“虚拟集群”,这些namespace之间可以完全隔离,也可以通过某种⽅式,让⼀个namespace中的service可以访问到其他的namespace中的服务,我们在CentOS中部署kubernetes1.6集群的时候就⽤到了好⼏个跨越namespace的服务,⽐如Traefik ingress和 kube-system namespace下的service就可以为整个集群提供服务,这些都需要通过RBAC定义集群级别的⻆⾊来实现

哪些情况下适合使⽤多个namespace
因为namespace可以提供独⽴的命名空间,因此可以实现部分的环境隔离。当你的项⽬和⼈员众多的时候可以考虑根据项⽬属性,例如⽣产、测试、开发划分不同的namespace

Namespace使⽤

获取集群中有哪些namespace
kubectl get ns

集群中默认会有 default 和 kube-system 这两个namespace。
在执⾏ kubectl 命令时可以使⽤ -n 指定操作的namespace。
⽤户的普通应⽤默认是在 default 下,与集群管理相关的为整个集群提供服务的应⽤⼀般部署在 kube-system 的
namespace下,例如我们在安装kubernetes集群时部署的 kubedns 、 heapseter 、 EFK 等都是在这个namespace下⾯。另外,并不是所有的资源对象都会对应namespace, node 和 persistentVolume 就不属于任何namespace

Label

Label是附着到object上(例如Pod)的键值对。可以在创建object的时候指定,也可以在object创建后随时指定。Labels的值对系统本身并没有什么含义,只是对⽤户才有意义

Label能够将组织架构映射到系统架构上(就像是康威定律),这样能够更便于微服务的管理,你可以给object打上如下类型的label

"release" : "stable" , "release" : "canary"
"environment" : "dev" , "environment" : "qa" , "environment" : "production"
"tier" : "frontend" , "tier" : "backend" , "tier" : "cache"
"partition" : "customerA" , "partition" : "customerB"
"track" : "daily" , "track" : "weekly"
"team" : "teamA" , "team:" : "teamB"

语法与字符集

Label key的组成:

  • 不得超过63个字符
  • 可以使⽤前缀,使⽤/分隔,前缀必须是DNS⼦域,不得超过253个字符,系统中的⾃动化组件创建的label必须指定
    前缀, kubernetes.io/ 由kubernetes保留
  • 起始必须是字⺟(⼤⼩写都可以)或数字,中间可以有连字符、下划线和点

Label value的组成:

  • 不得超过63个字符
  • 起始必须是字⺟(⼤⼩写都可以)或数字,中间可以有连字符、下划线和点

Label selector

Label不是唯⼀的,很多object可能有相同的label。
通过label selector,客户端/⽤户可以指定⼀个object集合,通过label selector对object的集合进⾏操作

Label selector有两种类型:

  • equality-based :可以使⽤ = 、 == 、 != 操作符,可以使⽤逗号分隔多个表达式
  • set-based :可以使⽤ in 、 notin 、 ! 操作符,另外还可以没有操作符,直接写出某个label的key,表示过滤有某
    个key的object⽽不管该key的value是何值, ! 表示没有该label的object

$ kubectl get pods -l environment=production,tier=frontend
$ kubectl get pods -l 'environment in (production),tier in (frontend)'
$ kubectl get pods -l 'environment in (production, qa)'
$ kubectl get pods -l 'environment,environment notin (frontend)'

在API object中设置label selector

在 service 、 replicationcontroller 等object中有对pod的label selector,使⽤⽅法只能使⽤等于操作,例如:
selector:
   component: redis
   
在 Job 、 Deployment 、 ReplicaSet 和 DaemonSet 这些object中,⽀持set-based的过滤,例如
selector:
   matchLabels:
      component: redis
   matchExpressions:
     - {key: tier, operator: In, values: [cache]}
     - {key: environment, operator: NotIn, values: [dev]}   
Annotation

注解。Annotation可以将Kubernetes资源对象关联到任意的⾮标识性元数据。使⽤客户端(如⼯具和库)可以检索到这些元数据

Label和Annotation都可以将元数据关联到Kubernetes资源对象。Label主要⽤于选择对象,可以挑选出满⾜特定条件的对象。相⽐之下,annotation 不能⽤于标识及选择对象。annotation中的元数据可多可少,可以是结构化的或⾮结构化的,也可以包含label中不允许出现的字符。

annotation和label⼀样都是key/value键值对映射结构:
"annotations": {
"key1" : "value1",
"key2" : "value2"
}

可以记录在 annotation 中的对象信息

  • 声明配置层管理的字段。使⽤annotation关联这类字段可以⽤于区分以下⼏种配置来源:客户端或服务器设置的默认值,⾃动⽣成的字段或⾃动⽣成的 auto-scaling 和 auto-sizing 系统配置的字段。
  • 创建信息、版本信息或镜像信息。例如时间戳、版本号、git分⽀、PR序号、镜像哈希值以及仓库地址。
  • 记录⽇志、监控、分析或审计存储仓库的指针
  • 可以⽤于debug的客户端(库或⼯具)信息,例如名称、版本和创建信息。
  • ⽤户信息,以及⼯具或系统来源信息、例如来⾃⾮Kubernetes⽣态的相关对象的URL信息。
  • 轻量级部署⼯具元数据,例如配置或检查点。
  • 负责⼈的电话或联系⽅式,或能找到相关信息的⽬录条⽬信息,例如团队⽹站。



标签:可以,object,namespace,label,集群,Label,资源管理
来源: https://www.cnblogs.com/g2thend/p/12745145.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有