系统管理员不得不掌握的 9 个 kubectl 命令

作者:才云 Caicloud K8sMeetup社区
新出炉的 kubectl 备忘单,可以帮助大家了解有关 Kubernetes 命令行实用程序的有用命令 。

作者:Jessica Cherry
翻译:Bach(才云)
校对:星空下的文仔(才云)、bot(才云)
kubectl 是 Kubernetes 的一个命令行管理工具,可用于 Kubernetes 上的应用部署和日常管理 。本文列举了 9 个常见的 kubectl 命令,并总结了一些使用技巧,希望可以帮助系统管理员简化管理工作 。
系统管理员不得不掌握的 9 个 kubectl 命令

文章插图
 
K8sMeetup
使用 Kubectl 查询、创建、编辑和删除资源
对于刚开始使用命令行工具的开发者,最保险的方法是提出问题(读取操作),而不是发出命令(写入操作),所以从使用 get 命令开始是个不错的选择 。
Kubectl get使用 get 命令可以获取当前集群中可用的资源列表,包括:
  • Namespace
  • Pod
  • Node
  • Deployment
  • Service
  • ReplicaSet
每个 get 命令都能提供集群中可用资源的详细信息 。例如 get nodes 命令就提供了 Kubernetes 的状态和版本 。
$ kubectl get nodesNAMESTATUSROLESAGEVERSIONminikubeReadymaster9dv1.18.0这些命令大多数还具有简写版本 。例如,要获取命名空间,可以使用 kubectl get namespaces 或者 kubectl get ns 命令:
$ kubectl get nsNAMESTATUSAGEchartsActive8ddefaultActive9dkube-node-leaseActive9dkube-publicActive9dkube-systemActive9d每个 get 命令都可以使用 –namespace 或 -n 参数指定对应的命名空间 。这点对于查看 kube-system 中的 Pods 会非常有用,因为这些 Pods 是 Kubernetes 自身运行所需的服务 。
$ kubectl get pods -n kube-systemNAMEREADYSTATUSRESTARTSAGEcoreDNS-66bff467f8-mjptx1/1Running29dcoredns-66bff467f8-t2xcz1/1Running29detcd-minikube1/1Running19dkube-apiserver-minikube1/1Running19dkube-controller-manager-minikube1/1Running29dkube-proxy-rpc9d1/1Running19dkube-scheduler-minikube1/1Running29dstorage-provisioner1/1Running19dKubectl create【系统管理员不得不掌握的 9 个 kubectl 命令】可以查询资源后,下一步是创建资源 。我们可以用 kubectl 在集群中创建任何类型的资源,包括:
  • Service
  • Cronjob
  • Deployment
  • Job
  • Namespace(ns)
其中,一些资源的创建需要设置配置文件、命名空间以及资源名称 。例如,创建命名空间就需要一个额外参数来指定命名空间 。
$ kubectl create ns hello-therenamespace/hello-there createdlinux 里可以使用 cron 创建定时运行的任务 。同样的,这里我们使用 cronjob 每五秒钟返回一次“hello” 。
???????$ kubectl create cronjob my-cron --image=busybox --schedule="*/5 * * * *" -- echo hellocronjob.batch/my-namespaced-cron created我们也可以使用 cronjob 的简写版本 cj 。
???????$ kubectl create cj my-existing-cron --image=busybox --schedule="*/15 * * * *" -- echo hellocronjob.batch/my-existing-cron createdKubectl edit当我们创建好资源后,如果需要修改,该怎么办?这时候就需要 kubectl edit 命令了 。
我们可以用这个命令编辑集群中的任何资源 。它会打开默认文本编辑器 。如果我们要编辑现有的 cron job,则可以执行:
 $ kubectl edit cronjob/my-existing-cron我们要编辑的配置如下:
???????# Please edit the object below. Lines beginning with a '#' will be ignored,# and an empty file will abort the edit. If an error occurs while saving this file will be# reopened with the relevant failures.#apiVersion: batch/v1beta1kind: CronJobmetadata:creationTimestamp: "2020-04-19T16:06:06Z"managedFields:- apiVersion: batch/v1beta1fieldsType: FieldsV1fieldsV1:f:spec:f:concurrencyPolicy: {}f:failedJobsHistoryLimit: {}f:jobTemplate:f:metadata:f:name: {}f:spec:f:template:f:spec:f:containers:k:{"name":"my-new-cron"}:.: {}f:command: {}f:image: {}f:imagePullPolicy: {}原本调度间隔设置为 15 秒:
系统管理员不得不掌握的 9 个 kubectl 命令

文章插图
 
我们将其更改为每 25 秒:
系统管理员不得不掌握的 9 个 kubectl 命令

文章插图
 
编写完成后,可以看到修改已生效 。
???????$ kubectl edit cronjob/my-existing-croncronjob.batch/my-existing-cron edited另外,我们可以通过 KUBE_EDITOR 命令来使用其他编辑器 。
 $ KUBE_EDITOR="nano" kubectl edit cronjob/my-existing-cronKubectl delete学会了以上命令后,下面我们将进行删除操作 。刚刚编辑的 cronjob 是两个 cronjobs 之一,现在我们删除整个资源 。


推荐阅读