0


【K8S系列】第十讲:kubectl 命令大全

序言

三言两语,不如细心探索。

今天整理了一下kubectl 命令,希望此文,能帮助读者对kubectl 命令有一个初步的了解

文章标记颜色说明:

  • 黄色:重要标题
  • 红色:用来标记结论
  • 绿色:用来标记一级论点
  • 蓝色:用来标记二级论点

1.基本介绍

kubectl 作为客户端CLI工具,可以通过命令行的方式对Kubernetes集群进行操作。

1.1 命令格式介绍

 kubectl命令行的语法如下:

$ kubectl [command] [TYPE] [NAME] [flags]
  1. command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
  2. TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的。
  3. NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
  4. flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
$ kubectl get pod podtest
$ kubectl get pods podtest
$ kubectl get po podtest

2 基础命令

先介绍一下几个基础命令

  • create
  • delete
  • get
  • run
  • expose
  • set
  • explain
  • edit

2.1 create

create 命令:根据文件或者输入来创建资源

创建Deployment和Service资源

$ kubectl create -f test-deployment.yaml
$ kubectl create -f test-service.yaml

2.2 delete

delete 命令:删除资源

2.2.1 根据yaml删除资源

根据yaml文件删除对应的资源,但是yaml文件并不会被删除,如下

$ kubectl delete -f test-deployment.yaml 
$ kubectl delete -f test-service.yaml

2.2.1 根据名称删除资源

可以通过具体的资源名称来进行删除,使用这个删除资源,同时删除deployment和service资源

$ kubectl delete 具体的资源名称

$ kubectl delete test-deploy

2.3 get

get 命令 :获得资源信息

2.3.1查看pod列表

$ kubectl get pod

显示pod节点的标签信息

$ kubectl get pod --show-labels

根据指定标签匹配到具体的pod

$ kubectl get pods -l app=demo

查看pod详细信息,可以查看pod具体运行在哪个节点上

$ kubectl get pod -o wide

2.3.2 查看node

查看node节点列表

$ kubectl get node 

显示node节点的标签信息

$ kubectl get node --show-labels

2.3.3 查看svc

查看服务的详细信息,显示了服务名称,类型,集群ip,端口,时间等信息

$ kubectl get svc
$ kubectl get svc -n kube-system 

2.3.4 查看all

查看所有的资源信息

$ kubectl get all
$ kubectl get --all-namespaces

2.3.5 查看ns

$ kubectl get ns
$ kubectl get namespaces 

2.3.4 查看deploy

查看已经部署了的所有应用,可以看到容器,以及容器所用的镜像,标签等信息

$ kubectl get deploy -o wide
$ kubectl get deployments -o wide

2.3 run

run 命令:在集群中创建并运行一个或多个容器镜像。

语法:

run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]

示例:运行一个名称为nginx,副本数为3,标签为app=test,镜像为nginx:1.11,端口为80的容器实例

$ kubectl run nginx --replicas=3 --labels="app=test" --image=nginx:1.11 --port=80

2.4 explain

explain 命令:用于显示资源文档信息

$ kubectl explain rs

2.5 edit

edit 命令: 用于编辑资源信息

编辑Deployment nginx的一些信息

$ kubectl edit deployment nginx

编辑service类型的nginx的一些信息

$ kubectl edit service/nginx

3.故障命令

故障排查和调试命令:

  1. describe
  2. logs
  3. exec
  4. attach
  5. port-foward
  6. proxy
  7. cp
  8. auth

3.1 describe

describe命令:显示特定资源的详细信息

查看test-nginx pod的详细状态

$ kubectl describe pod test-nginx

3.2 logs

logs命令:用于在pod中打印一个容器的日志

执行

kubectl logs -h 

可以查看kubectl logs的帮助信息

语法

  • kubectl logs [-f] [-p] POD [-c CONTAINER]

-f:

  • --follow[=false]: 指定是否持续输出日志
  • --interactive[=true]: 如果为true,当需要时提示用户进行输入。默认为true
  • --limit-bytes=0: 输出日志的最大字节数。默认无限制

-p:

  • --previous[=false]: 如果为true,输出pod中曾经运行过,但目前已终止的容器的日志
  • --since=0: 仅返回相对时间范围,如5s、2m或3h,之内的日志。默认返回所有日志。只能同时使用since和since-time中的一种
  • --since-time="": 仅返回指定时间(RFC3339格式)之后的日志。默认返回所有日志。只能同时使用since和since-time中的一种
  • --tail=-1: 要显示的最新的日志条数。默认为-1,显示所有的日志
  • --timestamps[=false]: 在日志中包含时间戳

-c:

  • --container="": 容器名

3.2.1 查看容器快照

返回仅包含一个容器的pod nginx的日志快照

$ kubectl logs nginx

3.2.2 查看已停止的容器

返回pod test中已经停止的容器web-test的日志快照

$ kubectl logs -p -c test web-1
# 持续输出pod ruby中的容器web-1的日志
$ kubectl logs -f -c ruby web-1

# 仅输出pod nginx中最近的20条日志
$ kubectl logs --tail=20 nginx

# 输出pod nginx中最近一小时内产生的所有日志
$ kubectl logs --since=1h nginx

3.3 exec

exec命令:用于进入pod中查看pod内部信息

kubectl exec -it podName  -c  containerName -n namespace -- shell comand
-c:--container="": 容器名。如果未指定,使用pod中的一个容器。
 -p: --pod="": Pod名。
 -i: --stdin[=false]: 将控制台输入发送到容器。
 -t: --tty[=false]: 将标准输入控制台作为容器的控制台输入。

示例:

# 默认在pod test的第一个容器中运行“date”并获取输出
$ kubectl exec test date

# 在pod test的容器ruby-container中运行“date”并获取输出
$ kubectl exec test -c ruby-container date

# 切换到终端模式,将控制台输入发送到pod test的ruby-container的“bash”命令,并将其输出到控制台/
# 错误控制台的信息发送回客户端。
$ kubectl exec test -c ruby-container -i -t -- bash -il

4.投票

标签: kubernetes docker k8s

本文转载自: https://blog.csdn.net/weixin_36755535/article/details/128138481
版权归原作者 颜淡慕潇 所有, 如有侵权,请联系我们删除。

“【K8S系列】第十讲:kubectl 命令大全”的评论:

还没有评论