kubernetes Namespace Labels 详解

写在前面:如有问题,以你为准,

目前24年应届生,各位大佬轻喷,部分资料与图片来自网络

内容较长,页面右上角目录方便跳转

namespace 实现资源分组,label实现业务分组

Namespace

基础理论

最重要功能:资源分割,网络隔离(结合NNetworkPolicy)

  1. Namespace是kubernetes系统中一种非常重要的资源,它的主要作用是用来实现

多套系统的资源隔离或者多租户的资源隔离

  1. 默认情况下,kubernetes集群中的所有Pod都是可以相互访问的。但是在实际中,可能不想让两个Pod之间进行互相的访问,那么此时就可以将两个Pod划分到不同的Namespace下。kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的“组”,以方便不同的组的资源进行隔离使用和管理
  2. 可以通过kubernetes的授权机制,将不同的Namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,例如CPU使用量、内存使用量等等,来实现租户可用资源的管理

如下图中,dev交给开发组部门进行管理,test交给测试组部门进行管理

不同部门之间无法直接通信,分隔资源

label是将pod进行分组和打标签

名称空间在实际开发中如何划分?

  1. ① 基于环境隔离,如:dev(开发)、test(测试)、prod(生产)等。
  2. ② 基于产品线隔离,如:前端、后端、中间件、大数据、Android、iOS、小程序等。
  3. ③ 基于团队隔离,如:企业发展事业部、技术工程事业部、云平台事业部等。

命名规则

  1. ① 不能带小数点(.)。
  2. ② 不能带下划线(_)。
  3. ③ 使用数字、小写字母或减号(-)组成的字符串

自带命名空间

kubernetes在集群启动之后,会默认创建几个namespace

default:所有未指定的Namespace的对象都会被分配在default命名空间。

kube-node-lease:集群节点之间的心跳维护,v1.13开始引入。

kube-public:此命名空间的资源可以被所有人访问(包括未认证用户)。

kube-system:所有由kubernetes系统创建的资源都处于这个命名空间。

实操

命令行实操

查看

namespace=ns

# 查看所有namespacekubectl get namespacekubectl get ns# 指定查看nskubectl get ns default# 指定命名空间的输出格式kubectl get ns default -o wide/json/yaml# 查看命名空间的详情kubectl describe ns default#Active命名空间正在使用中 Terminating正在删除命名空间#ResourceQuota针对namespace做的资源限制#LimitRange针对namespacel中的每个组件做的资源限制

创建 删除
kubectl create ns devkubectl delete ns dev# 注可以通过删除 namespace 来删除隶属于该命名空间的所有pod

yaml 方式

apiVersion: v1
kind: Namespace
metadata:name: dev

kubectl create -f ns-dev.yaml

Label

理论

例子:前台和后台程序需要进行通信哪就要再同一个namespace下,这样就没办法进行逻辑上的分组来区分前台和后台,就要使用label来进行逻辑上的分组,同一个组的Pod使用同一个label进行区分

  1. Label是kubernetes的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。
  2. Label的特点:
    1. 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等。
    2. 一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去
    3. Label通常在资源对象定义时确定,当然也可以在对象创建后动态的添加或删除。
  3. 可以通过Label实现资源的多纬度分组,以便灵活、方便地进行资源分配、调度、配置和部署等管理工作

重点:namespace 实现资源分组,label实现业务分组

label也用于实现Pod调度,污点和容忍

Pod控制器与现有和未来Pod之间连接

Service 与现有和未来Pod之间连接

一些常用的Label标签示例如下:

  1. 版本标签:“version”:”release”,”version”:”stable”
  2. 环境标签:“environment”:”dev”,“environment”:”test”,“environment”:”pro”
  3. 架构标签:“tier”:”frontend”,”tier”:”backend”

标签语法

  1. 标签是一组键值对(key/value),标签的 key 有两个部分:可选的前缀和标签名,通过 / 分隔。
  2. 标签前缀:
    1. 标签前缀部分是可选的。
    2. 如果指定,必须是一个 DNS 的子域名,如:k8s.eip.work 。
    3. 不能多余 253 个字符。
    4. 使用 / 和标签名分隔。

如果省略标签前缀,则标签的 key 就被认为是专属于用户的。Kubernetes 的系统组件

(如:kube-scheduler、kube-controller-manager、kube-apiserver、kubectl

或其他第三方组件)向可以的 Kubernetes 对象添加标签的时候,必须指定一个前缀。

