K8s是时下最流行的容器“操作系统”。虽然它已经流行了好几年,但是作为开发者,要想熟练使用它,除了了解它的各个组件的职责和行为特点之外,还得熟记它的CLI命令工具kubectl。如果我们想让K8s服从我们的指令,我们就得通过kubectl给它发送指令,但是这些操作都让我们看完真的很累,更别说写下来了。所以今天我就给大家总结一些最常用也最实用的命令操作。如果以后真的忘记了,打开后可以马上拿起来。嗯,对于我平时使用的gomod和maven命令,我能记住的就两三个。当我解决依赖问题时,我每次都去搜索引擎。时间长了,记下来,用的时候查一下。.感觉工作都离不开这些笔记和搜索引擎……好了,废话不多说,我们马上开始吧。Kubectl的语法结构首先,我们来了解一下K8sCLI命令工具kubectl的语法结构是怎样的。否则,必须复制每个操作。所有的K8s命令操作在CLI中都使用如下结构:kubectl[command][TYPE][NAME][flags]这个命令语法中各部分的顺序不能颠倒,否则K8s无法理解我们要做什么。命令命令部分描述了要执行的操作类型。主要的操作类型有:创建从文件或命令行输入提供的配置以生成资源对象。describe获取资源对象的详细信息get获取集群中各种资源的信息delete删除集群中需要擦除的资源对象apply与声明文件一起使用,将资源对象的定义提交给集群,供集群申请。TYPE命令操作中的TYPE部分用于指定kubectl发起的操作的资源类型。常用的资源类型有pod、service、deployment、statefulset、node等。NAME部分区分大小写,是资源对象在K8s中的唯一标识,用于制定指定TYPE部分指定的相关资源的名称。将名称附加到命令操作只会将该命令操作游到该资源对象。flagsflags部分表示特殊选项或对特定资源的请求。它们用于覆盖默认值或环境变量。例如,kubectl发起的任何命令操作都在default命名空间下工作。如果你想将它应用到其他命名空间,你可以在标志部分使用-n选项来指定命名空间。例如:kubectlgetpod-nwebis查看web命名空间下有哪些pod资源。好了,这里介绍几个非常实用的命令操作,推荐收藏。实用命令推荐1.查看所有命名空间下的资源命名空间在K8s中非常重要。它们是一种机制,用于隔离集群中的某些资源组,然后相应地管理它们。命名空间提供的可见性隔离在K8s中也起着至关重要的作用。默认情况下,我们所有命令生效的命名空间都是default。kubectlgetpods有时在排查问题和查看集群总体布局时,往往需要查看集群中某类资源的整体情况。这就需要能够找出所有命名空间下的信息。这时候,我们可以在flags部分使用--all-namespaces选项:kubectlgetpods--all-namespaces2。查询namespace下所有正在运行的podkubectlgetpods--field-selector=status.phase=Running这个不多解释,其实很好用——field-selector可以找到某种状态下的各种资源,具有某种属性根据资源的属性值。那怎么知道某一类资源对象有哪些属性值呢?毕竟K8s资源有十几种,每种都有更多的属性。这时候就可以看到下一条命令了。3、查询集群中当前资源的属性kubectlgetpodpod-name-o=yaml上述命令可以YAML格式打印集群中指定名称的pod对象当前拥有的所有属性,同时也支持JSON格式。本例中TYPE部分使用的是pod,可以替换为K8s支持的任何资源类型,查看其属性。4.提交资源给集群应用,记录提交资源定义的版本,以便集群调度应用。我们使用kubectlapply-fresources.yaml。但是,如果你想在K8s中使用--部署资源的回滚能力,让K8s记住每个版本提交了什么。可以通过--record选项启用此功能。kubectlapply-fresources.yaml--record5.检查资源对象的事件信息。有时,Pod挂掉并保持挂起状态。这时候就需要查看它管理了哪些事件,以便进行故障排除。kubectldescribepodpod-name时,会打印出这个Pod经历过的所有事件信息Events:TypeReasonAgeFromMessage---------------------------警告失败20s(x4超过2m4s)kubelet无法拉取图像“xxx”:rpc错误:code=Unknowndesc=来自守护程序的错误响应:未找到xxx的清单:清单未知:清单未知警告失败20s(x4over2m4s)kubeletError:ErrImagePullNormalBackOff4s(x5over2m4s)kubeletBack-offpullingimage"xxx"WarningFailed4s(x5over2m4s)kubeletError:ImagePullBackOff除了Pods,可以使用describe查看其他事件资源。6.查看容器日志。我们所有的应用在K8s上运行之前都是封装在容器中,然后以Pod为单位调度到集群中。如果不符合预期,出了问题,首先想到的是查看日志,需要使用如下命令:kubectllogs
