k8s基础整理-标签/注解/命名空间

参考整理于《kubernetes in Action》

本章内容涵盖

  • 创建、 启动和停止 pod
  • 使用标签组织 pod 和其他资源
  • 使用特定标签对所有 pod 执行操作
  • 使用命名空间将多个 pod 分到不重叠的组中
  • 调度 pod 到指定类型的工作节点

标签

标签配置

查看标签

kubectl get pods 命令默认不会列出任何标签,但我们可以使用 --show-labels 选项来查看 :

kubectl get po --show-labels

如果你只对某些标签感兴趣,可以使用 L 选项指定它们并将它们分别显示在 自己的列中,而不是列出所有标签。

指定标签列查看

kubectl get po -L creation_method,env

添加标签:

kubectl label pod pod名 key=values

修改标签:

kubectl label pod pod名 key=values --overwrite

标签选择器

  标签选择器允许我们选择标记有特定标签的 pod 子集, 并对这些 pod 执行操作。是一种能够根据是否包含key/values来进行过滤资源的准则。

标签选择器根据资源的以下条件来选择资源 :

  • 包含或不包含特定键的标签
  • 包含特定键和值的标签
  • 包含特定键的标签,但其值与我们指定的不同(也就是not)

查看匹配 标签key=标签values 的pod

查看匹配 标签key的pod

查看 不包含标签env的pod

更多匹配:

  • 匹配标签key不是标签values的pod  creation_method!=manual
  • 匹配带有 env 标签且值是 prod 或 devel 的 pod   env in (prod, devel)
  • 匹配带有 env 标签且值不是 prod 或 devel 的 pod   env notin (prod, devel)

多条件匹配

  使用逗号分隔的情况下,即可使用多个条件匹配。

节点标签

  通过节点标签和节点标签选择器完成 把pod调度到符合条件的节点上

  (标签相关的操作都一样,不区分具体是什么资源)

为节点添加标签

kubectl label node node名 标签key=标签values

查看匹配标签条件的node

kubectl get nodes -l 标签key=标签values

将 pod 调度到特定节点

  通过节点选择器来实现:节点上打上需要的标签,然后在Pod的yaml文件中通过nodeSelector来进行匹配

以上只是一个关于标签和标签选择器是如何工作以及如何使用它们影响 Kubernetes 操作的快速演示。


注解

  除了标签,pod和其他资源还可以包含注解。形式也是key:values,本质很相似。作用是为了展示任何你想要展示的信息。

查看注解

1、通过yaml形式

2、kubectl describe

添加、修改注解

我们己将注解 mycompany.com/someannotation 添加为值 foo bar。使用这种格式的注解键来避免键冲突是一个好方法。当不同的工具或库向对象添加注 解时,如果它们不像我们刚刚那样使用唯一的前缀,可能会意外地覆盖对方的注解。


命名空间

  通过命名空间可以把资源对象分割成完全独立且不重叠的组,可以实现将包含大量组件的复杂系统拆分为更小的不同组,比如将资源分配为生产、开发和测试环境等,命名空间为资源名称提供了一个作用域。除了隔离资源,命名空间还可用于仅允许某些用户访问某些特定资源,甚至限 制单个用户可用的计算资源数量。相同命名空间内的资源名保证唯一即可,因此不同的命名空间下可以使用相同的资源名。这样可以注意 节点资源是全局独立不被约束在命名空间下的。

查看所有命名空间

kubectl get ns

如果没有单独指定命名空间,默认显示的就是default命名空间下的资源

查看指定的命名空间下的资源,使用方法:-n 命名空间 ,-n等同于--namespace

创建命名空间

1、通过编写yaml文件并提交到api server来创建

2、通过kubectl create namespace 命令的方式来创建

管理指定命名空间中的资源对象

  在列出 描述、修改或删除其他命名空间中的对象时 需要给 kubectl 命令 传递--namespace (或-n) 选项

1、通过kubectl命令的方式指定 -n 命名空间

2、通过在创建资源的metadata字段中添加   namespace: 命名空间   的属性

  提示:要想快速切换到不同的命名空间,可以设置以下别名:alias kcd=‘kubectl config set-context $(kubectl config current-context) --namespace‘。 然后,可以使用 “kcd 命名空间” 在命名空间之间进行切换。

命名空间提供的隔离

  尽管命名空间将资源对象分隔到了不同的组,只允许你对属于特定命名空间的对象进行操作,但是命名空间并不是想象中的做到资源完全隔离,比如网络隔离,这取决于 Kubernetes 所使用的网络解决方案。


停止和删除pod

  在删除 pod 的过程中,实际上我 在指示 kubernetes 终止该 pod 中的所有容器。kubernetes向进程发送一个SIGTERM信号并等待默认30s,使其正常关闭。如果没有及时关闭,则通过SIGKILL终止该进程。因此,为了确保你 的进程总是正常关闭,进程需要正确处理 SIGTERM 信号。

1、按名称删除(可以同时指定多个pod名)

2、使用标签选择器删除 pod

3、通过删除整个命名空间来删除 pod(pod 将会 伴随命名空间 自动删除)

4、删除命名空间下所有pod

