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

简介: 【K8S系列】第十讲: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.投票

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
SQL 数据库 索引
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
27 1
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
|
4天前
|
前端开发 编解码 数据格式
浅谈响应式编程在企业级前端应用 UI 开发中的实践
浅谈响应式编程在企业级前端应用 UI 开发中的实践
27 0
浅谈响应式编程在企业级前端应用 UI 开发中的实践
|
4天前
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
102 0
|
4天前
|
Kubernetes 应用服务中间件 API
Kubernetes(K8S)命令指南
Kubernetes(K8S)命令指南
125 0
|
4天前
|
运维 Kubernetes 容器
K8S运维命令必备kubectl命令总结
K8S运维命令必备kubectl命令总结
40 3
|
4天前
|
iOS开发 MacOS Windows
|
3天前
|
存储 Kubernetes 安全
Kubernetes 命令大全
Kubernetes 命令大全
|
3天前
|
运维 Kubernetes Linux
Kubernetes详解(十)——Pod对象高级控制命令
Kubernetes详解(十)——Pod对象高级控制命令
12 0
|
4天前
|
Kubernetes Shell Docker
容器服务ACK常见问题之容器服务ACK kubectl命令写到shell脚本失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
4天前
|
Kubernetes 安全 API
K8S 实用工具之四 - kubectl 实用插件
K8S 实用工具之四 - kubectl 实用插件