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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

序言

1.基本介绍

1.1 命令格式介绍

2 基础命令

2.1 create

2.2 delete

2.2.1 根据yaml删除资源

2.2.1  根据名称删除资源

2.3 get

2.3.1查看pod列表

2.3.2  查看node

2.3.3 查看svc

2.3.4 查看all

2.3.5 查看ns

2.3.4 查看deploy

2.3 run

 2.4 explain

2.5 edit

3.故障命令

3.1 describe

3.2 logs

3.2.1 查看容器快照

3.2.2 查看已停止的容器

3.3 exec

4.投票


序言

三言两语不如细心探索。

今天整理了一下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. flagskubectl子命令的可选参数例如使用“-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.投票

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s