kubernetes.io/ 和 k8s.io/ 这两个前缀是 Kubernetes 核心组件预留的

  1. 标签名:
    1. 标签名部分是必须的。
    2. 不能多余 63 个字符。
    3. 必须由字母、数字开始和结尾。
    4. 可以包含字母、数字、减号(-)、下划线(_)、小数点(.)
  2.  标签的 value :
    1. 不能多于 63 个字符。
    2. 可以为空字符串。
    3. 如果不为空,则必须由字母、数字开始和结尾。
    4. 如果不为空,可以包含字母、数字、减号(-)、下划线(_)、小数点(.)。

Label Selector

  1. 通常来讲,会有多个 Kubernetes 对象包含相同的标签。通过使用标签选择器(label selector),用户/客户端可以选择一组对象。标签选择器是 Kubernetes 中最主要的分类和筛选手段
  2. Kubernetes 的 api-server 支持两种形式的标签选择器,equality-based 基于等式的 和 set-based 基于集合的 。标签选择器可以包含多个条件,并使用逗号进行分隔,此时只要满足所有条件的 Kubernetes对象才会被选中。
  3. 基于等式的标签选择器,可以使用三种操作符 = 、== 、!=。前两个操作符含义是一样的,都代表相等;后一个操作符代表不相等。

标签定义完毕之后,还要考虑到标签的选择,这就要用到Label Selector,即:

    1. Label用于给某个资源对象定义标识。
    2. Label Selector用于查询和筛选拥有某些标签的资源对象

当前有两种Label Selector:

  1. 基于等式的Label Selector。
    1. name=slave:选择所有包含Label中的key=“name”并且value=“slave”的对象。
    2. env!=production:选择所有包含Label中的key=“env”并且value!=“production”的对象。
  2. 基于集合的Label Selector。
    1. name in (master,slave):选择所有包含Label中的key=“name”并且value=“master”或value=“slave”的对象。
    2. name not in (master,slave):选择所有包含Label中的key=“name”并且value!=“master”和value!=“slave”的对象。
  3. 标签的选择条件可以使用多个,此时将多个Label Selector进行组合,使用逗号(,)进行分隔即可。
    1. name=salve,env!=production。
    2. name not in (master,slave),env!=production

注解 annotations

注解(annotation) 可以用来向 Kubernetes 对象的 meta.annotations 字段添加任意的信息。Kubernetes 的客户端或者自动化工具可以存取这些信息以实现自定义的逻辑

label 实操

命令行

创建与查看
[root@master k8s]# kubectl get pod -n snj-test --show-labelsNAME             READY   STATUS    RESTARTS   AGE   LABELSsnj-nginx-test   1/1     Running   0          47s   <none>[root@master k8s]# kubectl label pod -n snj-test snj-nginx-test  version=1.0pod/snj-nginx-test labeled[root@master k8s]# kubectl get pod -n snj-test --show-labelsNAME             READY   STATUS    RESTARTS   AGE    LABELSsnj-nginx-test   1/1     Running   0          4m6s   version=1.0
更新与删除

更新关键字段:--overwrite

删除:key-

[root@master k8s]# kubectl label pod -n snj-test snj-nginx-test  version=2.0error: 'version' already has a value (1.0), and --overwrite is false[root@master k8s]# kubectl label pod -n snj-test snj-nginx-test  version=2.0 --overwritepod/snj-nginx-test labeled[root@master k8s]# kubectl get pod -n snj-test --show-labelsNAME             READY   STATUS    RESTARTS   AGE     LABELSsnj-nginx-test   1/1     Running   0          5m16s   version=2.0[root@master k8s]# kubectl label pod -n snj-test snj-nginx-test version-pod/snj-nginx-test unlabeled[root@master k8s]# kubectl get pod -n snj-test --show-labelsNAME             READY   STATUS    RESTARTS   AGE     LABELSsnj-nginx-test   1/1     Running   0          8m33s   <none>

yaml

apiVersion: v1kind: Podmetadata:name: nginx-podlabels: # 标签app: nginxenvironment: prodspec:containers:- name: nginximage: nginx

label selector 实操

命令行

key=标签

value=标签值

# 选择了标签名为 `environment` 且 标签值为 `production` 的Kubernetes对象kubectl get pods -l environment=production,tier=frontend# 选择了标签名为 `tier` 且标签值不等于 `frontend` 的对象,以及不包含标签 `tier` 的对象kubectl get pods -l tier != frontend# 选择所有包含 `partition` 标签的对象kubectl get pods -l partition# 选择所有不包含 `partition` 标签的对象kubectl get pods -l !partition

