kubectl 源码之create service

kubernetes-service详解 阅读详情

发布一个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/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件

第四个课程发布:https://edu.youkuaiyun.com/course/detail/28488

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

//create service cobra命令
func NewCmdCreateService(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
	cmd := &cobra.Command{//创建cobra命令
		Use:     "service",
		Aliases: []string{"svc"},
		Short:   i18n.T("Create a service using specified subcommand."),
		Long:    "Create a service using specified subcommand.",
		Run:     cmdutil.DefaultSubCommandRun(ioStreams.ErrOut),
	}
	cmd.AddCommand(NewCmdCreateServiceClusterIP(f, ioStreams))//clusterip子命令
	cmd.AddCommand(NewCmdCreateServiceNodePort(f, ioStreams))//NodePort子命令
	cmd.AddCommand(NewCmdCreateServiceLoadBalancer(f, ioStreams))//loadBlancer子命令
	cmd.AddCommand(NewCmdCreateServiceExternalName(f, ioStreams))//externalName子命令

	return cmd
}
type ServiceClusterIPOpts struct {//xlusterip选项
	CreateSubcommandOptions *CreateSubcommandOptions
}
//创建create svc clusterip命令
func NewCmdCreateServiceClusterIP(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
	options := &ServiceClusterIPOpts{//初始化选项
		CreateSubcommandOptions: NewCreateSubcommandOptions(ioStreams),
	}

	cmd := &cobra.Command{//创建cobra命令
		Use:                   "clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run]",
		DisableFlagsInUseLine: true,
		Short:                 i18n.T("Create a ClusterIP service."),
		Long:                  serviceClusterIPLong,
		Example:               serviceClusterIPExample,
		Run: func(cmd *cobra.Command, args []string) {
			cmdutil.CheckErr(options.Complete(f, cmd, args))//准备运行
			cmdutil.CheckErr(options.Run())//运行命令
		},
	}

	options.CreateSubcommandOptions.PrintFlags.AddFlags(cmd)//设置print flag选项

	cmdutil.AddApplyAnnotationFlags(cmd)//设置save-config选项
	cmdutil.AddValidateFlags(cmd)//设置validate选项
	cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceClusterIPGeneratorV1Name)//设置generator选项
	addPortFlags(cmd)//设置port选项
	cmd.Flags().String("clusterip", "", i18n.T("Assign your own ClusterIP or set to 'None' for a 'headless' service (no loadbalancing)."))//设置clusterIp选项
	return cmd
}
//运行clusterip complete方法
func (o *ServiceClusterIPOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
	name, err := NameFromCommandArgs(cmd, args)//获取资源名称
	if err != nil {
		return err
	}

	var generator generate.StructuredGenerator
	switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
	case generateversioned.ServiceClusterIPGeneratorV1Name://获取generator选项,并判断
		generator = &generateversioned.ServiceCommonGeneratorV1{//构造generator对象
			Name:      name,
			TCP:       cmdutil.GetFlagStringSlice(cmd, "tcp"),
			Type:      v1.ServiceTypeClusterIP,
			ClusterIP: cmdutil.GetFlagString(cmd, "clusterip"),
		}
	default:
		return errUnsupportedGenerator(cmd, generatorName)
	}

	return o.CreateSubcommandOptions.Complete(f, cmd, args, generator)//运行createSubcommandOption的complete
}
type ServiceNodePortOpts struct {//nodePort选项
	CreateSubcommandOptions *CreateSubcommandOptions
}
//创建nodeport命令
func NewCmdCreateServiceNodePort(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
	options := &ServiceNodePortOpts{//初始化选项
		CreateSubcommandOptions: NewCreateSubcommandOptions(ioStreams),
	}

	cmd := &cobra.Command{//创建cobra命令
		Use:                   "nodeport NAME [--tcp=port:targetPort] [--dry-run]",
		DisableFlagsInUseLine: true,
		Short:                 i18n.T("Create a NodePort service."),
		Long:                  serviceNodePortLong,
		Example:               serviceNodePortExample,
		Run: func(cmd *cobra.Command, args []string) {
			cmdutil.CheckErr(options.Complete(f, cmd, args))//准备运行
			cmdutil.CheckErr(options.Run())//运行命令
		},
	}

	options.CreateSubcommandOptions.PrintFlags.AddFlags(cmd)//设置print flag选项

	cmdutil.AddApplyAnnotationFlags(cmd)//设置save-config选项
	cmdutil.AddValidateFlags(cmd)//设置validate选项
	cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceNodePortGeneratorV1Name)//设置generator选项
	cmd.Flags().Int("node-port", 0, "Port used to expose the service on each node in a cluster.")//设置node-prot选项
	addPortFlags(cmd)//设置tcp选项
	return cmd
}
//运行nodeport的complete方法
func (o *ServiceNodePortOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
	name, err := NameFromCommandArgs(cmd, args)//获取名称
	if err != nil {
		return err
	}

	var generator generate.StructuredGenerator
	switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
	case generateversioned.ServiceNodePortGeneratorV1Name://获取generator选项并判断
		generator = &generateversioned.ServiceCommonGeneratorV1{//构造generator对象
			Name:      name,
			TCP:       cmdutil.GetFlagStringSlice(cmd, "tcp"),
			Type:      v1.ServiceTypeNodePort,
			ClusterIP: "",
			NodePort:  cmdutil.GetFlagInt(cmd, "node-port"),
		}
	default:
		return errUnsupportedGenerator(cmd, generatorName)
	}

	return o.CreateSubcommandOptions.Complete(f, cmd, args, generator)//运行createSubcommandOption的complete方法
}
type ServiceLoadBalancerOpts struct {//loadbalancer选项
	CreateSubcommandOptions *CreateSubcommandOptions
}
//创建loadbalancer命令
func NewCmdCreateServiceLoadBalancer(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
	options := &ServiceLoadBalancerOpts{//初始化选项
		CreateSubcommandOptions: NewCreateSubcommandOptions(ioStreams),
	}

	cmd := &cobra.Command{//创建cobra命令
		Use:                   "loadbalancer NAME [--tcp=port:targetPort] [--dry-run]",
		DisableFlagsInUseLine: true,
		Short:                 i18n.T("Create a LoadBalancer service."),
		Long:                  serviceLoadBalancerLong,
		Example:               serviceLoadBalancerExample,
		Run: func(cmd *cobra.Command, args []string) {
			cmdutil.CheckErr(options.Complete(f, cmd, args))//准备运行
			cmdutil.CheckErr(options.Run())//运行命令
		},
	}

	options.CreateSubcommandOptions.PrintFlags.AddFlags(cmd)//设置print选项

	cmdutil.AddApplyAnnotationFlags(cmd)//设置save-config选项
	cmdutil.AddValidateFlags(cmd)//设置validate选项
	cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceLoadBalancerGeneratorV1Name)//设置generator选项
	addPortFlags(cmd)//设置tcp选项
	return cmd
}
//运行loadbalancer complete方法
func (o *ServiceLoadBalancerOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
	name, err := NameFromCommandArgs(cmd, args)//获取名称
	if err != nil {
		return err
	}

	var generator generate.StructuredGenerator
	switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
	case generateversioned.ServiceLoadBalancerGeneratorV1Name://获取generator选项并判读昂
		generator = &generateversioned.ServiceCommonGeneratorV1{//构造generator对象
			Name:      name,
			TCP:       cmdutil.GetFlagStringSlice(cmd, "tcp"),
			Type:      v1.ServiceTypeLoadBalancer,
			ClusterIP: "",
		}
	default:
		return errUnsupportedGenerator(cmd, generatorName)
	}

	return o.CreateSubcommandOptions.Complete(f, cmd, args, generator)//运行createSubCommandOption complete方法
}
type ServiceExternalNameOpts struct {//externalname选项
	CreateSubcommandOptions *CreateSubcommandOptions
}
//构造externalname命令
func NewCmdCreateServiceExternalName(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
	options := &ServiceExternalNameOpts{//初始化选项
		CreateSubcommandOptions: NewCreateSubcommandOptions(ioStreams),
	}

	cmd := &cobra.Command{//创建cobra命令
		Use:                   "externalname NAME --external-name external.name [--dry-run]",
		DisableFlagsInUseLine: true,
		Short:                 i18n.T("Create an ExternalName service."),
		Long:                  serviceExternalNameLong,
		Example:               serviceExternalNameExample,
		Run: func(cmd *cobra.Command, args []string) {
			cmdutil.CheckErr(options.Complete(f, cmd, args))//准备运行
			cmdutil.CheckErr(options.Run())//运行命令
		},
	}

	options.CreateSubcommandOptions.PrintFlags.AddFlags(cmd)//设置print选项

	cmdutil.AddApplyAnnotationFlags(cmd)//设置save-config选项
	cmdutil.AddValidateFlags(cmd)//设置validate选项
	cmdutil.AddGeneratorFlags(cmd, generateversioned.ServiceExternalNameGeneratorV1Name)//设置generator选项
	addPortFlags(cmd)//设置tcp选项
	cmd.Flags().String("external-name", "", i18n.T("External name of service"))//设置externalname选项
	cmd.MarkFlagRequired("external-name")//external-name必须
	return cmd
}
//运行externalname complete方法
func (o *ServiceExternalNameOpts) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
	name, err := NameFromCommandArgs(cmd, args)//获取名称
	if err != nil {
		return err
	}

	var generator generate.StructuredGenerator
	switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
	case generateversioned.ServiceExternalNameGeneratorV1Name://获取generator选项并判断
		generator = &generateversioned.ServiceCommonGeneratorV1{//构造generator对象
			Name:         name,
			Type:         v1.ServiceTypeExternalName,
			ExternalName: cmdutil.GetFlagString(cmd, "external-name"),
			ClusterIP:    "",
		}
	default:
		return errUnsupportedGenerator(cmd, generatorName)
	}

	return o.CreateSubcommandOptions.Complete(f, cmd, args, generator)//运行createSubCommandOption complete方法
}

 

