【原创】k8s源码分析-----kubectl(1)api.RESTMapper

kubernetes组件_KubeProxy_KubeProxy三种模式和参数解析 kubeProxy 阅读详情

 

本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1460961715

本文csdn博文链接:http://blog.youkuaiyun.com/screscent/article/details/51179485

源码为k8s v1.1.1稳定版本

 

api. RESTMapper是kube-apiserver和kubectl的基础,在讲解kube-apiserver的时候,我们就有简单的讲解api. RESTMapper,但并没有系统的讲解。那么这一章,我们先系统的讲解下

 

1、构建

源码在k8s.io\kubernetes\pkg\api\mapper.go

声明了一个全局变量RESTMapper,并在init函数中初始化了

 

那么什么时候注册呢?

在之前,我们需要看看,group/version 是一个很重要的东西

1.1 版本号注册

我们先看下版本号的注册

 

代码在k8s.io\kubernetes\pkg\api\registered

先读取了环境变量KUBE_API_VERSIONS,一般来说这个设置为空,那就是默认的为"v1,extensions/v1beta1"

 

1.2 GroupMeta

我们再看下groupmeta的保存

代码在k8s.io\kubernetes\pkg\api\latest

groupmeta保持的group的metadata信息

 接下来就是保存group的信息

上面有一个函数,用来注册group

1.3 Scheme

代码在k8s.io\kubernetes\pkg\api\register.go

api下注册了很多types

k8s.io\kubernetes\pkg\api\v1\register.go

v1下注册了很多的types

1.4 注册

代码在k8s.io\kubernetes\pkg\api\install

 

从上面的init函数来看,先注册了“”的一个group信息,然后初始化了GroupVersiongroupVersion,Group:apiutil.GetGroup(groupVersion),Version:apiutil.GetVersion(groupVersion),Codec:runtime.CodecFor(api.Scheme, groupVersion),groupMeta.Versions = versionsgroupMeta.GroupVersions = groupVersionsgroupMeta.SelfLinker = runtime.SelfLinker(accessor) 在之后NewDefaultRESTMapper

 

 
 遍历了所有注册在Scheme的类型,ignoredKinds类型将直接跳过,这里我们要注意两个rootScoped对应的是meta.RESTScopeRoot,其余的对应的是meta.RESTScopeNamespace

2、DefaultRESTMapper

下面我们来分析下RESTMapper的作用代码在k8s.io\kubernetes\pkg\api\meta\restmapper.go在上面mapper调用了meta.NewDefaultRESTMapper


 
 我们看看结构体



 其实从结构体来看,就是保存了一个mapping。这个是这个结构的最主要东西 根据上面构建的流程,最后调用了Add

 

3、功能

那么最后就是mapper的提供的功能了

 

查找version版本

根据version和kind查找相关的信息

最后返回一个结构体,主要的就是相对应的kind包含的所有信息

  

4、总结

首先,注册所有的version版本,用于版本管理。

然后注册了所有的group版本,用于group管理

最后,针对group和version注册了RESTMapper。

 

RESTMapper用于管理所有对象的信息。外部要获取的话,直接通过version,group获取到RESTMapper,然后通过kind类型可以获取到相对应的信息

 

 

 

龚浩华

QQ 月牙寂 道长 29185807

2016年4月18日

 (版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)

 

如果你觉得本文对你有帮助,可以转到你的朋友圈,让更多人一起学习。

第一时间获取文章,可以关注本人公众号:月牙寂道长,也可以扫码关注

 

 

【K8S类型系统】一文梳理 K8S 各类型概念之间的关系(GVK/GVR/Object/Schema/RestMapper) Group 组、Version版本、Namespace 命名空间,这些都很容易理解,都是为了隔离,资源版本隔离(Group、Version)和用户资源隔离(Namespace)Kind 对象类型,如 Kind=Sh 对应 sh 类型文件,Kind=Doc 对应 doc 类型文件Resource 可以理解为 Kind 的含义补充,用于获取真正的资源对象;GVK 专注于类型定义,确定是哪种资源对象,GVR 专注于获取资源对象或对资源对象进行操作; 阅读详情

相关推荐

把性能写进模型里:SAP HANA Schema Design 的存储、索引、分区与 Delta 实战指南

SAP HANA性能优化的核心在于Schema Design决策。本文剖析了关键设计选择:列存(row store)与行存(column store)的应用场景差异,指出列存虽为默认选项但行存更适合高频更新场景;探讨了内存数据库中索引的必要性及隐性成本;分析了水平分区(partitioning)的价值与潜在副作用;揭示了列存delta与main两段式结构的运作原理及其对性能的影响;最后讨论了去范式化(denormalization)的风险与收益平衡。这些设计决策需根据具体业务场景和数据特征进行权衡,才能实现

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1346

