目录
一、k8s常用命令总结
1、kubectl用法概述
(1)kubectl命令行语法
(2)kubectl可操作的资源对象类型
(3)同时对多个资源对象进行操作
2、kubectl输出格式
3、kubectl常用操作
(1)创建资源对象
(2)查看资源对象
(3)描述资源对象
(4)删除资源对象
(5)执行容器命令
(6)查看容器日志
(7)查看集群信息
二、nvidia-smi常用命令总结
1、显示所有GPU的当前信息状态
2、实时查看GPU使用情况
一、k8s常用命令总结
kubectl是Kubernetes的命令行工具,可以让用户通过命令行的方式对Kubernetes集群进行操作,通过它与Kubernetes进行交互。通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。
1、kubectl用法概述
(1)kubectl命令行语法
$ kubectl [command] [TYPE] [NAME] [flags]
- command:子命令,用于操作Kubernetes集群资源对象的命令,例如create、delete、describe、get、apply等。
- TYPE:资源对象的类型,区分大小写,能以单数形式、复数形式或者简写形式表示。例如以下3种TYPE是等价的 (1) kubectl get pod pod1 ,(2)kubectl get pods pod1,(3)kubectl get po pod1。
- NAME:资源对象的名称,区分大小写。如果不指定名称,则系统将返回属于TYPE的全部对象的列表,例如$ kubectl get pods将返回所有Pod的列表。
- flags:kubectl子命令的可选参数,例如使用“-s”指定apiserver的URL地址而不用默认值。
(2)kubectl可操作的资源对象类型
资源对象的名称 | 缩写 |
cluster | |
componentstatuses | cs |
configmaps | cm |
daemonsets | ds |
deployments | deploy |
endpoints | ep |
events | ev |
horizontalpodautoscalers | hpa |
ingresses | ing |
Jobs | |
limitranges | limits |
nodes | no |
namespace | ns |
networkpolicies | |
statefulsets | |
persistentvolumeclaims | pvc |
persistentvolumes | pvc |
pods | po |
podsecuritypolicies | psp |
podtemplate | |
replicasets | rs |
replicationcontrollers | rc |
resourcequotas | quota |
cronjob | |
secrets | |
serviceaccounts | |
services | svc |
storageclasses | sc |
thirdpartyresources |
(3)同时对多个资源对象进行操作
在一个命令行中也可以同时对多个资源对象进行操作,以多个TYPE和NAME的组合表示,示例如下。
- 获取多个Pod的信息:kubectl get pods pod1 pod2
- 同时应用多个yaml文件,以多个-f file参数表示:kubectl create -f pod1.yaml -f rc1.yaml -f service1.yaml
2、kubectl输出格式
kubectl 命令可以用多种格式对结果进行显示,输出的格式通过-o参数指定
$ kubectl [command] [TYPE] [NAME] -o=<output_format>
根据不同子命令的输出结果,可选的输出格式如下:
常用的输出格式示例如下:
- 显示Pod的更多信息:kubectl get pod <pod-name> -o wide
- 以yaml格式显示Pod的详细信息:kubectl get pod <pod-name> -o yaml
- 以JSON格式显示Pod的详细信息:kubectl get pod <pod-name> -o json
- 以自定义列名显示Pod的信息:kubectl get pod <pod-name> -o=custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
3、kubectl常用操作
(1)创建资源对象
- 根据yaml配置文件创建资源对象:kubectl create -f ***.yaml
(2)查看资源对象
- 查看资源版本标签:kubectl api-versions
- 查看集群状态:kubectl get cs
- 查看集群节点信息:kubectl get nodes
- 查看所有Pod列表:kubectl get pods
- 查看deployment:kubectl get deploy
- 查看端口映射:kubectl get svc
- 查看指定命名空间的服务:kubectl get svc -n kubectl-system
- 显示运行中的Pod、Service、Deployment以及ReplicaSet的关键信息:kubectl get all
- 查看所有的命名空间:kubectl get all --all-namespace
(3)描述资源对象
- 显示Node的详细信息:kubectl describe nodes <node-name>
- 显示Pod的详细信息:kubectl describe pods <pod-name>
- 显示由RC管理的Pod的信息:kubectl describe pods <rc-name>
(4)删除资源对象
- 基于pod.yaml定义的名称删除Pod:kubectl delete -f pod.yaml
- 删除所有Pod:kubectl delete pods --all
- 于删除名称为my_pod的Pod:kubectl delete pod my_pod
(5)执行容器命令
- 执行Pod的date命令:kubectl exec <pod-name> date
- 指定Pod中某个容器执行date命令:kubectl exec <pod-name> -c <container-name> date
- 通过bash进入容器:kubectl exec -it <pod-name> -c <container-name> /bin/bash
- kubectl exec -it container-name /bin/bash
(6)查看容器日志
- 查看容器输出到stdout的日志:kubectl logs <pod-name>
- 跟踪查看容器的日志,相当于tail -f命令的结果:kubectl logs -f <pod-name> -c <container-name>
(7)查看集群信息
- 查看集群状态信息:kubectl cluster-info
二、nvidia-smi常用命令总结
nvidia-smi提供监控GPU使用情况和更改GPU状态的功能,是一个跨平台工具,它支持所有标准的NVIDIA驱动程序。
1、显示所有GPU的当前信息状态
命令:nvidia-smi
- Fan:风扇转速,从0到100%之间变动,N/A表示没有风扇
- Temp: GPU温度,单位摄氏度(GPU温度过高会导致GPU频率下降)
- Perf:性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能
- Pwr: GPU功耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。
- Bus-Id:GPU总线,domain:bus:device.function
- Disp.A:Display Active,表示GPU的显示是否初始化
- Memory-Usage:显存使用率
- Volatile GPU-Util:GPU使用率
- ECC:是否开启错误检查和纠正技术,0/DISABLED, 1/ENABLED
- Compute M.:计算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
2、实时查看GPU使用情况
- 实时刷新GPU使用状态并高亮显示:watch -n 0.1 -d nvidia-smi
- 设置每 0.2s 刷新一次:watch -n 0.2 nvidia-smi