其他和上一个源码一样,不做介绍

 

 

 

 

 

 

 

k8s实战入门——Service kubectl expose deployment xxx --name=服务名 --type=ClusterIP --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空间]kubectl expose deployment xxx --name=服务名 --type=NodePort --port=暴露的端口 --target-port=指向集群中的Pod的端口 [-n 命名空间]- Pod IP 仅仅是集群内可见的虚拟IP,外部无法访问。 阅读详情

相关推荐

Service 在 K8s 中的四种类型

clusterIP 主要在每个 node 节点使用 iptables,将发向 clusterIP 对应端口的数据,转发到 kube-proxy 中。然后 kube-proxy 自己内部实现有负载均衡的方法,并可以查询到这个 service 下对应 pod 的地址和端口,进而把数据转发给对应的 pod 的地址和端口。

weixin_66734746的博客 996

容器编排技术 -- Kubernetes kubectl create service 命令详解

容器编排技术 -- Kubernetes kubectl create service 命令详解 1kubectl create service 2语法 3参考 kubectl create service 使用指定的子命令创建Service服务。 语法 $ service 参考 kubectl create service clusteripkubectl...

YunWisdom 1675

Kubectl命令实战指南:从基础查询到高级调试的完整工作流

在云原生和容器化技术领域,Kubernetes已成为容器编排的事实标准,而kubectl则是开发者与运维人员管理K8s集群的核心命令行工具。理解其工作原理,对于高效进行容器部署、服务编排和集群运维至关重要。kubectl遵循以资源为核心的“增删改查”设计哲学,通过组合动作、资源类型和选项,实现对Pod、Deployment、Service等资源的声明式管理。其技术价值在于提供了统一、强大的接口,将复杂的集群操作抽象为简洁命令,极大地提升了容器化应用的部署效率和运维可控性。在实际应用场景中,无论是日常的资源查

