当前位置: 首页 > article >正文

2.4 kubectl命令行设置7大命令分组

本节重点总结 :

  • 设置cmd工厂函数f,主要是封装了与kube-apiserver交互客户端
  • 用cmd工厂函数f创建7大分组命令 ,如下
  1. 基础初级命令 Basic Commands (Beginner):
  2. 基础中级命令 Basic Commands (Intermediate):
  3. 部署命令 Deploy Commands:
  4. 集群管理分组 Cluster Management Commands:
  5. 故障排查和调试 Troubleshooting and Debugging Commands:
  6. 高级命令 Advanced Commands:
  7. 设置命令 Settings Commands

架构图

kubectl_cmd_group.png

设置参数-替换方法

	flags := cmds.PersistentFlags()
	flags.SetNormalizeFunc(cliflag.WarnWordSepNormalizeFunc) // Warn for "_" flags

	// Normalize all flags that are coming from other packages or pre-configurations
	// a.k.a. change all "_" to "-". e.g. glog package
	flags.SetNormalizeFunc(cliflag.WordSepNormalizeFunc)

	addProfilingFlags(flags)

	flags.BoolVar(&warningsAsErrors, "warnings-as-errors", warningsAsErrors, "Treat warnings received from the server as errors and exit with a non-zero exit code")


设置kubeconfig相关的命令行

	kubeConfigFlags := genericclioptions.NewConfigFlags(true).WithDeprecatedPasswordFlag()
	kubeConfigFlags.AddFlags(flags)
	matchVersionKubeConfigFlags := cmdutil.NewMatchVersionFlags(kubeConfigFlags)
	matchVersionKubeConfigFlags.AddFlags(cmds.PersistentFlags())

设置cmd工厂函数f,主要是封装了与kube-apiserver交互客户端

  • 后面的子命令都使用这个f创建
	f := cmdutil.NewFactory(matchVersionKubeConfigFlags)

创建proxy子命令

	proxyCmd := proxy.NewCmdProxy(f, ioStreams)
	proxyCmd.PreRun = func(cmd *cobra.Command, args []string) {
		kubeConfigFlags.WrapConfigFn = nil
	}

创建7大分组命令

1. 基础初级命令 Basic Commands (Beginner):

  • 代码
		{
			Message: "Basic Commands (Beginner):",
			Commands: []*cobra.Command{
				create.NewCmdCreate(f, ioStreams),
				expose.NewCmdExposeService(f, ioStreams),
				run.NewCmdRun(f, ioStreams),
				set.NewCmdSet(f, ioStreams),
			},
		},
  • 对应的输出

Basic Commands (Beginner):
  create        Create a resource from a file or from stdin.
  expose        Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
  run           Run a particular image on the cluster
  set           Set specific features on objects
  • 释义
    • create 代表创建资源
    • expose 将一种资源暴露成service
    • run 运行一个镜像
    • set 在对象上设置一些功能

2. 基础中级命令 Basic Commands (Intermediate):

	{
			Message: "Basic Commands (Intermediate):",
			Commands: []*cobra.Command{
				explain.NewCmdExplain("kubectl", f, ioStreams),
				get.NewCmdGet("kubectl", f, ioStreams),
				edit.NewCmdEdit(f, ioStreams),
				delete.NewCmdDelete(f, ioStreams),
			},
		},
  • 打印的help效果
Basic Commands (Intermediate):
  explain       Documentation of resources
  get           Display one or many resources
  edit          Edit a resource on the server
  delete        Delete resources by filenames, stdin, resources and names, or by resources and label selector
  • 释义
    • explain 获取资源的文档
    • get 展示资源
    • edit 编辑资源
    • delete 删除资源

3. 部署命令 Deploy Commands:

		{
			Message: "Deploy Commands:",
			Commands: []*cobra.Command{
				rollout.NewCmdRollout(f, ioStreams),
				scale.NewCmdScale(f, ioStreams),
				autoscale.NewCmdAutoscale(f, ioStreams),
			},
		},
  • 输出为
  rollout       Manage the rollout of a resource
  scale         Set a new size for a Deployment, ReplicaSet or Replication Controller
  autoscale     Auto-scale a Deployment, ReplicaSet, or ReplicationController

  • 释义
    • rollout 滚动更新
    • scale 扩缩容
    • autoscale 自动扩缩容

4. 集群管理分组 Cluster Management Commands:

		{
			Message: "Cluster Management Commands:",
			Commands: []*cobra.Command{
				certificates.NewCmdCertificate(f, ioStreams),
				clusterinfo.NewCmdClusterInfo(f, ioStreams),
				top.NewCmdTop(f, ioStreams),
				drain.NewCmdCordon(f, ioStreams),
				drain.NewCmdUncordon(f, ioStreams),
				drain.NewCmdDrain(f, ioStreams),
				taint.NewCmdTaint(f, ioStreams),
			},
		},
  • 输出

Cluster Management Commands:
  certificate   Modify certificate resources.
  cluster-info  Display cluster info
  top           Display Resource (CPU/Memory/Storage) usage.
  cordon        Mark node as unschedulable
  uncordon      Mark node as schedulable
  drain         Drain node in preparation for maintenance
  taint         Update the taints on one or more nodes

  • 释义
    • certificate 管理证书
    • cluster-info 展示集群信息
    • top 展示资源消耗top
    • cordon 将节点标记为不可用
    • uncordon 将节点标记为可用
    • drain 驱逐pod
    • taint 设置节点污点