基于集合标签选择器,可以根据标签名的一组值进行筛选。支持的操作符有三种:

in、notin、exists

# 选择所有的包含 `environment` 标签且值为 `production` 或 `qa` 的对象kubectl get pods -l environment in (production, qa)# 选择所有的 `tier` 标签不为 `frontend` 和 `backend`的对象,或不含 `tier` 标签的对象kubectl get pods -l tier notin (frontend, backend)# 选择包含 `partition` 标签(不检查标签值)且 `environment` 不是 `qa` 的对象kubectl get pods -l partition,environment notin (qa)

yaml

  1. 示例:Job、Deployment、ReplicaSet 和 DaemonSet 同时支持基于等式的选择方式和基于集合的选择方式。

具体的可以看pod和pod 控制器解析笔记

apiVersion: apps/v1kind: Deploymentmetadata:name:  nginxnamespace: defaultlabels:app:  nginxspec:selector:matchLabels:# matchLabels 是一个 {key,value} 组成的 map。# map 中的一个 {key,value} 条目相当于 matchExpressions 中的一个元素,# 其 key 为 map 的 key,operator 为 In, values 数组则只包含 value 一个元素。# matchExpression 等价于基于集合的选择方式# 支持的 operator 有 In、NotIn、Exists 和 DoesNotExist。# 当 operator 为 In 或 NotIn 时,values 数组不能为空。# 所有的选择条件都以 AND 的形式合并计算,即所有的条件都满足才可以算是匹配app: nginxmatchExpressions:- {key: tier, operator: In, values: [cache]}- {key: environment, operator: NotIn, values: [dev]}replicas: 1template:metadata:labels:app:  nginxspec:containers:- name:  nginximage:  nginx:latest

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行业赋能|同创永益出席数据中心业务连续性管理国标应用推广研讨会

2023年12月7日&#xff0c;ITSS数据中心业务连续性管理国标应用推广研讨会在上海交通银行浦江数据中心召开。来自交通银行、浦发银行、太平洋保险、上证数据、海通证券、国泰君安、申万宏源、太平保险、中债登、神州信息、翰纬科技、同创永益等单位20余名专家出席会议&#xff…

2024第15届电子教育、电子商务、电子管理和电子学习国际会议

第十五届电子教育、电子商务、电子管理和电子学习国际会议&#xff08;IC4E 2024&#xff09;将于2024年3月18日-21日在日本福冈举办。本次会议以电子技术为核心&#xff0c;围绕电子教育、电子商务、电子管理以及电子学习等各个方面展开研讨&#xff0c;为相关领域的专家学者们…

2.SPSS数据文件的建立和管理

文章目录 数据文件的特点建立SPSS数据文件步骤 数据文件的结构变量的规则 数据的录入和保存录入数据保存文件 数据的编辑数据定位 数据文件的特点 SPSS数据库文件包括文件结构和数据两部分 SPSS数据文件中的一列数据称为一个变量。每个变量都应有一个名称&#xff0c;即&…

自动计算薪资-全优学堂

功能说明 全优学堂薪资模块则根据基础薪资、历史上课情况、课程销售情况自动计算员工薪资&#xff0c;帮助您更好地进行成本管理。系统根据教职工的排班情况、课时数和提成规则&#xff0c;自动计算教职工的薪资&#xff0c;大大减轻工资管理负担。 #1. 基础薪资配置 设置本…

积萨伯爵不懈追求恒久卓越,花为缘集团不断探索时尚的型格魅力

近年来&#xff0c;高端腕表凭借着卓越的制表技艺、悠久的制表历史以及不拘一格的美学特色&#xff0c;逐渐受到各大明星演员&#xff0c;时尚博主的青睐&#xff0c;成为他们出席各大重要场合&#xff0c;彰显个人品位和地位的时尚百搭单品。 积萨伯爵作为专业做培育珠宝和高…

Django 入门教程|Web开发|用户管理实战

简介 Django是一个主流的Python Web框架&#xff0c;用于快速开发 Web 应用程序。功能强大&#xff0c;Python Web应用开发的第一选择。 特点 ORM&#xff08;对象关系映射&#xff09;&#xff1a; Django 提供了一个强大的 ORM&#xff0c;允许开发者通过 Python 代码来定义…

C++学习笔记(二十八):c++ 静态库及动态库的使用

静态库的使用 库的使用会很大程度减少我们的工作&#xff0c;本节对c中静态库和动态库的使用进行简单的介绍。静态链接库意味着这个库会被放到可执行文件中&#xff0c;在生成的exe中。动态链接库是在程序运行时链接的&#xff0c;可以在程序运行时调用加载库函数的方法来实现&…