487

kubectl 命令详解(二十六):create service nodeport

kubectl create service nodeport 命令详解。

youzhouliu的博客 2109

K8S(Kubernetes)简介和官方安装部署保姆级详细教程

Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。

BlogPan的专栏 4万+

Kubernetes生产实战:Pod、Service与故障定位核心原理

Kubernetes不是高级Docker,而是面向分布式系统概率性生存的声明式编排平台。其核心在于通过期望状态(Desired State)驱动控制循环,以Pod为共享网络与存储的命运共同体单元,以Service为服务发现与流量调度的抽象层。理解Pod生命周期原子性、ClusterIP的iptables/IPVS实现机制、以及liveness/readiness探针协同逻辑,是解决滚动更新中断、Terminating卡顿、Service不通等高频问题的技术基础。本文聚焦真实运维现场的五个关键问题,结合etc

weixin_34200628的博客 449

kubectl源码分析之create serviceaccount

发布一个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 1135

Kubernetes深度排障实战:从kubectl到内核的三层穿透式观察

Kubernetes不是黑盒,而是一套可测量、可调试、可验证的分布式系统。理解其工作原理需超越kubectl命令表层,深入API调用链、组件决策逻辑与内核网络栈三层结构。掌握kube-apiserver的watch机制、scheduler的Predicate评估日志语义、cgroup v2与containerd的适配细节,是实现稳定运维的核心能力。这些技术价值直接支撑企业级高可用集群部署、Ingress 502根因定位、etcd脑裂熔断恢复等关键场景。本文聚焦‘ubuntu 22.04 安装kubernet

