k8s kubectl常用命令

news/2024/11/16 21:25:02/

kubectl 是 Kubernetes 的一个命令行管理工具,可用于 Kubernetes 上的应用部署和日常管理。本文列举了 9 个常见的 kubectl 命令,并总结了一些使用技巧,希望可以帮助系统管理员简化管理工作。

一、使用 Kubectl 查询、创建、编辑和删除资源

对于刚开始使用命令行工具的开发者,最保险的方法是提出问题(读取操作),而不是发出命令(写入操作),所以从使用 get 命令开始是个不错的选择。

  • Kubectl get

使用 get 命令可以获取当前集群中可用的资源列表,包括:

  • Namespace
  • Pod
  • Node
  • Deployment
  • Service
  • ReplicaSet

每个 get 命令都能提供集群中可用资源的详细信息。例如 get nodes 命令就提供了 Kubernetes 的状态和版本。

这些命令大多数还具有简写版本。例如,要获取命名空间,可以使用 kubectl get ns 命令:

$ kubectl get nsNAME              STATUS   AGEcharts            Active   8ddefault           Active   9dkube-node-lease   Active   9dkube-public       Active   9dkube-system       Active   9d
  • Kubectl create

可以查询资源后,下一步是创建资源。我们可以用 kubectl 在集群中创建任何类型的资源,包括:

  • Service
  • Cronjob
  • Deployment
  • Job
  • Namespace(ns)

其中,一些资源的创建需要设置配置文件、命名空间以及资源名称。例如,创建命名空间就需要一个额外参数来指定命名空间。

$ kubectl create ns hello-there
namespace/hello-there created

Linux 里可以使用 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 created
  • Kubectl 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 秒:

我们将其更改为每 25 秒:

编写完成后,可以看到修改已生效。

$ kubectl edit cronjob/my-existing-croncronjob.batch/my-existing-cron edited

另外,我们可以通过 KUBE_EDITOR 命令来使用其他编辑器。

$ KUBE_EDITOR="nano" kubectl edit cronjob/my-existing-cron
  • Kubectl delete

学会了以上命令后,下面我们将进行删除操作。刚刚编辑的 cronjob 是两个 cronjobs 之一,现在我们删除整个资源。

$ kubectl delete cronjob my-existing-cron
cronjob.batch "my-existing-cron" deleted

需要注意的是,如果不知道资源是否有关联信息,最好不要删除。因为删除后无法恢复,只能重新创建。

  • Kubectl apply

上文提到,某些命令需要配置文件,而 apply 命令可以在集群内调整配置文件应用于资源。虽然也可以通过命令行 standard in (STNIN) 来完成,但 apply 命令更好一些,因为它可以让你知道如何使用集群,以及要应用哪种配置文件。作为示例,下文会将 Helm 的基于角色的访问控制(RBAC)配置用于服务帐户。

$ kubectl apply -f commands.yamlserviceaccount/tiller createdclusterrolebinding.rbac.authorization.k8s.io/tiller created

我们可以应用几乎任何配置,但是一定要明确所要应用的配置,否则可能会引发意料之外的后果。

二、使用 Kubectl 对 Kubernetes 进行故障排除


  • Kubectl describe

describe 命令可以查看资源的详细信息。比较常见的用法是查看一个 Pod 或节点信息,以检查是否有异常、资源是否耗尽。

该命令可以查看的资源包括:

  • Nodes
  • Pods
  • Services
  • Deployments
  • Replica sets
  • Cronjobs

举个例子,我们用 describe 命令查看上文集群中 cronjob 的详细信息。

$ kubectl describe cronjob my-cron

以下是部分信息:

Name:                         my-cronNamespace:                    defaultLabels:                       <none>Annotations:                  <none>Schedule:                     */5 * * * *Concurrency Policy:           AllowSuspend:                      FalseSuccessful Job History Limit: 3Failed Job History Limit:     1Starting Deadline Seconds:    <unset>Selector:                     <unset>Parallelism:                  <unset>Completions:                  <unset>Pod Template:Labels: <none>Containers:my-cron:Image:     busyboxPort:      <none>Host Port: <none>
  • Kubectl logs

虽然 describe 命令可以让你知道 Pod 内部应用程序发生的事,但 logs 命令可以提供 Kubernetes 中 Pod 的更多详细信息。了解这种区别可以帮助开发者更好地对应用程序内部以及 Kubernetes 内部发生的问题,并进行故障排除,这二者往往并不相同。

$ kubectl logs cherry-chart-88d49478c-dmcfv -n charts

以上命令的部分输出结果如下:

172.17.0.1 - - [19/Apr/2020:16:01:15 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:20 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:25 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:30 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:35 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:40 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:45 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:50 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"172.17.0.1 - - [19/Apr/2020:16:01:55 +0000] "GET / HTTP/1.1" 200 612 "-" "kube-probe/1.18" "-"

grep 命令可以过滤无关信息或查看特定事件。例如,下面的 kube-probe 可能是无关信息,我们用 grep 命令对其进行过滤。

$ kubectl logs cherry-chart-88d49478c-dmcfv -n charts | grep -vie kube-probe
127.0.0.1 - - [10/Apr /2020:23:01:55 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0" “-”

在有些部署中,存在一个 Pod 有多个容器的情况,因此我们可以在 logs 命令中使用 -c <容器名称>,以查找指定容器的日志。

  • Kubectl exec

与 docker exec 命令相似,exec 命令也可以在容器中直接对应用程序进行故障排除。尤其当 Pod 的日志无法定位问题时, 它会特别好用。另外要注意的是,使用 exec 命令时,必须要以 Pod 内使用的 shell 作为命令的最后一个参数。

$ kubectl exec -it cherry-chart-88d49478c-dmcfv -n charts -- /bin/bashroot@cherry-chart-88d49478c-dmcfv:/#
  • Kubectl cp

Kubectl cp 命令与 Linux cp 命令类似,用于容器之间复制文件和目录。另外,该命令还能在自动化失败等紧急情况下进行恢复备份。

以下是将本地文件拷贝到容器的示例。命令格式为:kubectl cp
namespace/podname:/path/tofile。

$ kubectl cp commands_copy.txt charts/cherry-chart-88d49478c-dmcfv:commands.txt$ kubectl exec -it cherry-chart-88d49478c-dmcfv -n charts -- /bin/bashroot@cherry-chart-88d49478c-dmcfv:/# lsbin  boot  commands.txt  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

下面是将容器内的文件拷贝到本地计算机上的示例。命令格式为:

kubectl cp
namespace/podname:/path/tofile。

$ kubectl cp charts/cherry-chart-88d49478c-dmcfv:commands.txt commands_copy.txt$ lscommands_copy.txt

http://www.ppmy.cn/news/561093.html

相关文章

解决edge浏览器主页被联想网址篡改问题

新买回来的电脑&#xff0c;刚打开浏览器&#xff0c;主页是这个样子&#xff01;&#xff01;&#xff01;&#xff01;还取消不了&#xff0c;是不是很无语。。。 1.打开&#xff1a;联想电脑管家 取消上网主页 锁定锁 2.打开浏览器 关闭浏览器&#xff0c;重新打开 上网…

HTML+CSS实现拼多多官网首页

写得一般&#xff0c;愿与大家共同进步&#xff08;不会制作GIF图片&#xff09; 一、 以下为部分实现图片 二、HTML代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatib…

联想摄像头无法一直运行

问题&#xff1a; 摄像头有间隔地运行&#xff0c;指示灯一会亮&#xff0c;一会不亮&#xff1b;在浏览器进行面试的时候&#xff0c;摄像头只照一次就不运行了。 解决&#xff1a; 找了无数方法&#xff0c;最终还是驱动的问题。 1&#xff09; 去联想官网下载驱动&#…

联想电脑管家不显示开机时间_联想电脑怎么设置显示开机时间

电脑管家每次在开机的时候会提示开机用时&#xff0c;这个功能怎么设置呢?下面由小编为你整理了的相关方法&#xff0c;希望对你有帮助!电脑管家设置提示开机时间步骤如下1首先&#xff0c;没有此软件的朋友&#xff0c;先从百度官网下载该软件。百度搜索电脑管家&#xff0c;…

搜索下拉框推广优化如何做?下拉联想词有什么优势?

下拉词也叫推荐词&#xff0c;就是让网友输入更少的词&#xff0c;看到更多与搜索词相关的推荐词。例如百度下拉词是百度搜索为方便用户搜索而提供的关键字关联服务&#xff0c;提高了用户的搜索效率。大多数人在搜索关键字时不知道如何组织语言以达到更准确的搜索目的&#xf…

无线打印便捷不止是说说 联想小新打印机初体验

说不清什么时候开始&#xff0c;“打印机”就快成为家庭用户的标配了&#xff0c;尤其是那些有孩子的家庭&#xff0c;选购打印机成为了早晚的事。就在我们全面体验联想全新小新打印机的时候&#xff0c;我的一个同事咨询了我购买打印机的事情&#xff0c;而她对于产品方面的一…

青龙羊毛——美团联想商城喜爱帮(搬运)

前几天有人评论区要新的美团脚本&#xff0c;更新一下&#xff0c;顺便更新一下萝卜大佬写的小毛&#xff01; 1.喜爱帮 &#xff08;1&#xff09;入口 羊毛来源——喜爱帮 &#xff08;2&#xff09;脚本 不会拉库就别撸毛了&#xff0c;撸不明白&#xff01; ql raw http…

IE打开主页时自动打开另一个页面联想中国

解决方法&#xff1a; 360系统修复-->IE未知第二主页 修复 只对IE有用&#xff0c;FF还是会打开联想中国的页面 转载于:https://www.cnblogs.com/frostbelt/archive/2012/07/17/2594965.html