《 Kubernetes进阶实战》一3.3kubectl命令与资源管理

举报
华章计算机 发表于 2019/05/29 20:19:19 2019/05/29
【摘要】 本书摘自《 Kubernetes进阶实战》一第三章,第3.3节,作者是马永亮

3.3 kubectl命令与资源管理

       API Server是Kubernetes集群的网关,用户和管理员以及其他客户端仅能通过此网关接口与集群进行交互。API是面向程序员的访问接口,目前可较好地支持Golang和Python编程语言,当然,终端用户更为常用的是通用命令行工具kubectl。访问集群之前,各类客户端需要了解集群的位置并拥有访问集群的凭据才能获取访问许可。使用kubeadm进行集群初始化时,kubeadm init自动生成的/etc/kubernetes/admin.conf文件是客户端接入当前集群时使用的kubeconf?ig文件,它内建了用于访问Kubernetes集群的最高管理权限的用户账号及相关的认证凭据,可由kubectl直接使用。

3.3.1 资源管理操作概述

       资源的管理操作可简单归结为增、删、改、查四种,kubectl提供了一系列的子命令用于执行此类任务,如create、delete、patch、apply、replace、edit、get等,其中有些命令必须基于资源清单来进行,如apply和replace命令,也有些命令既可基于清单文件进行,也可实时作用于活动资源之上,如create、get、patch和delete等。
       kubectl命令能够读取任何以.yaml、.yml或.json为后缀的文件(可称为配置清单或配置文件,后文将不加区别地使用这两个术语)。实践中,用户既可以为每个资源使用专用的清单文件,也可以将多个相关的资源(例如,属于同一个应用或微服务)组织在同一个清单文件中。不过,如果是YAML格式的清单文件,多个资源彼此之间要使用“---”符号作为单独的一行进行资源分割。这样,多个资源就将以清单文件中定义的次序被create、apply等子命令调用。
       kubectl的多数子命令支持使用“-f”选项指定使用的清单文件路径或URL,也可以是存储有清单文件的目录,另外,此选项在同一命令中也可重复使用多次。如果指定的目录路径存在子目录中时,那么可按需同时使用“-R”选项以递归获取子目录中的配置清单。
       再者,支持使用标签和注解是Kubernetes系统的一大特色,它为资源管理机制增色不少,而且delete和get等命令能够基于标签挑选目标对象,有些资源甚至必须依赖于标签才能正常使用和工作,例如Service和Pod控制器Deployment等资源对象。子命令label用于管理资源标签,而管理资源注解的子命令则是annotate。
       就地更新(修改)现有的资源也是一种常见的操作。apply命令通过比较资源在清单文件中的版本及前一次的版本执行更新操作,它不会对未定义的属性产生额外的作用。edit命令相当于先使用get命令获取资源配置,通过交互式编辑器修改后再自动使用apply命令将其应用。patch命令基于JSON补丁、JSON合并补丁及策略合并补丁对资源进行就地更新操作。
       为了利用apply命令的优势,用户应该总是使用apply命令或create --save-conf?ig命令创建资源。

3.3.2 kubectl的基本用法

       kubectl是最常用的客户端工具之一,它提供了基于命令行访问Kubernetes API的简洁方式,能够满足对Kubernetes的绝大部分的操作需求。例如,需要创建资源对象时,kubectl会将JSON格式的清单内容以POST方式提交至API Server。本节主要描述kubectl的基本功能。
       如果要单独部署kubectl,Kubernetes也提供了相应的单独发行包,或者适配于各平台的程序管理器的相关程序包,如rpm包或deb包等,用户根据平台类型的不同获取相匹配的版本安装完成即可,操作步骤类似于前面的安装方法,因此这里不再给出其具体过程。
       kubectl是Kubernetes系统的命令行客户端工具,特性丰富且功能强大,是Kubernetes管理员最常用的集群管理工具。其最基本的语法格式为“kubectl [command] [TYPE] [NAME] [f?lags]”,其中各部分的简要说明如下。
       1)command:对资源执行相应操作的子命令,如get、create、delete、run等;常用的核心子命令如表3-1所示。
       2)TYPE:要操作的资源对象的类型,如pods、services等;类型名称区分字符大小写,但支持使用简写格式。
       3)NAME:对象名称,区分字符大小写;省略时,则表示指定TYPE的所有资源对象;另外,也可以直接使用“TYPE/NAME”的格式来表示资源对象。
       4)f?lags:命令行选项,如“-s”或“--server”;另外,get等命令在输出时还有一个常用的标志“-o <format>”用于指定输出格式,如表3-1所示。

image.png

image.png

image.png

image.png

       此外,kubectl命令还有许多通用的选项,这个可以使用“kubectl options”命令来获取。下面列举几个比较常用命令。
    ■     -s或--server:指定API Server的地址和端口。
    ■     --kubeconf?ig:使用的kubeconf?ig文件路径,默认为~/.kube/conf?ig。
    ■     --namespace:命令执行的目标名称空间。
       kubectl的部分子命令在第2章已经多次提到,余下的大多数命令在后续的章节中还会用到,对于它们的使用说明也将在首次用到时进行展开说明。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。