k8s管理pod资源对象(下)
一、标签与标签选择器
1、标签是k8s极具特色的功能之一,它能够附加于k8s的任何资源对象之上。简单来说,标签就是键值类型的数据,它们可于资源创建时直接指定,也可随时按需添加于活动对象中,而后即可由标签选择器进行匹配度检查从而完成资源挑选。一个对象可拥有不止一个标签,同一个标签也可被添加至多个资源之上。实践中,可为资源附加多个不同维度的标签以实现灵活的资源分组管理功能,例如:
版本标签:release:stable、release:canary、release、beta
环境标签:environment:dev、environment:qa、environment:production
应用标签:app:ui、app:as、app:sc
架构层级标签:tier:frontend、tier:backend、tier:cache
分区标签:partition:customerA、partition:customerB
品控级别标签:track:daily、track:weekly
标签中的键名通常由键前缀和键名组成,其中键前缀可选,键名之多能使用63各字符,可使用字母、数字、连接号、下划线、点号等字符,并且只能以字母或数字开头。键前缀必须为DNS子域名格式,且不能超过253个字符。省略前缀时,键将被视为用户的私有数据,不过由k8s系统组件或第三方组件自动为用户资源添加的键必须使用键前缀,而kubenetes.io/前缀则预留给kubernetes的核心组件使用。
标签中的键值必须不能多余63个字符,要么为空,要么是以字母或数字开头及结尾,且中间仅使用了字母、数字、连接号、下划线或点号等字符数据。
2、管理资源标签
创建资源时,可直接在其metadata中嵌套使用label字段以定义要附加的标签项。可使用命令“kubectl get pods --show-labels”命令进行额外显示对象的标签信息,标签较多时,在“kubectl get pods -L key1,key2”命令指定显示有着特定键的标签信息。使用kubectl label命令可以直接管理活动对象的标签,以按需进行添加或修改等操作,如“kubectl label pods/pod-example env=qa”。不过,对于已经附带了指定键名的标签,使用label命令为其设定新的键值时需要为命令同时使用--overwrite选项以强制覆盖原有的键值。
3、标签选择器
标签选择器用于表达标签的查询条件或选择标准,k8s api目前支持两个选择器:基于等值关系(equality-based)以及基于集合关系(set-based)。例如,env=production和env!=qa是基于等值关系的选择器,而tier in (frontend,backend)则是基于集合关系的选择器。另外,使用标签选择器时还将遵循以下逻辑:
同时指定的多个选择器之间的逻辑关系为“and”操作
使用空值的标签选择器意味着每个资源对象都被选中
空的标签选择器将无法选出任何资源
基于等值关系的标签选择器的可用操作符有“==”、“=”和“!=”三种,其中前两种表示等值关系,最后一个表示不等关系。使用"kubectl get"命令的“-l”选项能够指定使用标签选择器,例如:“kubectl get pods -l ‘env!=qa,tier=frontend’ -L env,tier”。
基于集合关系的标签选择器支持in、notin和exists三种操作符,他们的使用格式及意义如下:
KEY in (value1,value2,...):指定的键名的值存在于给定的列表中即满足条件
KEY notin (VALUE1,VALUE2,...):指定的键名的值不存在于给定的列表中即满足条件
KEY:所有存在此键名标签的资源
!KEY:所有不存在此键名标签的资源
例如,显示标签键名env的值为qa或dev的所有pod对象:kubectl get pods -l "env in (qa,dev)" -L env
再如,列出键名env的值为dev或qa,且不存在键名为tier的标签的所有pod对象:kubectl get pods -l 'env in (qa,dev), !tier' -L env,tier
此外,k8s的诸多资源对象必须以标签选择器的方式关联到pod资源对象,它们在spec字段中嵌套使用嵌套的selector字段,通过matchLabels来指定标签选择器,有的甚至还支持使用matchExpressions构造复杂的标签选择机制。
matchLabels:通过直接给定键值对来指定标签选择器
matchExpresstions:基于表达式指定的标签选择器列表。
4、pod节点选择器nodeSelector
pod节点选择器是标签选择器的一种应用,它能够让pod对象基于集群中工作节点的标签来挑选倾向运行的目标节点。
kubernetes的kube-scheduler守护进程负责在各工作节点中基于系统资源的可用性等标签挑选一个来运行待创建的pod对象,默认的调度器是default-scheduler。k8s可将所有工作节点上的各系统资源抽象成资源池统一分配使用,因此用户无须关系pod对象的具体运行位置也能良好工作。pod对象的spec.nodeSelector可用于定义节点标签选择器,用户事先为特定部分的node资源对象设定好标签,而后配置pod对象通过节点标签选择器进行匹配检测,从而完成节点亲和性调度。
二、资源注解
注解也是键值类型的数据,不过它不能用于标签及挑选k8s对象,仅可用于为资源提供元数据信息,另外,注解中的元数据不受字符数量的限制,它可大可小,可以为结构化或非结构化形式,也支持使用在标签中禁止使用的其他字符。
资源注解可由用户手动添加,也可由工具程序自动附加并使用他们。在k8s的新版本(alpha或beta阶段)中为某资源引入新字段时,常以注解的方式提供,以避免其增删等变动对用户带来困扰,一旦确定支持使用它们,这些新增字段就将再引入到资源中并淘汰相关注解。另外,为资源添加注解也可让其他用户快速了解资源相关信息。
1、查看资源注解
使用"kubectl get -o yaml"和“kubectl describe”命令均能显示资源的注解信息。
2、管理资源注解
annotation可在资源创建时使用metadata.annotations字段指定,也可随时按需在活动的资源上使用“kubectl annotate”命令进行附加,如:“kubectl annotate pods pod-example ilinux.io/created-by='cluster admin'"
k8s管理pod资源对象(下)的更多相关文章
- k8s管理pod资源对象(上)
一.容器于pod资源对象 现代的容器技术被设计用来运行单个进程时,该进程在容器中pid名称空间中的进程号为1,可直接接收并处理信号,于是,在此进程终止时,容器即终止退出.若要在一个容器中运行多个进程, ...
- k8s管理存储资源
1. Kubernetes 如何管理存储资源 理解volume 首先我们学习 Volume,以及 Kubernetes 如何通过 Volume 为集群中的容器提供存储:然后我们会实践几种常用的 Vol ...
- k8s 管理存储资源(10)
一.Kubernetes 如何管理存储资源 理解Volume 我们经常会说:容器和 Pod 是短暂的. 其含义是它们的生命周期可能很短,会被频繁地销毁和创建.容器销毁时,保存在容器内部文件系统中的数据 ...
- K8s QoS Pod资源服务质量控制
Kubernetes 中如果一个 Node 节点上的 Pod 占用资源过多并且不断飙升导致 Node 节点资源不足,可能会导致为了保证节点可用,将容器被杀掉.在遇见这种情况时候,我们希望先杀掉那些不太 ...
- kubernetes之常用核心资源对象
部门产品线本身是做DEVOPS平台,最近部署架构也在往K8S上靠了,不得不学一下K8S.自己搭建了K8S集群与harbor仓库来学习. 1.kubernetes之常用核心资源对象 1.1.K8s服务部 ...
- k8s 中 Pod 的控制器
k8s 中 Pod 的控制器 前言 Replication Controller ReplicaSet Deployment 更新 Deployment 回滚 deployment StatefulS ...
- k8s的Pod状态和生命周期管理
Pod状态和生命周期管理 一.什么是Pod? 二.Pod中如何管理多个容器? 三.使用Pod 四.Pod的持久性和终止 五.Pause容器 六.init容器 七.Pod的生命周期 (1)Pod p ...
- 容器编排系统k8s之Service资源
前文我们了解了k8s上的DemonSet.Job和CronJob控制器的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14157306.html:今 ...
- kubernetes 基本概念和资源对象汇总
kubernetes 基本概念和知识点脑图 基本概念 kubernetes 中的绝大部分概念都抽象成kubernets管理的资源对象,主要有以下类别: Master : Master节点是kubern ...
随机推荐
- C#编程 JSON操作
JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析.JSON跟XML一样是一种是数据格式. JSON 使用 JavaScript 语法来描述数据对象,但是 ...
- java位运算定义常量
简单说一下位运算 按位与(&) 参加运算的两个数,换算为二进制(0.1)后,进行与运算.只有当相应位上的数都是1时,该位才取1,否则该为为0 按位或(|) 参加运算的两个数,换算为二进制(0. ...
- 【AMAD】transitions -- 一个python实现的轻量级,面向对象的有限状态机
简介 个人评分 简介 Transitions1是使用python实现的有限状态机2. 而有限状态机是实现经典模式 -- 状态模式3的前提. 这个库的API相当优雅,简洁. 另外博客园有人发布博客4介绍 ...
- Leetcode之动态规划(DP)专题-413. 等差数列划分(Arithmetic Slices)
Leetcode之动态规划(DP)专题-413. 等差数列划分(Arithmetic Slices) 如果一个数列至少有三个元素,并且任意两个相邻元素之差相同,则称该数列为等差数列. 例如,以下数列为 ...
- 脚本自动创建ldap账号
背景:客服那边人员流动性大,经常需要配置账号,每次创建账号配置权限比较繁琐. 配置脚本: ldapadduser.sh #!/bin/bash # add ldap user ] || [[ $ -n ...
- Codeforces 1237E Perfect Balanced Binary Search Tree
题目链接 Observations 含有 $n$ 个点且 key(以下也称 key 为「权值」)是 1 到 $n$ 的 BST 具有下列性质: 若 $k$ 是一个非根叶子且是个左儿子,则 $k$ 的父 ...
- # 数字签名&数字证书
目录 数字签名&数字证书 数字签名 数字证书 数字证书的实例(https协议) 数字签名&数字证书 参考资料: 数字签名是什么?-阮一峰的网络日志 数字签名和数字证书究竟是什么?知乎- ...
- 2019中山纪念中学夏令营-Day4[JZOJ]
Begin (题目的排序方式:难易程度) 什么是对拍: 对拍是一种在写完程序后,验证自己程序是不是正解的比较方便的方法. 实现过程: 对同一道题,再打一个暴力程序,然后用一些大数据等跑暴力程序来进行验 ...
- 第五篇 jQuery特效与动画
5.1 show()与hide()方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...
- DIj
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace DefineG ...