kubectl 源码分析之config set-cluster

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 createClusterOptions struct {//set-cluster结构体
	configAccess          clientcmd.ConfigAccess
	name                  string
	server                cliflag.StringFlag
	insecureSkipTLSVerify cliflag.Tristate
	certificateAuthority  cliflag.StringFlag
	embedCAData           cliflag.Tristate
}
//创建set-cluster命令
func NewCmdConfigSetCluster(out io.Writer, configAccess clientcmd.ConfigAccess) *cobra.Command {
	options := &createClusterOptions{configAccess: configAccess}//初始化结构体

	cmd := &cobra.Command{//创建cobra命令
		Use:                   fmt.Sprintf("set-cluster NAME [--%v=server] [--%v=path/to/certificate/authority] [--%v=true]", clientcmd.FlagAPIServer, clientcmd.FlagCAFile, clientcmd.FlagInsecure),
		DisableFlagsInUseLine: true,
		Short:                 i18n.T("Sets a cluster entry in kubeconfig"),
		Long:                  createClusterLong,
		Example:               createClusterExample,
		Run: func(cmd *cobra.Command, args []string) {
			cmdutil.CheckErr(options.complete(cmd))//准备
			cmdutil.CheckErr(options.run())//运行
			fmt.Fprintf(out, "Cluster %q set.\n", options.name)//打印结果
		},
	}

	options.insecureSkipTLSVerify.Default(false)//是否跳过tls校验

	cmd.Flags().Var(&options.server, clientcmd.FlagAPIServer, clientcmd.FlagAPIServer+" for the cluster entry in kubeconfig")//server选项
	f := cmd.Flags().VarPF(&options.insecureSkipTLSVerify, clientcmd.FlagInsecure, "", clientcmd.FlagInsecure+" for the cluster entry in kubeconfig")//insecure-skip-tls-verify选项
	f.NoOptDefVal = "true"
	cmd.Flags().Var(&options.certificateAuthority, clientcmd.FlagCAFile, "Path to "+clientcmd.FlagCAFile+" file for the cluster entry in kubeconfig")/certificate-authority选项
	cmd.MarkFlagFilename(clientcmd.FlagCAFile)
	f = cmd.Flags().VarPF(&options.embedCAData, clientcmd.FlagEmbedCerts, "", clientcmd.FlagEmbedCerts+" for the cluster entry in kubeconfig")//embedCAData选项
	f.NoOptDefVal = "true"

	return cmd
}
func (o *createClusterOptions) complete(cmd *cobra.Command) error {//准备
	args := cmd.Flags().Args()//获取参数
	if len(args) != 1 {//参数不为1个报错
		return helpErrorf(cmd, "Unexpected args: %v", args)
	}

	o.name = args[0]//设置cluster名称
	return nil
}
func (o createClusterOptions) run() error {//运行
	err := o.validate()//校验
	if err != nil {
		return err
	}

	config, err := o.configAccess.GetStartingConfig()//获取config
	if err != nil {
		return err
	}

	startingStanza, exists := config.Clusters[o.name]//判断cluster是否存在
	if !exists {//不存在,创建cluster
		startingStanza = clientcmdapi.NewCluster()
	}
	cluster := o.modifyCluster(*startingStanza)//修改cluster
	config.Clusters[o.name] = &cluster//设置cluster

	if err := clientcmd.ModifyConfig(o.configAccess, *config, true); err != nil {//修改配置
		return err
	}

	return nil
}
func (o createClusterOptions) validate() error {//校验
	if len(o.name) == 0 {//名称不能为空
		return errors.New("you must specify a non-empty cluster name")
	}
	if o.insecureSkipTLSVerify.Value() && o.certificateAuthority.Value() != "" {
//不能同时指定insecureSkipTLSVerify和certificateAuthority
		return errors.New("you cannot specify a certificate authority and insecure mode at the same time")
	}
	if o.embedCAData.Value() {//如果embed-data为true
		caPath := o.certificateAuthority.Value()//certificateAuthority路径
		if caPath == "" {//路径为空报错
			return fmt.Errorf("you must specify a --%s to embed", clientcmd.FlagCAFile)
		}
		if _, err := ioutil.ReadFile(caPath); err != nil {//判断路径是否可读取
			return fmt.Errorf("could not read %s data from %s: %v", clientcmd.FlagCAFile, caPath, err)
		}
	}

	return nil
}
//修改cluster
func (o *createClusterOptions) modifyCluster(existingCluster clientcmdapi.Cluster) clientcmdapi.Cluster {
	modifiedCluster := existingCluster

	if o.server.Provided() {//如果指定了--server,则设置cluster的server
		modifiedCluster.Server = o.server.Value()
	}
	if o.insecureSkipTLSVerify.Provided() {//如果设置了insecureSkipTLSVerify
		modifiedCluster.InsecureSkipTLSVerify = o.insecureSkipTLSVerify.Value()//设置insecureSkipTLSVerify
		// Specifying insecure mode clears any certificate authority
		if modifiedCluster.InsecureSkipTLSVerify {// 如果insecureSkipTLSVerify为true
			modifiedCluster.CertificateAuthority = ""//CertificateAuthority 设为空
			modifiedCluster.CertificateAuthorityData = nil//CertificateAuthorityData 设为nil
		}
	}
	if o.certificateAuthority.Provided() {//如果certificateAuthority有值
		caPath := o.certificateAuthority.Value()//获取路径
		if o.embedCAData.Value() {// 如果embed-data为true
			modifiedCluster.CertificateAuthorityData, _ = ioutil.ReadFile(caPath)//设置CertificateAuthorityData为读取的值
			modifiedCluster.InsecureSkipTLSVerify = false//InsecureSkipTLSVerify 设为false
			modifiedCluster.CertificateAuthority = ""//CertificateAuthority 设为空
		} else {
			caPath, _ = filepath.Abs(caPath)//获取绝对路径
			modifiedCluster.CertificateAuthority = caPath//CertificateAuthority 设为路径
			// Specifying a certificate authority file clears certificate authority data and insecure mode
			if caPath != "" {//路径不为空
				modifiedCluster.InsecureSkipTLSVerify = false//InsecureSkipTLSVerify 设为false
				modifiedCluster.CertificateAuthorityData = nil//CertificateAuthorityData 设为nil
			}
		}
	}

	return modifiedCluster
}

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