weixin_33860553的博客 322

kubectl源码分析之create deployment

发布一个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 747

别再死记硬背了!用MaxDEA软件实操SBM、DDF、NDDF模型,手把手教你测算绿色全要素生产率

本文深度解析如何使用MaxDEA软件实操SBM、DDF、NDDF模型,手把手教你测算绿色全要素生产率(GTFP)。通过详细的模型选择对比、数据准备策略和MaxDEA操作流程,帮助研究者科学构建指标体系并准确解读结果,提升环境管理研究的实证分析能力。

weixin_28731231的博客 316

从Mule ESB到Apache Camel:手把手教你设计一个轻量级企业集成框架的‘心脏’

本文深入探讨了从Mule ESB到Apache Camel的轻量级企业集成框架设计实践,对比了两者在协议支持、消息处理能力和部署灵活性等方面的差异。通过实际代码示例和性能优化技巧,帮助开发者构建高效的核心模块,适用于现代微服务架构下的系统集成需求。

weixin_28738165的博客 375

kubectl源码分析之create clusterrole

发布一个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 531

AXI VIP配置全指南:从报错到成功仿真的完整流程(Vivado 2023版)

本文详细解析了在Vivado 2023环境中配置AXI Verification IP(VIP)进行协议仿真的完整流程。针对常见的include和import报错问题,提供了具体的解决方案和代码示例,指导用户从IP核创建、参数化配置,到构建可工作的仿真测试平台,最终实现成功仿真。

gpt4scribbler的博客 236

kubectl源码分析之create命令