【k8s基础篇】k8s基础2之GVK与GVR

参考 初识 Kubernetes API 的组织结构 Kubernetes CRD 系列:Api Server 和 GVK® K8S API核心原理介绍:K8S学习系列5 Groups、Versions 和 Kinds 之间的关系 理解 1 | GVK 和 GVR 是什么? GVK 就是 group、verison、kind GVR 就是 group、version、resource Q1 | 为什么有 kind 和 resouce 两个相似概念 首先我们要明确几个概念: 在编码

叮当猫的喵i 7843

保姆级教程:用Docker快速部署mpromonet/webrtc-streamer实现WebRTC直播(附常见问题解决)

本文提供了一份详细的Docker部署mpromonet/webrtc-streamer的实战指南,帮助用户快速搭建WebRTC直播服务。内容涵盖从环境准备、基础部署到进阶配置与性能调优的全过程,并针对容器网络、视频流配置、跨网访问等常见问题提供了解决方案,旨在实现低延迟的流媒体传输。

dell8的博客 177

sigs.k8s.io controller-runtime系列之四 client分析

简介 之前介绍过sigs.k8s.io controller-runtime系列之三 controller分析sigs.k8s.io controller-runtime-controller 。 本文主要介绍pkg/client的源码分析。 目录结构 interfaces.go Patch接口 是可以应用于Kubernetes对象的补丁 type Patch interface { // Patch的类型(字符串形式 "application/json-patch+json"/"applic

qq_36407557的博客 4930

Webug4.0 打靶笔记

一、Webug 的安装 (1)基本信息 WeBug 名称定义为”我们的漏洞”靶场环境 ,基础环境是基于 PHP/mysql 制作搭建而成,中级环境与高级环境分别都是由互联网漏洞事件而收集的漏洞存在的操作环境。部分漏洞是基于Windows操作系统的漏洞所以将WeBug的web环境都装在了一个纯净版的Windows 2003的虚拟机中。在 webug3.0 发布后的四百多天 226安全团队终于在大年初二发布了 webug 的 4.0 版本。 (2)虚拟机的安装 最新超详细VMware虚拟机下载与安装_隐

m0_60716947的博客 6128

实战指南:如何用DCCRN模型提升语音增强效果(附代码示例)

本文提供了基于DCCRN模型进行语音增强的实战指南。通过深入解析复数网络如何协同处理语音的幅度与相位信息,并附有完整的PyTorch代码实现,帮助开发者从数据准备、模型搭建到训练调优,构建高效的实时语音增强系统,有效提升嘈杂环境下的语音清晰度。

weixin_29054245的博客 479

kubectl proxy 是什么

kubectl proxy 是一个本地的Kubernetes API的反向代理。 通过kubectl,除了可以访问API外,还可以通过API访问POD中的业务。

xiphi_6的专栏 4310

Pyinstaller 打包 Pyzbar 时缺失 DLL 文件的排查与修复指南

本文详细解析了使用Pyinstaller打包Pyzbar库时,因缺失关键DLL文件导致程序闪退的常见问题。文章提供了从问题复现、错误诊断到最终修复的完整解决方案,核心在于通过修改.spec配置文件,手动将缺失的libzbar-64.dll等文件添加到打包过程中,确保生成的可执行文件能独立运行。

wdx012345的博客 504

简单易学的Kubernetes(k8s):架构和源码解读

1▲点击上方"DevOps和k8s全栈技术"关注公众号Kubernetes(K8s)为云原生应用提供了强大的管理和编排能力。本文将深入探讨Kubernetes的架构,解剖其核心组件,以帮助读者更好地理解这个复杂而强大的系统。第一部分:K8S基本概念和架构介绍1. Kubernetes基本概念Pods: 是Kubernetes的最小调度单元,可以包含一个或多个容器。Nodes: 是物理或虚拟机器,...

weixin_38320674的博客 3275

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

利用Python实现纬度加权平均(即NCL中的wgt_areaave)

当处理全球数据的时候,最常见的分析就是全球、北半球平均了,这时候一定要注意要根据纬度等信息进行加权,求加权平均,要不然结果肯定会不准。但是对于Python中,常规的计算包里面是没有的,或许现在有其他包可以实现,也可以告诉我~。

记录基于python语言处理气象问题的一些代码,包括不限于气象数据读取、机器学习和深度学习建模。 5745

【K8s】kubectl proxy

]$ kubectl proxy Starting to serve on 127.0.0.1:8001 ]$ curl http://localhost:8001 { "paths": [ "/api", "/api/v1", "/apis", "/apis/", "/apis/admissionregistration.k8s.io", "/apis/admissionregistration.k8s.io/v1", "/apis/admi