5、删除命名空间中的(几乎)所有资源(命令中的第一个 all 指定正在删除所有资源类型,而 --all 选项指定将删除 所有资源实例),但是有一些资源比如secret会被保留下来,并且需要被明确指定删除。

在本章中,你应该已经掌握 : ·

如何决定是否应将某些容器组合在一个 pod 中。

  • pod 可以运行多个进程,这和非容器世界中的物理主机类似。
  • 可以编写 YAML 或 JSON 描述文件用于创建 pod, 然后查看 pod 的规格及其 当前状态。
  • 使用标签来组织 pod,并且一次在多个 pod 上执行操作。
  • 可以使用节点标签将 pod 只调度到提供某些指定特性的节点上。
  • 注解允许人们、工具或库将更大的数据块附加到 pod。
  • 命名空间可用于允许不同团队使用同 一 集群,就像它们使用单独的 Kubemetes 集群一样。
  • 使用 kubectl explain 命令快速查看任何 Kubernetes 资源的信息。

原文地址:https://www.cnblogs.com/tianleblog/p/12197815.html

时间: 2024-10-09 10:41:37

k8s基础整理-标签/注解/命名空间的相关文章

kubernetes(k8s) 基础概念

K8S基础概念 1.Node Node作为集群中的工作节点,运行真正的应用程序,在Node上Kubernetes管理的最小运行单元是Pod.Node上运行着Kubernetes的Kubelet.kube-proxy服务进程,这些服务进程负责Pod的创建.启动.监控.重启.销毁.以及实现软件模式的负载均衡. Node包含的信息: Node地址:主机的IP地址,或Node ID. Node的运行状态:Pending.Running.Terminated三种状态. Node Condition:- N

HTML基础整理(一)

HTLM基础整理--思维导图(标签部分) 其他: <sub>下标</sub>     <sup>上标</sup> 优先级,越往后优先级越高. "right"(右对齐)               "top" (顶部) 对齐方式<tr align="center"(居中) valign="middle"(居中) "left"(左对齐)          

《两地书》--Kubernetes(K8s)基础知识(docker容器技术)

大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相决绝”,寄来给家乡留守的妻子一封<两地书>,上面只有一行数字:“一二三四五六七八九十百千万.”意义是:无亿,我已经无意于你啦. 卓文君看了这封信也不示弱,回了一首<怨郎诗>,司马相如看了发现虽然我是靠写诗吃饭的.要说写诗还是我媳妇厉害,于是亲自将卓文君迎回长安. 卓文君其实是个二婚.头

C#基础---Attribute(标签) 和 reflect(反射) 应用二

以前我有写过一篇有关,打标签和反射的应用,主要用于类中字段的验证.下面是连接 C#基础---Attribute(标签) 和 reflect(反射) 应用. 这个项目迭代发现公司项目里面发现老代码对业务扩展比较大的地方又通过打标签和反射做了一个小的框架,感觉挺实用的.于是想一想模仿一下就搬到博客园上.写得可能不好,也请各位博友指点. 背景: [为了方便,自己还是模拟一个背景吧, 感觉不是很恰当,不过自己的Demo里面自己这样写的.当然跟公司的比起来肯定不够完善]   每个人都会吃饭,可是每个国家吃

h5标签基础 meta标签

<meta>标签位于<head>标签里面,具体作用有如下: 1.设置网页编码 eg: <meta charset="utf-8"/>  ,//utf-8是包含了全世界字符的一个编码集合,例如一个中文网站在国外搭建后依旧不会乱码,会使用英文显示出来 2.增强Seo ,百度抓取强度 · <meta name="keywords" content="h5基础,h5标签meta的使用,h5增加抓取强度"/>

Java基础笔记 – Annotation注解的介绍和使用 自定义注解

Java基础笔记 – Annotation注解的介绍和使用 自定义注解 本文由arthinking发表于5年前 | Java基础 | 评论数 7 |  被围观 25,969 views+ 1.Annotation的工作原理:2.@Override注解:3.@Deprecated注解:4.@SuppressWarnings注解:5.自定义注解:5.1.添加变量:5.2.添加默认值:5.3.多变量使用枚举:5.4.数组变量:6.设置注解的作用范围:6.1.在自定义注解中的使用例子:7.使用反射读取R

javaSE基础之基本细节注解

1.  对于多行注释而言,不能进行嵌套注释.....! /* dada /* d adasdas */ */ 只是不被允许的.... 2.对于记事本编程......如果竹类是公有类,则必须保证类名和为文件名相同,如果不是公有类不,则没有这个要求. 3.0 Java中的名称命名规范: 包名:多单词组成时所有字母都小写:xxxyyyzzz 类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxY

k8s基础知识和概念

k8s基础知识和概念 一. 简介 kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制. Kubernetes一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着(比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务

Java基础教程(16)--注解

一.注解基础知识 1.注解的格式 ??最简单的注解就像下面这样: @Entity [email protected]符号指示编译器其后面的内容是注解.在下面的例子中,注解的名称为Override: @Override void superMethod() {...} ??注解可以有若干个属性.可以在使用注解时指定属性的值: @Auther(name = "maconn") class MyClass { ... } ??如果注解只有一个属性,则可以省略属性的名称: @Auther(&q