首页 文章 精选 留言 我的

精选列表

搜索[云数据库 Redis],共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 标签的介绍。

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

Solon 1.8.3 发布,云原生微服务开发框架

相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 ~ 10 倍 qps 高 2~ 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如,90Mb 的变成了 9Mb) 基于 app.name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 关于 Solon Solon 是一个更现代感的应用开发框架,轻量、开放生态型的。支持 Web、Data、Job、Remoting、Cloud 等任何开发场景。 强调,克制 + 简洁 + 开放 + 生态的原则 力求,更小、更少、更快、更自由的体验 目前有近130个生态插件,含盖了日常开发的各种需求: 本次主要更新内容 添加 solon.extend.config 属性配置支持 java -Dsolon.extend.config=./app.yml -jar demoapp.jar 添加 ContextPathFilter 类,摸拟 contextPath 效果 public class App{ public static void main(String[] args){ Solon.start(App.class, args); } } 修复 @Inject("${list}") Listlist ,数据不对的问题 插件 solon.boot.jdkhttp,添加 ssl 支持(尝试替代 jlhttp ;框架性能高 50%) 插件 sqltoy-solon-plugin 升级为 sqltoy 5.2.0 插件 weed3-solon-plugin 升级 weed3 3.4.26 插件 beetlsql-solon-plugin 升级 beetlsql 3.14.4-RELEASE 插件 solon-api, solon-web 默认改用 jdkhttp 添加 server.host 和 server.?.host 支持 添加 StaticMappings::remove 接口 添加 EventBus::unsubscribe 接口 snack3 升为 3.2.29 fastjson 升为 1.2.83 hutool 升为:5.8.1 jetty 升为:9.4.46.v20220331 undertow 升为:2.2.17.Final jackson 升为:2.13.3 gson 升为:2.9.0 进一步了解 Solon 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》 项目地址 gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon website:https://solon.noear.org

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

Solon 1.8.0 发布,云原生微服务开发框架

相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 ~ 10 倍 qps 高 2~ 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如,90Mb 的变成了 9Mb) 基于 app.name 进行注册发现 与 k8s svc 相互对应 支持 Service Mesh 架构部署方案 关于 Solon Solon 是一个更现代感的应用开发框架,轻量、开放生态型的。支持 Web、Data、Job、Remoting、Cloud 等任何开发场景。 强调,克制 + 简洁 + 开放 + 生态的原则 力求,更小、更少、更快、更自由的体验 目前有近130个生态插件,含盖了日常开发的各种需求: 本次主要更新内容 新增 solon.extend.hotplug 插件(提供业务插件 '热插拨' 和 '热管理' 支持) public class DemoApp { public static void main(String[] args) { Solon.start(App.class, args, app -> { //添加待管理的插件 PluginManager.add("add1", "/x/x/x.jar"); PluginManager.add("add2", "/x/x/x2.jar"); app.get("start", ctx -> { //启动插件 PluginManager.start("add1"); ctx.output("OK"); }); app.get("stop", ctx -> { //停止插件 PluginManager.stop("add1"); ctx.output("OK"); }); }); } } 更多介绍看官网的:solon.extend.hotplug 调整 AopContext ,更具隔离性 调整 AopContext::beanOnloaded 参数由 Runnable 改为:Consumer 调整 Plugin::start 参数由 SolonApp 改为:AopContext public class Plugin1Impl implements Plugin { @Override public void start(AopContext context) { //通过当前上下文扫描,具有隔离性 context.beanScan(Plugin1Impl.class); context.beanOnloaded(ctx->{ //回调有上下文信息,方便做多插件可复用的设计 }); } } 修复 @Cache 在函数里有逗号时无法删除缓存的问题 @Controller public class DemoController { /** * 执行结果缓存10秒,使用 key=test_${label} 并添加 test 标签 * */ @Cache(key="test_${label}", tags = "test" , seconds = 10) @Mapping("/cache/") public Object test(int label) { return new Date(); } /** * 执行后,清除 标签为 test 的所有缓存 * */ @CacheRemove(tags = "test") @Mapping("/cache/clear") public String clear() { return "清除成功(其实无效)-" + new Date(); } /** * 执行后,更新 key=test_${label} 的缓存 * */ @CachePut(key = "test_${label}") @Mapping("/cache/clear2") public Object clear2(int label) { return new Date(); } } 修复 Gateway 对默认接口识别失效的问题 @Mapping("/api/v3/app/**") @Component public class ApiGatewayV3 extends UapiGateway { @Override protected void register() { filter(new BreakerFilter()); //融断 before(new StartHandler()); //开始计时 before(new ParamsParseHandler()); //参数解析 before(new ParamsSignCheckHandler(new Md5Encoder())); //参数签名较验 before(new ParamsRebuildHandler(new AesDecoder())); //参数重构 after(new OutputBuildHandler(new AesEncoder())); //输出构建 after(new OutputSignHandler(new Md5Encoder())); //输出签名 after(new OutputHandler()); //输出 after(new EndBeforeLogHandler()); //日志 after(new EndHandler("v3.api.app")); //结束计时 //添加一批具体的接口处理Bean addBeans(bw -> "api".equals(bw.tag())); } } 修复 rocketmq-solon-plugin ,消费异常时仍返回成功的问题 优化 rabbitmq-solon-plugin ,消费异常时的处理 进一步了解 Solon 《想法与架构笔记》 《生态预览》 《与 Spring Boot 的区别?》 《与 Spring Cloud 的区别?》 项目地址 gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon website:https://solon.noear.org

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Rocky Linux

Rocky Linux

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册