相关推荐

Kubernetes修改clusternetwork网段

概述 很多搭建过kubernetes集群的人都知道在搭建集群前需要做好充足的准备工作,其中就包括对pod网段和service网段的划分,还包括对每台node上的子网段大小的设置,但如果集群搭建完发现之前划分的网段有问题咋办?能改吗? 问题展示 我在实际使用中就遇到一个问题,我首次搭建集群时划分的网段是这样的: pod网段:10.129.96.0/20 service网段:10.130.96.0/2...

炮哥技术分享 6981

k8s实战之kubectl

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

Gemini 3.5 Flash长程Agentic能力深度实测与工程化落地指南

Agentic AI并非简单多步调用,而是指大模型在复杂任务中持续维护状态、自主规划工具链、闭环验证结果的系统性能力。其核心挑战在于上下文一致性、运行时语义理解及MCP等外部工具协同——这直接决定AI能否替代工程师完成端到端工程任务。当前主流模型如Gemini 3.5 Flash已在17步以上长程推理中展现稳定性,但仍在自我调试、符号与运行时语义对齐、跨协议状态感知等关键维度存在瓶颈。本文基于VS Code实战场景,解析Agentic工作流构建方法、GEMINI.md上下文建模技巧、MCP服务器选型策略及真

weixin_33725239的博客 410

helm源码分析之pull

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

mark's technic world 1370

技术人如何用博客构建个人知识图谱:从记录到复用

技术博客本质上是一种面向工程实践的知识管理方式,其核心在于将临时性工作记忆固化为可检索、可关联、可演进的长期知识资产。基于认知科学中的遗忘曲线原理,持续记录真实问题场景、环境快照与决策链条,能有效对抗技术细节的快速衰减;通过结构化标签与时间戳锚定,形成带上下文的个人知识图谱,显著提升问题复现与跨项目迁移效率。这种以‘Record’为驱动的技术写作范式,已广泛应用于Kubernetes排障、MySQL死锁分析、Nginx配置调试等高频实战场景,成为中高级开发者构建第二大脑的关键基础设施。

天下无双 395

Kubernetes Kubectl top 命令

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

专注基础架构领域 2551

kubectl源码分析之config delete-cluster

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

mark's technic world 471

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 455

kubectl源码分析之config get-clusters

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

mark's technic world 422

Fluent实战——残差震荡分析与收敛优化策略

本文深入探讨了Fluent仿真中残差震荡的成因与优化策略。残差震荡是流场物理或数值问题的关键信号,文章系统分析了网格质量、边界条件、物理模型非定常性及求解设置四大主因,并提供了库朗数与松弛因子的调参心法,以及针对超音速流、共轭传热等典型场景的实战优化方案,旨在帮助用户有效提升计算收敛性与结果可靠性。

w1x2y3的博客 313

为什么你的Mac蓝牙总断连?深入解析硬件干扰与系统设置避坑

本文深入解析Mac蓝牙频繁断连的原因,包括硬件干扰(如WiFi同频干扰、USB设备电磁干扰)和系统设置问题,并提供详细的优化方案和诊断工具(如blueutil)使用指南,帮助用户有效解决蓝牙稳定性问题。

ik67890123的博客 683

juju reactive charm (by quqi99)

sudo snap install charm --classic mkdir -p /bak/work/charms/layers export JUJU_REPOSITORY=/bak/work/charms export LAYER_PATH=$JUJU_REPOSITORY/layers cd $LAYER_PATH charm create simple cd simple sudo ...

技术并艺术着 8742