func NewCmdCreate(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command { o := NewCreateOptions(ioStreams) cmd := &cobra.Command{ Use: "create -f F...

mark's technic world 2239

深度排查:网讯网卡WX1860AL4千兆网口降速百兆的硬件陷阱

本文详细剖析了网讯网卡WX1860AL4千兆网口降速至百兆的硬件故障排查过程。通过分析千兆以太网硬件原理,提供从网线、供电到PCB走线、焊接残留的标准化检修流程,并分享两种典型硬件陷阱(线序错误与焊锡短路)的实战修复案例,为硬件工程师解决类似传输速率问题提供系统性的诊断思路与方法。

a3b4c5的博客 1113

计算机考研408复试题汇总

TCP连接是全双工的,两端都可以先挥手 其中一端完成数据发送任务后,发送一个FIN包来终止,另一端针对这个FIN包回复确认包, 直到另一端也发送请求终止数据包FIN,另一端作出确认应答,并且还要发送一个ACK=1表示确认号有效,如果没有收到这个就可以进行重传.

ca1m4n的博客 1万+

kubectl源码分析之create configmap

发布一个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 460

【ComfyUI】【Nunchaku】【diffusers报错解决】秋叶整合包安装 Nunchaku 报错的解决方法

最近在折腾 AI 绘图时,我尝试在秋叶的 ComfyUI 整合包中安装 `ComfyUI-nunchaku` 插件(版本 0.3.3),结果启动后直接报错,提示无法从 `accelerate.utils.memory` 中导入 `clear_device_cache`,让我一度怀疑插件是否兼容。查阅了一堆 issue 和源码之后,总算找到了原因和解决方法。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1863

kubectl源码分析之create clusterrolebinding

发布一个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 736

planning模块(6)-参考线的平滑(二次规划)

上一篇已经介绍了采样点生成锚点数据的过程,并且将所有采样点生成的锚点数据设置到了平滑器中.接下来继续介绍使用二次规划平滑参考线的算法过程.从锚点数据中提取坐标存入raw_point2d,提取横向边界存入anchorpoints_lateralbound,将起点和终点的横向边界设置为0,防止车在起点和终点位置偏离车道中心线.

让复杂的问题变得更容易理解 790

基于STM32设计的便携式心电信号监测系统_146

基于STM32 设计的便携式心电信号监测系统,采用 PulseSensor 心率传感器进行数据采集,通过 LCD 显示屏显示心电数字数据和采集状态。同时,该系统还采用 HC05 蓝牙模块将实时心电信号数据传输到手机 APP,用户可以在手机 APP 上实时查看采集的数据并绘制心率曲线。此外,STM32 上的按键可以控制心率采集状态,用户登录手机 APP 还可以查看实时心电信号折线图。

1万+

kubectl-dba:KubeDB数据库管理的终极kubectl插件完全指南

想要在Kubernetes中轻松管理数据库集群吗?😊 kubectl-dba是KubeDB数据库管理平台的官方kubectl插件,为数据库管理员提供了一站式的解决方案。这个强大的工具让你能够像操作原生Kubernetes资源一样管理各种数据库引擎,包括MySQL、PostgreSQL、MongoDB、Redis、Elasticsearch等20多种主流数据库。 ## 为什么需要kubectl-

gitblog_00356的博客 662

Camera2Demo

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

k3v虚拟集群实战:从二进制安装到kubectl操作完整教程

k3v(Virtual Kubernetes)是一款轻量级虚拟集群工具,能够帮助开发者在现有Kubernetes环境中快速创建隔离的虚拟集群实例。本教程将带你完成从二进制安装到kubectl日常操作的全流程,让你轻松掌握虚拟集群的部署与管理技巧。 ## 📋 准备工作:环境与依赖检查 在开始安装k3v之前,请确保你的环境满足以下要求: - 已安装Kubernetes集群(v1.21+) - 具

gitblog_00571的博客 245

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

k8s-wait-for命令全景清单:job、pod、service等待模式与-we/-wr参数详解

k8s-wait-for 是一款极简的 Kubernetes 等待脚本工具,用于等待集群中的 job、pod 或 service 进入期望的就绪状态,是多组件部署编排中解决"依赖等待"问题的常用神器。本文带你快速掌握它的 6 种命令模式、`-we`/`-wr` 参数差异以及实战用法。 ## k8s-wait-for 是什么:为什么需要等待脚本? 在真实生产环境中,服务之间往往存在启动顺序依赖:

gitblog_01142的博客 536

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

k8s实践(二):基本概念、kubectl命令和资料分享

概念 1. Kubernetes简介 Kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本,主要功能包括: 基于容器的应用部署、维护和滚动升级 负载均衡和服务发现 跨机器和跨地区的集群调度 自动伸缩 无状态服务和有状态服务 广泛的 Volume 支持 插件机制保证扩展性 Kubernetes 发展非常迅速,已经成为容器编排领域的领导者。 ...

220

kube-applier核心组件剖析:applylist过滤器、Git工具与kubectl客户端实现原理

kube-applier 是一款 **Kubernetes 持续部署工具**,它以 Pod 形式运行在集群中,持续监听 Git 仓库,把仓库里的 JSON / YAML 声明式配置文件自动 `kubectl apply` 到集群,保证集群对象与配置文件始终一致。它的内部结构非常精巧:`applylist` 过滤器决定"哪些文件要应用",Git 工具层负责"感知仓库变化",kubectl 客户端负责

gitblog_00331的博客 322
上一篇: kubectl源码分析之create serviceaccount
下一篇: kubectl源码分析之create deployment
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、付费专栏及课程。

余额充值