首页 文章 精选 留言 我的

精选列表

搜索[AI原生],共10000篇文章
优秀的个人博客,低调大师

【云原生 】Kubernetes(k8s)标签详解

文章目录 前言 一、什么是Kubernetes标签 二、设计标签的目的 三、标签的语法 四、标签选择运算符 五、标签的使用 前言 我们知道使用pod控制器创建的pod,在pod故障以后重建后的pod ip地址和名称是变化的,为了解决pod访问问题,我们特此创建了service,我们访问service的ip地址就可以正常访问到pod;那么问题来了,service是怎样去关联pod的呢?在k8s上如果使用pod控制创建的pod,在pod发生故障以后,对应pod会被对应的控制器重启或重建,一个pod重建以后,对应的ip地址和名称都是会发生变化的,所以靠ip地址和名称关联pod是不行的;那靠什么关联pod呢?在k8s上是使用的标签和标签选择器的机制实现资源和资源间相互关联的。 什么是标签?它的作用是干嘛用的? 所谓标签就是指一个键值数据,在k8s上任何资源都可以拥有标签;我们可以在创建资源时在配置清单中指定,也可以创建好资源以后再使用命令添加标签;有了标签以后,我们后续就可以根据标签来管理对应的资源;一个资源可以拥有多个标签,同时一个标签也可以附加给多个资源;我们可以理解为标签就是用来逻辑的对资源进行分组,拥有相同标签的资源为一组;标签的作用是方便用户管理资源;比如在k8s上运行了几百个pod,我们想要管理功能相同的pod,就可以把具有相似功能的pod附加同一个标签,然后要管理这些pod的时,直接指定拥有指定标签的pod即可。 一、什么是Kubernetes标签 要学习 k8s 标签,需要从以下几个方面来学习。 首先,我们需要知道什么是 k8s 标签。 在 k8s 中,标签(Labels)是附加到 k8s 对象(比如 Pods)上的键值对。 标签的一个示例如下所示: “metadata”:{ “labels”:{ “key1” : ”value1” “key2” : ”value2” } } 标签的作用主要有两点: 一是标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。 二是标签可以用于组织和选择对象的子集。 标签的特点主要有如下三点: 1、每个对象都可以定义一组键值标签。 2、每个键对于给定对象必须是唯一的。 3、标签能够支持高效的查询和监听操作,对于用户界面和命令行是很理想的。 二、设计标签的目的 设计标签的主要目的是使用户能够以松耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。 有如下几个示例标签,例如: 1、在区分发行版本的时候,可以指定: “release” : “canary” “release” : “dev” “release” : “beta” “release” : “stable” …… 2、在定义运行环境时,可以指定: “environment”: “dev” “environment”: “qa” “environment”: “production” …… 三、标签的语法 接着,我们来学习下标签的语法。 1、前缀: 1)前缀是可选的; 2)如果指定,前缀必须是DNS子域:由点“.”分割的一系列DNS标签,总共不超过253个字符,后跟斜杠“/”; 3)如果省略前缀,则假定标签键对用户是私有的。向最终用户对象添加标签的自动系统组件(例如:kube-scheduler、kube-controller-manager、kube-apiserver、kubctl或其他第三方自动化工具)必须指定前缀 2、名称: 1)名称段是必需的 2)必须小于等于63个字符,以字母数字字符“[a-z0-9A-Z]”开头和结尾,带有破折号“—”,下划线“_”,点“.”和之前的字母数字 3、小结:有效的标签值 1)必须为63个字符或更少(可以为空); 2)除非标签值为空,必须以字母数字字符“[a-z0-9A-Z]”开头和结尾; 3)包含破折号“—”,下划线“_”,点“.”和之前的字母数字 示例:是一个有 environment 为 qa,同时 app 为 nginx 标签的 pod 配置文件。 apiVersion:v1 kind:Pod metadata: name:label-demo labels: environment:production app:nginx spec: containers: -name:nginx Image:nginx:1.14.2 Ports: -containerPort:80 四、标签选择运算符 然后,我们来学习下标签选择运算符。 标签选择运算符分为两种: 一种是基于等值的需求: 基于等值或基于不等值的需求允许按标签键和值进行过滤。 可接受的运算符有“=”、“==”、“!=”。 一种是基于集合的需求: 基于集合的标签需求允许你通过一组值来过滤键。 持有三种操作符:“in”、“notin”、“exists”。 最后,我们来学习下如何使用 API 来使用标签。 前面提到的两种标签选择算符都可以通过 REST 客户端用于 list 或者 watch 资源。 基于等值的需求可以使用如下命令来获取 pods。 Kubectl get pods –l environment-production,tier=frontend 基于集合的需求可以使用如下命令来获取 pods。 Kubectl get pods –l ‘environment in (production),tier in (frontend)’ 五、标签的使用 K8S中资源标签label 1、说明 标签label: 资源标志 格式 key=value 可添加删除多个标签 标签选择器 label selector: 用于选择资源 name=name1 name!=name1 name in (name1,name2) name not in (name1,name2) 2、指令 1)帮助: kubectl label --help 2)打标签: pod:kubectl label pods busybox app=busybox node:kubectl label node k8s-node01 k8s-node02 env=test 3)查看: 查看pods为busybox的标签: kubectl get pods busybox --show-labels 查看默认名称空间下所有pod资源的标签: kubectl get pods --show-labels 查看指定名称空间: kubectl get pods -n kube-system --show-labels 4)更新: 加上–overwrite参数修改标签 kubectl label po busybox app=busybox2 -n kube-public --overwrite 5)通过标签筛选: 列出默认名称空间下标签key是app的pod,不显示标签: kubectl get pods -l app 列出默认名称空间下标签key是app、值是busybox的pod,不显示标签: kubectl get pods -l app=busybox 多个筛选条件: kubectl get po -l version!=v1,app=nginx 6)删除: pod:kubectl label po busybox app- -n kube-public node:kubectl label node k8s-node02 env- 3、配置 1)创建label-nginx.yaml apiVersion: v1 kind: Pod metadata: name: nginx namespace: dev labels: version: "1.0.0" env: "test" spec: containers: - image: nginx imagePullPolicy: IfNotPresent name: pod ports: - name: nginx-port containerPort: 80 protocol: TCP 2)创建 kubectl create -f label-nginx.yaml 3)删除 kubectl delete -f label-nginx.yaml 以上就是K8s 标签的介绍。

优秀的个人博客,低调大师

React Native 0.69.2 发布,使用 React 编写原生应用

React Native 0.69.2 现已发布,具体更新内容如下: Changed 为 react v18 compat 设置 react-shallow-renderer v16.15.0 (a39a7c453d) 将 RN CLI 升级到 v8.0.3(28cbd21d21) iOS specific Hermes pod:更改逻辑以使用 hermes 标签正确设置 pod 源(46a9edc854) 修复在 new Blob(blob) 后调用 readAsDataURL 时的 race condition (bd12e41188) 确保在创建发布版本时不安装 Flipper pod(23accbf58d) 详情可查看:https://github.com/facebook/react-native/releases/tag/v0.69.2

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册