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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
日志服务 SLS,月写入数据量 50GB 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 【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.投票

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2天前
|
Kubernetes 应用服务中间件 nginx
【赵渝强老师】Kubernetes命令行管理工具:kubectl
kubectl 是 Kubernetes 的命令行工具,用于管理和操作 Kubernetes 集群。本文通过视频讲解和具体示例,介绍了 kubectl 的常用命令,包括显示 Pod 信息、创建 Deployment 和 Service、更新和回滚 Deployment、以及删除资源等操作。
|
1月前
|
缓存 Kubernetes 应用服务中间件
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
|
3月前
|
Kubernetes 监控 API
在K8S中,什么是 Minikube、Kubectl、Kubelet?
在K8S中,什么是 Minikube、Kubectl、Kubelet?
|
3月前
|
Kubernetes Shell Docker
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
|
3月前
|
Kubernetes API 容器
在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
在k8S中,使用kubectl logs无法查看日志是什么原因,如何让其能够查看?
|
3月前
|
Kubernetes 监控 API
在K8S中,Minikube、Kubectl、Kubelet是什么?
在K8S中,Minikube、Kubectl、Kubelet是什么?
|
3月前
|
Kubernetes 容器
Kubernetes(K8S) 安装 Metrics-Server kubectl top (metrics-server) node NotFound
Kubernetes(K8S) 安装 Metrics-Server kubectl top (metrics-server) node NotFound
48 0
|
3月前
|
Kubernetes Docker 容器
Kubernetes(K8S) 常用命令
Kubernetes(K8S) 常用命令
47 0
|
3月前
|
Kubernetes 监控 Shell
掌握Kubernetes故障排除技巧:kubectl命令的基本指南
以上是使用 `kubectl` 进行故障排除的一些基本指南。熟悉这些命令能够帮助您快速定位和解决在Kubernetes集群中遇到的问题。在实际使用中,您可能还需要结合其他工具和资源,如官方文档、社区论坛以及第三方监控和日志服务来进行更深入的故障诊断和排除。
95 0
|
4月前
|
Kubernetes 应用服务中间件 nginx
深入了解 `kubectl`:Kubernetes 命令行工具
深入了解 `kubectl`:Kubernetes 命令行工具
177 1
下一篇
无影云桌面