kubectl源码分析之version

Elasticsearch 报错 error At least one unigram is required but all tokens were ngrams 【代码】Elasticsearch 报错 error At least one unigram is required but all tokens were ngrams。 阅读详情

 欢迎关注我的公众号:

 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:

istio多集群探秘,部署了50次多集群后我得出的结论

istio多集群链路追踪,附实操视频

istio防故障利器,你知道几个,istio新手不要读,太难!

istio业务权限控制,原来可以这么玩

istio实现非侵入压缩,微服务之间如何实现压缩

不懂envoyfilter也敢说精通istio系列-http-rbac-不要只会用AuthorizationPolicy配置权限

不懂envoyfilter也敢说精通istio系列-02-http-corsFilter-不要只会vs

不懂envoyfilter也敢说精通istio系列-03-http-csrf filter-再也不用再代码里写csrf逻辑了

不懂envoyfilter也敢说精通istio系列http-jwt_authn-不要只会RequestAuthorization

不懂envoyfilter也敢说精通istio系列-05-fault-filter-故障注入不止是vs

不懂envoyfilter也敢说精通istio系列-06-http-match-配置路由不只是vs

不懂envoyfilter也敢说精通istio系列-07-负载均衡配置不止是dr

不懂envoyfilter也敢说精通istio系列-08-连接池和断路器

不懂envoyfilter也敢说精通istio系列-09-http-route filter

不懂envoyfilter也敢说精通istio系列-network filter-redis proxy

不懂envoyfilter也敢说精通istio系列-network filter-HttpConnectionManager

不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册

 

————————————————

type Options struct {//version结构体
	ClientOnly bool
	Short      bool
	Output     string

	discoveryClient discovery.CachedDiscoveryInterface

	genericclioptions.IOStreams
}
func NewOptions(ioStreams genericclioptions.IOStreams) *Options {
	return &Options{//初始化结构体
		IOStreams: ioStreams,
	}

}

// NewCmdVersion returns a cobra command for fetching versions
//创建version命令
func NewCmdVersion(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
	o := NewOptions(ioStreams)//初始化结构体
	cmd := &cobra.Command{//创建cobra命令
		Use:     "version",
		Short:   i18n.T("Print the client and server version information"),
		Long:    "Print the client and server version information for the current context",
		Example: versionExample,
		Run: func(cmd *cobra.Command, args []string) {
			cmdutil.CheckErr(o.Complete(f, cmd))//准备
			cmdutil.CheckErr(o.Validate())//校验
			cmdutil.CheckErr(o.Run())//运行
		},
	}
	cmd.Flags().BoolVar(&o.ClientOnly, "client", o.ClientOnly, "Client version only (no server required).")//client选项
	cmd.Flags().BoolVar(&o.Short, "short", o.Short, "Print just the version number.")//short选项
	cmd.Flags().StringVarP(&o.Output, "output", "o", o.Output, "One of 'yaml' or 'json'.")//output选项
	return cmd
}
//准备
func (o *Options) Complete(f cmdutil.Factory, cmd *cobra.Command) error {
	var err error
	if o.ClientOnly {//如果指定client,返回
		return nil
	}
	o.discoveryClient, err = f.ToDiscoveryClient()//设置discoveryClient
	// if we had an empty rest.Config, continue and just print out client information.
	// if we had an error other than being unable to build a rest.Config, fail.
	if err != nil && !clientcmd.IsEmptyConfig(err) {
		return err
	}
	return nil
}

// Validate validates the provided options
func (o *Options) Validate() error {//校验
	if o.Output != "" && o.Output != "yaml" && o.Output != "json" {//输出格式必须是空,yaml或json
		return errors.New(`--output must be 'yaml' or 'json'`)
	}

	return nil

}
//运行
func (o *Options) Run() error {
	var (
		serverVersion *apimachineryversion.Info
		serverErr     error
		versionInfo   Version
	)

	clientVersion := version.Get()//获取客户端版本
	versionInfo.ClientVersion = &clientVersion//设置versionInfo

	if !o.ClientOnly && o.discoveryClient != nil {//如果非clientonly
		// Always request fresh data from the server
		o.discoveryClient.Invalidate()//使缓存失效
		serverVersion, serverErr = o.discoveryClient.ServerVersion()//获取服务端版本
		versionInfo.ServerVersion = serverVersion//设置versionInfo
	}

	switch o.Output {//判断输出格式
	case "":// 如果是空
		if o.Short {//如果指定了short
			fmt.Fprintf(o.Out, "Client Version: %s\n", clientVersion.GitVersion)//打印client版本
			if serverVersion != nil {
				fmt.Fprintf(o.Out, "Server Version: %s\n", serverVersion.GitVersion)//打印服务端版本
			}
		} else {
			fmt.Fprintf(o.Out, "Client Version: %s\n", fmt.Sprintf("%#v", clientVersion))//打印client版本
			if serverVersion != nil {
				fmt.Fprintf(o.Out, "Server Version: %s\n", fmt.Sprintf("%#v", *serverVersion))//打印服务端版本
			}
		}
	case "yaml"://如果是yaml
		marshalled, err := yaml.Marshal(&versionInfo)//把obj转成yaml
		if err != nil {
			return err
		}
		fmt.Fprintln(o.Out, string(marshalled))//打印yaml
	case "json"://如果是json
		marshalled, err := json.MarshalIndent(&versionInfo, "", "  ")//把obj转成json
		if err != nil {
			return err
		}
		fmt.Fprintln(o.Out, string(marshalled))//打印json
	default:
		// There is a bug in the program if we hit this case.
		// However, we follow a policy of never panicking.
		return fmt.Errorf("VersionOptions were not validated: --output=%q should have been rejected", o.Output)//报错
	}

	return serverErr
}