linux 系统安全及应用

一、账号安全基本措施 1.系统账号清理 1.将用户设置为无法登录 /sbin/nologin shell——/sbin/nologin却比较特殊&#xff0c;所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已&#xff0c;并不是说这个账号就无法使用系统资源。举例来说&#xff0c;…

苹果电脑交互式原型设计软件Axure RP 9 mac特色介绍

Axure RP 9 for Mac是一款交互式原型设计软件&#xff0c;使用axure rp9以最佳的方式展示您的作品&#xff0c;优化现代浏览器并为现代工作流程设计。同时确保您的解决方案正确完整地构建。Axure RP 9 for Mac为您整理笔记&#xff0c;将其分配给UI元素&#xff0c;并合并屏幕注…

YOLO物体检测-系列教程6:YOLOv5源码解析1

计算机视觉 全教程 目录 物体检测 系列教程 总目录 1、基本概述 YOLOv5没有一篇对应的论文&#xff0c;是一个对v4更好的实现v5版本是一个在github更新的基于工程项目的实现基本上和v4没有差异&#xff0c;只不过在整个项目上做出了更好的实现效果主要基于github的文档介绍来…

Visual Studio 2022 AI Code 支持

1.先在 Log In | Codeium Free AI Code Completion & Chat 上注册一个用户 在Visual Stuido 中扩展中搜索 codeium 并安装 安装完成后登录即可。 注意国内可能存在网络问题无法使用这时建议使用代理进行登录。 地址如下&#xff1a; Sign Up | Codeium Free AI Code Co…

Linux下安装JET2

0. 说明&#xff1a; JET2是一个基于Joint Evolutionary Trees的利用序列和结构信息预测蛋白质界面的软件&#xff0c;详情见: http://www.lcqb.upmc.fr/JET2/JET2.html&#xff0c;http://www.lgm.upmc.fr/JET/JET.html 和 https://doi.org/10.1371/journal.pcbi.1004580 本…

多模态推荐系统综述:三、多模态特征增强

三、多模态特征增强 同一对象的不同模态表示具有独特且共同的语义信息。如果能够区分独特特征和共同特征&#xff0c;那么MRS的推荐性能和泛化能力可以得到显着提高。解耦表征学习&#xff08;DRL&#xff09;和对比学习&#xff08;CL&#xff09;被用来进行基于交互的特征增…

第二证券:主力为什么要砸盘?

砸盘就是在股票的某个阶段有许多卖出单&#xff0c;这些许多的卖出单不断的成交使股票价格出现快速下跌。一般是受到主力资金洗盘或者出货所影响形成的。 1、洗盘 个股通过长时间上涨之后&#xff0c;盘中的散户较多&#xff0c;主力为了洗掉盘中的散户&#xff0c;在低位吸筹…

从私有Git仓库的搭建到命令的使用及部署再到分支管理

一、版本控制系统/版本控制器 1. 版本控制系统&#xff1a; git 分布式 —没有中心代码库&#xff0c;所有机器之间的地位同等&#xff08;每台机器上都有相同的代码&#xff09; svn 集中管理的 —有中心代码库&#xff0c;其他都是客户端 2.git与svn介绍 1.git属于分布…

Mac版 Photoshop 2021---PS2021

Adobe Photoshop 2021是一款强大的图像处理软件&#xff0c;它可以帮助用户进行各种图像编辑、修饰和合成工作。这款软件拥有先进的图像处理技术&#xff0c;支持多种图像格式&#xff0c;可以轻松实现各种复杂的图像处理任务。它还提供了丰富的滤镜和工具&#xff0c;使用户可…

全网最全Stable Diffusion原理快速上手,模型结构、关键组件、训练预测方式!!!!

手把手教你入门绘图超强的AI绘画程序&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包&#xff08;文末可获取&#xff09; 【AIGC】Stable Diffusion的建模思想、训练预测方式快速 在这篇博客中&#xff0c;…

运动耳机怎么选?2024年运动耳机推荐,运动蓝牙耳机排行榜10强

​在现代生活中&#xff0c;音乐和运动已经成为很多人生活不可分割的一部分。运动耳机在这样的背景下变得越来越受欢迎&#xff0c;它们不仅可以在运动时提供音乐的陪伴&#xff0c;还能增加运动时的乐趣和动力。但是&#xff0c;面对市面上众多不同类型的运动耳机&#xff0c;…

哈希-力扣454.四数相加Ⅱ

题目 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&#xff1a;nums1 [1…