5.故障排查和调试 Troubleshooting and Debugging Commands:

		{
			Message: "Troubleshooting and Debugging Commands:",
			Commands: []*cobra.Command{
				describe.NewCmdDescribe("kubectl", f, ioStreams),
				logs.NewCmdLogs(f, ioStreams),
				attach.NewCmdAttach(f, ioStreams),
				cmdexec.NewCmdExec(f, ioStreams),
				portforward.NewCmdPortForward(f, ioStreams),
				proxyCmd,
				cp.NewCmdCp(f, ioStreams),
				auth.NewCmdAuth(f, ioStreams),
				debug.NewCmdDebug(f, ioStreams),
			},
		},
  • 输出
Troubleshooting and Debugging Commands:
  describe      Show details of a specific resource or group of resources
  logs          Print the logs for a container in a pod
  attach        Attach to a running container
  exec          Execute a command in a container
  port-forward  Forward one or more local ports to a pod
  proxy         Run a proxy to the Kubernetes API server
  cp            Copy files and directories to and from containers.
  auth          Inspect authorization
  debug         Create debugging sessions for troubleshooting workloads and nodes
  • 释义
    • describe 展示资源详情
    • logs 打印pod中容器日志
    • attach 进入容器
    • exec 在容器中执行命令
    • port-forward 端口转发
    • proxy 运行代理
    • cp 拷贝文件
    • auth 检查鉴权
    • debug 打印debug

6. 高级命令 Advanced Commands:

  • 代码
		{
			Message: "Advanced Commands:",
			Commands: []*cobra.Command{
				diff.NewCmdDiff(f, ioStreams),
				apply.NewCmdApply("kubectl", f, ioStreams),
				patch.NewCmdPatch(f, ioStreams),
				replace.NewCmdReplace(f, ioStreams),
				wait.NewCmdWait(f, ioStreams),
				kustomize.NewCmdKustomize(ioStreams),
			},
		},
  • 输出


Advanced Commands:
  diff          Diff live version against would-be applied version
  apply         Apply a configuration to a resource by filename or stdin
  patch         Update field(s) of a resource
  replace       Replace a resource by filename or stdin
  wait          Experimental: Wait for a specific condition on one or many resources.
  kustomize     Build a kustomization target from a directory or a remote url.

  • 释义
    • diff 对比当前和应该运行的版本
    • apply 应用变更或配置
    • patch 更新资源的字段
    • replace 替换资源
    • wait 等待资源的特定状态
    • kustomize 从目录或远程 url 构建 kustomization 目标。

7. 设置命令 Settings Commands

  • 代码
		{
			Message: "Settings Commands:",
			Commands: []*cobra.Command{
				label.NewCmdLabel(f, ioStreams),
				annotate.NewCmdAnnotate("kubectl", f, ioStreams),
				completion.NewCmdCompletion(ioStreams.Out, ""),
			},
		},
  • 输出
Settings Commands:
  label         Update the labels on a resource
  annotate      Update the annotations on a resource
  completion    Output shell completion code for the specified shell (bash or zsh)

  • 释义
    • label 打标签
    • annotate 更新注释
    • completion 在shell上设置补全

本节重点总结 :

  • 设置cmd工厂函数f,主要是封装了与kube-apiserver交互客户端
  • 用cmd工厂函数f创建7大分组命令 ,如下
  1. 基础初级命令 Basic Commands (Beginner):
  2. 基础中级命令 Basic Commands (Intermediate):
  3. 部署命令 Deploy Commands:
  4. 集群管理分组 Cluster Management Commands:
  5. 故障排查和调试 Troubleshooting and Debugging Commands:
  6. 高级命令 Advanced Commands:
  7. 设置命令 Settings Commands

http://www.kler.cn/a/513177.html

相关文章:

  • Qt调用ffmpeg库实现简易视频播放器示例
  • 在K8S中,如果后端NFS存储的IP发送变化如何解决?
  • 零信任安全理念
  • Java虚拟机面试题:内存管理(中)
  • 多监控m3u8视频流,怎么获取每个监控的封面图(纯前端)
  • Low-Level 大一统:如何使用Diffusion Models完成视频超分、去雨、去雾、降噪等所有Low-Level 任务?
  • 三轴云台之跟随模式篇
  • JAVA:策略模式(Strategy Pattern)的技术指南
  • Java泛型方法所受的限制是什么?
  • JDBC实验测试
  • 软通动力携鸿湖万联与微展世签署战略合作协议,以开源鸿蒙赋能工业创新升级
  • 【深度学习基础】多层感知机 | 多层感知机的实现
  • K8S如何让worker使用kubectl命令(RBAC方法)
  • 机器学习-核函数(Kernel Function)
  • 使用xorriso v1.5.2和grub4dos 0.4.6a -2024-02-26制作可启动ISO文件
  • 《Keras 3 使用 Reptile 进行 Few-Shot 学习》
  • SSL证书的颁发格式和制作过
  • 第四天 安装DevEco Studio,配置HarmonyOS开发环境
  • 【集合】单列集合和双列集合
  • OpenCV简介、OpenCV安装
  • 25届自动化考研复试微机原理基础版题库
  • Y3编辑器2.0功能指引
  • js手写-实现Promise的实例方法
  • 深度学习中梯度的补充理解
  • 《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
  • Jira中bug的流转流程