k8s use-context是什么 kubectl的命令用于在 Kubernetes 集群中切换上下文(context),从而方便地在多个集群或命名空间之间进行操作。一个上下文定义了kubectl使用的和的组合。 阅读详情

相关推荐

MCP协议实战:构建企业级AI模型控制中枢

Model Control Protocol(MCP)是一种面向大模型服务治理的标准化控制协议,核心解决多模型、多工具、多业务方场景下的统一调度、策略管控与语义路由问题。其原理基于能力契约(Capability Contract)与约束解析引擎,通过工具注册中心实现模型服务的主动报备与生命周期管理,并依托gRPC强类型IDL保障跨语言、低延迟、高可靠的服务交互。技术价值在于将AI服务从‘硬编码适配’升级为‘协议驱动治理’,显著提升可审计性、灰度发布效率与SLO保障能力。典型应用于金融风控、电商智能客服、医疗

love android 440

k8s实战之kubectl

本课程将详细介绍k8s所有命令,以及命令的go源码分析,学习知其然,知其所以然

Kimi API协议层解构:从SDK源码读懂大模型服务调用原理

大模型API调用不是简单发请求,而是理解其底层通信协议的技术实践。本文围绕认证签名、上下文管理、流式响应(SSE)、错误码体系与Token计数等核心机制展开,揭示Kimi等主流大模型服务在真实生产环境中的工程实现逻辑——包括动态HMAC签名构造、128K上下文的智能裁剪策略、双重JSON编码的SSE解析规则,以及429熔断的三级限流本质。这些内容直击开发者在集成AI能力时高频遭遇的‘答案截断’‘响应卡顿’‘401签名失败’等顽疾,适用于需将大模型稳定接入客服、教育、知识库等业务系统的工程师与技术负责人。关键

weixin_34289454的博客 388

helm源码分析之pull

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。 腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518 第二个视频发布https://edu.csdn.net/c..

mark's technic world 1370

Codex CLI Skills实战指南:从本地命令行到智能开发代理

Skills 是大模型本地化开发工具中实现‘可执行智能’的核心抽象,它将文件读写、Git 操作、Shell 执行等工程动作封装为带输入/输出契约的可编程接口,弥补了纯语言模型在确定性、安全性与环境感知上的根本缺陷。相比泛化的AI编码助手,Codex CLI 的 Skills 机制通过分层设计(基础交互层、工程环境层、领域增强层)和可组合调用,支撑起PR生成、错误诊断等端到端工作流。本文聚焦中高级开发者真实场景,详解 Skills 的选型逻辑、跨平台安装配置、高频报错排查及 Superpower 编排方法,助

ithome 474

.NET技术博客的深度实践:从Span<T>到程序员成长路径

Span<T>是.NET中实现零分配内存操作的核心类型,其本质是栈上管理的内存视图,依赖JIT内联与内存布局优化实现高性能;理解其原理需深入CLR行为、IL指令及GC交互机制。这类底层技术价值不仅在于性能提升,更支撑高并发、低延迟场景下的系统稳定性,如实时物流调度、金融交易中间件等。而真正掌握Span<T>,离不开对真实故障归因、跨版本兼容性验证和团队协作认知的同步演进——这正是面向一线.NET从业者的深度技术博客所承载的技术成长路径。

diedangxiang4092的博客 430

kubectl 源码分析 -- version子命令

kubectl version代码分析

oneslide 855

Kubernetes Kubectl top 命令