吃透 10GBASE-T1 PHY:从 PMA 原理到线束 PCB 工程落地全指南(下)

本文详细阐述了MultiGBASE-T1(2.5G/5G/10G)链路段的关键电气规范要求。重点包括:1)插入损耗、差分特性阻抗(100Ω)及不同速率下的回波损耗指标;2)耦合衰减与屏蔽衰减(≥45dB)的测试方法;3)外来串扰噪声(PSANEXT和PSAACRF)的功率限制要求。对于连接器和线缆设计,分别规定了独立通信信道(SCC)与耦合通信信道(多通道)场景下的测试指标,涵盖连接器、裸线缆、线缆组件及完整链路的性能参数。所有规范均基于IEC标准测试方法,确保在汽车环境下的可靠传输。

一只豌豆象的博客 106

从一次超时配置踩坑说起:SpringBoot整合Redis时,spring.redis.timeout=0到底意味着什么?

本文深入探讨了SpringBoot整合Redis时配置`spring.redis.timeout=0`的实际含义及其影响。通过对比Lettuce和Jedis客户端的架构差异,揭示了为何Lettuce在超时设置为0时会立即抛出`io.lettuce.core.RedisConnectionException`,并提供了生产环境中的最佳配置实践和故障排查方法。

weixin_30781775的博客 464

电磁兼容(EMC)整改案例(七):EFT测试失败都是IC悬空引脚惹的祸

无论任何时候,为了避免这些问题,通常建议对悬空的IO口进行适当的配置,比如设置为强推挽输出低电平、输入带上拉或下拉电阻等,以减少外部电路对IO管脚状态的影响,并提高系统的稳定性和可靠性.

linkking27的博客 1032

RT-DETR算法优化改进:轻量级上采样CARAFE算子 | 注意力机制大作战

上采样操作CARAFE,具有感受野大、内容感知、轻量级、计算速度快等优点,引入RT-DETR二次创新;1)代替Upsample进行使用;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1267

K3s 轻量级 Kubernetes 源码导读:如何读懂仓库、一条命令跑起来并改对配置

K3s 是官方认证 Kubernetes 认证(CKA)生态中体积最小的发行版,把控制面、容器运行时、调度器全部打进一个二进制,适合边缘节点、IoT 设备和资源受限服务器。这篇文章带你过一遍 k3s 仓库:代码在哪、怎么启动、配置到底落在哪里。 ## 先搞懂它:K3s 和完整 Kubernetes 差在哪 标准 Kubernetes 部署要拉起 etcd、kube-apiserver、sche

gitblog_00634的博客 374

ROS 之 使用yocs_velocity_smoother对机器人速度进行限制

yocs_velocity_smoother是一个速度、加速度限制器,用来防止robot navigation的速度/转速过快,加速度/快减速过大。Bound incoming velocity messages according to robot velocity and acceleration limits. The velocity smoother nodelet runs together with the kobuki_node to apply robot’s velocity and .

https://shixuebin.gitee.io/hexo-blog/ 2625

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

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

gitblog_00171的博客 870

【AI Agent系列】【MetaGPT】9. 一句话订阅专属信息 - 订阅智能体进阶,实现一个更通用的订阅智能体(2)

订阅智能体进阶(2)。不用爬虫,直接提取网页信息。从RunSubscription分离出AddSubscriptionTask的action,并且让SubscriptionRunner单独运行。

同学小张的博客 1589

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

zhonglinzhang 73

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OpenClaw:基于云原生与算子化设计的LLM应用开源框架深度解析

在大型语言模型(LLM)应用开发领域,如何将模型能力高效、稳定地转化为生产级应用是核心挑战。这涉及到模型服务化、API接口封装、上下文管理等一系列工程化问题。OpenClaw作为一个新兴的开源框架,其设计理念深刻回应了这些挑战。它采用云原生架构,将应用组件微服务化,并通过声明式配置实现基础设施即代码,提升了系统的弹性伸缩与可维护性。其最具创新性的核心抽象是“技能即算子”,借鉴数据流编程思想,将每个功能单元标准化为具有明确输入输出的算子,从而实现工作流的可视化编排与高效组合。这种设计为构建高并发、复杂的企业级

weixin_33743880的博客 442

Devexpress16.2.6破解工具

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

3.本地单机架构minikube

搭建minikube

weixin_47252600的博客 1148

通过 kubectl 查看 K8s 内节点、Pod 资源使用情况

kubectl describe node -n ${namespace} 例如:我要查看生产环境下所有节点的资源分配情况(生产环境的 namespace 为 product) kubectl describe node -n product

cab5的博客 8万+

【Kubernetes】kubectl top pod 异常?

kubectl top pod 异常?本文手把手解决,跟着小涛一块试试吧~

http://DBAtao.cn/ 1万+

centos 安装swoole问题

centos安装swoole

weixin_43946021的博客 722
上一篇: kubectl源码分析之config view
下一篇: kubectl源码分析之config set-credentials
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、付费专栏及课程。

余额充值