m0_45406092的博客 4054

Agent 操作系统:未来的 Harness 平台

在大模型技术爆发的当下,自主智能体(Agent)已经成为AI原生应用的核心载体,但当前Agent开发面临着碎片化严重、运维难度高、规模化落地难三大核心痛点,就像1970年代没有通用操作系统的裸机编程时代,开发者需要重复造轮子解决底层基础设施问题。本文将深度解析Agent操作系统(Agent OS)作为AI原生时代的底层基础设施的核心定位,以及下一代Harness平台如何将Agent OS与成熟的DevOps、CI/CD、可观测性、成本管理能力深度融合,成为AI原生应用全生命周期管理的统一平台。

软件工程实践的博客 279

Kubernetes基础(四)-Kube-proxy

kube-proxy组件是用来实现service的请求转发,具体实现方式是kube-proxy运行在每个node上,通过watch监听API Server 中service资源的create,update,delete事件,以获取新的Pod 和 vip映射关系,然后通过更新 iptables 规则来实现请求数据的转发,构建并维护各节点路由信息。

sre救赎之路 3221

24、企业治理、风险与合规:精益思维的应用与实践

本文探讨了如何运用精益思维优化企业治理、风险与合规(GRC)流程,分析了职责分离与合规流程的误区,提出了预防性与检测性控制措施的合理搭配,并通过价值流映射、减少合规反馈循环等方法实现流程优化。以Etsy的PCI-DSS实施为例,展示了如何在满足法规要求的同时保持创新活力。文章还强调了构建协作型GRC文化的重要性,并展望了未来GRC的发展趋势,包括数字化转型、全球化风险管理及与可持续发展的结合。

solidity8miner的博客 104

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

K8s 之 kube-scheduler 源码学习

调度器通过 kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。调度器会依据下文的调度原则来做出调度选择。过滤打分过滤阶段会将所有满足 Pod 调度需求的 Node 选出来。例如,PodFitsResources 过滤函数会检查候选 Node 的可用资源能否满足 Pod 的资源请求。在过滤之后,得出一个 Node 列表,里面包含了所有可调度节点;

levena的博客 1554

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Kubernetes源码分析(一)

Kubernetes源码分析,目前还在学习中,全部学习完会重新发布一次

weixin_46253576的博客 2333

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

kubernetes proxy简介

本文解释kubernetes中涉及到的各种proxy。参考文档:https://kubernetes.io/docs/concepts/cluster-administration/proxies/proxy在使用kubernetes时可能会遇到如下几种proxy。1.kubectl proxyruns on a user’s desktop or in a podproxies from a l...

山不转的博客 7803

K8S常用命令

【代码】K8S常用命令。

任立伟的博客 675

k8s源码(一): Pod创建流程

深入k8s源码,学习kubelet创建Pod的流程。

weixin_46322986的博客 3605

K8S源码及定制化系列-源码解读第一步Kubectl(三)

kubectl create命令执行入口cobra库的使用简介。

weixin_42063529的博客 481

K8s源码分析(一)-K8s调度框架及调度器初始化介绍

对K8s调度框架进行了介绍,还介绍了Cobra,并分析了K8s调度器的初始化代码

slipegg的博客 1838

kubectl源码解读

kubectl源码解读kubectl源码解读kubectl 入口函数NewDefaultKubectlCommand() -主函数的执行流程NewKubectlCommand() - 命令command对象的创建NewCmdCreate() - create命令详解RunCreate() -create的执行 kubectl源码解读 kubectl 入口函数 cmd/kubectl/kubectl.go func main() { // 如果不调用rand.Seed,每次重新运行这个main函数,rand

weixin_44726315的博客 1346

Kubernetes源码之kubectl剖析

1.kubectl作用 2.源码模板 3.关键源码剖析

枫 2883

[Kubernetes] kube-proxy 详解

kube-proxy 详解

959 2811

k8s scheduler开发实现(四):源码笔记

k8s v1.23.3版本调度器源码阅读笔记。记录了scheduler启动流程、KubeSchedulerConfiguration.yaml配置文件的加载流程、插件加载流程、具体的调度过程、scheme加载,最后还简单介绍了K8s源码里常用的options机制

cser的博客 754
上一篇: 【原创】k8s源码分析-----kube-proxy(2)ProxyServer
下一篇: 【原创】k8s源码分析-----kubectl(2)Factory
月牙寂
博客等级 码龄18年 171粉丝 87原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值