kubectl top命令可显⽰节点和Pod对象的资源使⽤信息,它依赖于集群中的资源指标API来收集各项指标数据。它包含有node和pod两个⼦命令,可分别⽤于显⽰Node对象和Pod对象的相关资源占⽤率。,例如下⾯显⽰所有节点的资源占⽤状况的结果中显⽰了各节点累计CPU资源占⽤时长及百分⽐,以及内容空间占⽤量及占⽤⽐例。⽽名称空间级别的Pod对象资源占⽤率的使⽤⽅式会略有不同,使⽤时,⼀般应该限定名称空间及使⽤标签选择器过滤出⽬标Pod对象。列出Node资源占⽤率命令的语法格式为。

专注基础架构领域 2551

kubectl 源码分析之get

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。 腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518 第二个视频发布https://edu.csdn.net/c..

mark's technic world 781

RT-Thread Studio使用笔记(四):带片外Flash(W25Q128)的OTA(YModem)

前言 在学习OTA之前,请先参考上两篇博客写的关于SPI设备及W25Q128的使用方法,传送门: https://blog.csdn.net/tigerots/article/details/107423633 https://blog.csdn.net/tigerots/article/details/107933991 如何使用OTA 一. 制作BootLoader 打开Bootloader 在线获取地址,注册,并根据RT-thread官方文档生成BootLoader,官方文档已经写的很清楚,再此

tigerots的专栏 4010

RseQC实战指南:从安装到RNA-Seq数据质控全流程解析

本文提供了一份详尽的RseQC实战指南,涵盖从安装配置到RNA-Seq数据质控的全流程。文章重点解析了RseQC作为专业质控工具的核心价值,手把手指导如何通过Conda或pip完成安装,并深入讲解了bam_stat.py、geneBody_coverage.py等关键模块的使用方法与结果解读技巧,帮助用户有效评估RNA完整性、文库构建质量及链特异性,确保下游分析的可靠性。

weixin_29200741的博客 204

kubectl源码分析之create priorityclass

发布一个k8s部署视频:https://edu.csdn.net/course/detail/26967 课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。 腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518 第二个视频发布https://edu.csdn.net/c..

mark's technic world 288

告别黑盒:深入解析西部数据UFS芯片的44个SMART健康参数(附高通XBL读取源码)

本文深入解析西部数据UFS芯片的44个SMART健康参数,结合高通XBL启动加载层源码,提供了一套完整的健康状态诊断方法论。从SCSI命令层封装到数据结构映射,详细介绍了如何在高通平台早期启动阶段捕获UFS健康状态,帮助工程师实现预测性维护。

weixin_30600197的博客 427

Kubernetes 源码分析(1)-Resource和API

本文是一个系列文章,以学习为目的,对 kubernetes 源码进行分析,意在可以更好的去理解 kuberbetes 基本原理。本系列文章中使用的版本为主分支(https://github...

weixin_46073333的博客 602

利用gprMax与Matlab实现SFCW雷达信号的高效仿真与优化

本文详细介绍了如何结合gprMax与Matlab实现SFCW雷达信号的高效仿真与优化。通过利用gprMax获取地下场景的冲激响应,并在Matlab中运用卷积与信号处理技术,可大幅提升SFCW雷达系统仿真的效率与灵活性,为探地雷达研究与设计提供强大工具。

book8的博客 709

论文必备 - YOLO26热力图可视化,支持指定模型,指定显示层,设置置信度,以及9种可视化实现方式

本文带来的是YOLO26热力图可视化功能,支持指定模型,指定显示层,设置置信度,以及9种可视化实现方式。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上,以便对模型的有效性和合理性进行评估。例如Centralized Feature Pyramid for Object Detection这篇文章中展示的,就很能够表达作者改进后的模型相比之前模型的优越性。在项目

Limiiiing的博客 434

【kubernetes v1.21】(kube-apiserver 3)kube-apiserver Admission Control 与 CRD 超深度分析

Part 3: kube-apiserver Admission Control 与 CRD 超深度分析

zhonglinzhang 73

YOLOv9改进,YOLOv9添加CBAM注意力机制

CBAM是一个简单而有效的注意力模块,用于前馈卷积神经网络。给定一个中间特征图,我们的模块按顺序推断两个独立维度(通道和空间)的注意力图,然后将注意力图乘以输入特征图以进行自适应特征细化。由于 CBAM 是一个轻量级的通用模块,因此它可以无缝集成到任何 CNN 架构中,开销可以忽略不计,并且可以与基础 CNN 一起进行端到端训练。论文链接:(CBAM论文)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 859

突破AWX Operator部署困境:从日志分析到数据库修复的全栈排障指南

作为Kubernetes环境中Ansible自动化的核心组件,AWX Operator的部署故障常常让管理员陷入困境: - operator日志中充斥着模糊的错误信息 - PostgreSQL数据库初始化失败却找不到具体原因 - Pod状态显示Running但AWX界面始终无法访问 - 调试配置修改后问题依旧反复出现 本文将系统梳理AWX Operator故障排查方法论,通过12个实战场

gitblog_00817的博客 436

Oracle EBS和华为MetaERP在会计科目(COA)设计上的观察非常精准。这两种设计确实代表了两种截然不同的系统架构思想,我们可以从设计哲学、优劣对比和演进关系三个方面进行深入分析。

OracleEBS与华为MetaERP的COA设计对比分析 OracleEBS采用弹性域架构,通过固定段数字符串实现多维度核算,强调稳定性和全球统一标准,但修改成本高、扩展性受限。华为MetaERP采用解耦架构,将核算单元、自然科目和核算维度分离,支持动态扩展和灵活调整,更适合业务快速变化的企业。 OracleEBS优势在于强一致性和成熟稳定,劣势是灵活性差;华为MetaERP优势是极致灵活性,劣势是对管理要求高。两者代表了不同时代的企业软件设计理念:OracleEBS适合标准化需求,MetaERP则面向快

金牌架构师 433

scratch绘制旋转彩球 2023年9月电子学会图形化编程scratch编程等级考试四级真题和答案解析

​ scratch绘制旋转彩球 2023年9月电子学会图形化编程Scratch等级考试四级真题 一、题目要求 1、准备工作 (1)删除小猫角色,从角色库选择Ball角色; (2)默认空白背景。 ​

青少年编程学习指导 1369

一文了解如何源码编译Rainbond基础组件

Rainbond 主要由以下三个项目组成,参考官网详细 技术架构 业务端 Rainbond-UI https://github.com/goodrain/rainbond-ui Rainbond-Console https://github.com/goodrain/rainbond-console Rainbond-UI 和 Rainbond-Console 合起来构成了业务层。业务层是前后端分离模式。UI是业务层的前端代码,Console是业务层的后端代码。 集群端 Rainbond https:

Mrex326428的博客 1040

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

K8s v1.31 新特性:ImageVolume,允许将镜像作为 Volume 进行挂载

1.GPU 环境搭建指南:使用 GPU Operator 加速 Kubernetes GPU 环境搭建2.自定义资源支持:K8s Device Plugin 从原理到实现3.在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析4.使用 NodeLocalDNS 提升集群 DNS 性能和可靠性5.基于 Admission Webhook 实现 Pod DNSConfig 自动注入6.

weixin_30021053的博客 84

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java大厂面试实战:Spring Boot与分布式系统设计

在当今的Java技术生态中,Spring Boot作为微服务开发的事实标准,其自动配置原理和条件装配机制是面试中的高频考点。理解@Conditional系列注解如何实现Bean的按需加载,以及外部化配置的优先级处理,是构建健壮应用的基础。分布式系统中,消息队列如Kafka的可靠性传递和事务一致性设计,结合Redis的高性能缓存与分布式锁机制,构成了高并发场景下的核心技术组合。这些技术在电商秒杀、订单处理等实际业务场景中发挥着关键作用,例如通过Redis+Lua保证原子性操作,或利用Kafka实现最终一致性事

weixin_30819085的博客 300

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

.NET技术博客的深度写作方法论:从源码到生产实践

.NET作为成熟的企业级开发平台,其技术传播长期面临版本漂移、原理黑箱与业务脱节三大挑战。理解.NET Runtime底层机制(如IL指令、GC代际行为、async/await状态机)是构建系统性认知的前提;而真实问题驱动的内容生产(如HttpClient连接池泄漏、LOH碎片化、配置绑定陷阱)则让知识具备可验证性与工程穿透力。技术价值不仅在于解释‘怎么用’,更在于揭示‘为什么这样设计’和‘不这样做的代价’,从而支撑架构决策。典型应用场景覆盖微服务治理、云原生部署、高并发中间件调优及遗留系统现代化迁移。本文

世范水晶 190

【亲测有效】机器人学课件难啃?这份华中科技大学PPT把运动学讲到运动规划一次讲清

如果你读《机器人学导论》时总卡在雅可比矩阵(描述机器人关节运动与末端位姿关系的矩阵)的推导上,或者看完轨迹规划还是似懂非懂,这套华中科技大学的机器人学课件正好先把前几章的直觉补回来,再把核心概念一页页讲透。 ## 你将拿到什么 - 覆盖面:从运动学、动力学到轨迹规划、运动控制、导航定位与运动规划,这套华中科技大学机器人学PPT把一学期核心内容都装进去了📐 - 深度:不止贴公式,理论原理逐页展

gitblog_00171的博客 870
上一篇: kubectl源码分析之plugin list
下一篇: kubectl源码分析之config view
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值