你一定会用到的7条kubectl命令
kubectl是Kubernetes的命令行工具,人们通常通过它与Kubernetes进行交互。通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。我们在《使用Kubectl管理Kubernetes的全解教程》一文中详细介绍了在不同的操作系统中如何安装kubectl以及如何使用RKE和Rancher创建配置文件。在本文中,我们将介绍kubectl中最常使用的命令。
首先,让我们来看看kubectl是如何工作的:
一个kubectl命令可以执行一个行动,如get、create或者describe
一个行动可以在一个资源上执行,如Deployment
kubectl命令遵循这一语法格式:
kubectl an_action a_resource a_resource_name –flags
在大部分情况下,名称和标志并不是必要的。例如,要获得关于现有pod的信息,你通常可以直接运行这一命令:kubectl get pods。
这里有一个小技巧:如果你不想每次都手动输入kubectl,可以制作一个Bash alias。设置alias k='kubectl',之后只需输入“k”即可代替kubectl。
接下来,我们来看看最常见的kubectl资源类型及其缩写(括号内为缩写)。
最常见的11种kubectl资源类型
pods (po)
nodes(no)
deployments (deploy)
replicasets(rs)
daemonsets(ds)
statefulsets(sts)
jobs
cronjobs(cj)
services(svc)
persistentvolumes(pv)
persistentvolumeclaim (pvc)
你还需要知道的名称是all和event。all是指所有已存在的资源,kubectl get all显示运行中的Pod、Service、Deployment以及ReplicaSet的关键信息。这个命令十分方便。
类似地,kubectl get events显示了event的历史记录。它像是Kubernetes级别的日志,而不是容器级别的日志。
如果你想要看到更多类型的kubectl资源,请查阅官方文档:
https://kubernetes.io/docs/reference/kubectl/overview/
现在让我们来看看在资源上执行的常见行动。
最常用的kubectl命令
help—获取帮助
get— 显示有关一个或多个资源的信息
describe—显示关于一个或多个资源的详细信息
logs—显示容器日志
exec—进入容器中一个正在运行的进程
apply—创建或选择一个资源
delete—删除一个或多个资源
现在,让我们来简单了解每个命令。
help
在命令之后输入--help以获取该命令的帮助。如,kubectl get pods –help
get
kubectl get all显示了关于运行中的pod、service、deployment以及Replicaset的关键信息。这是检查事物状态的首选命令,你可以将get和单个对象一起使用,并添加--watch标志以实时观察更新。
describe
kubectl describe all显示大量与你的集群相关的详细信息,你也可以将describe与单个对象一起使用。这个命令在debug过程中将大有用处。
logs
logs命令需要一个pod名称。当在多个pod中时,使用-c my-container标志来指定一个容器。使用--previous标志来获取不再运行的容器信息。
exec
exec帮助你debug一个容器进程,它允许你通过带-it的伪终端在容器内执行进程。例如,要在my_pod中进入容器并运行Bash,请输入kubectl exec -it my_pod bash。
apply
这一命令可以通过文件名或控制台输入,对资源进行配置。并且apply能够对集群资源进行声明式管理:如果资源不存在,apply将创建它;如果它存在,apply将更改它。此外,apply还能够添加Service到适用的资源或者通过添加Pod自动化弹性伸缩的Deployment。
请注意,你可以使用create来创建一个Deployment并且使用expose创建一个Service。但相对来说,无论对于文件本身还是之后需要重新使用来说,使用带有apply的YAML文件是更好选择。apply是创建和更新资源的“瑞士军刀”。
delete
kubectl delete pod my_pod这一命令可用于删除名称为my_pod的Pod。
要删除所有相同类型的资源,需要使用--all标志。例如,使用kubectl delete rs –all可以删除所有ReplicaSet。请注意,如果你尝试这一操作,那么要先删除Deployment,否则ReplicaSet将会重新启动。
现在你已经了解K8s的关键命令了,如果你还想查看更多的kubectl命令,请参阅:
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands
推荐阅读
About Rancher Labs
Rancher Labs由CloudStack之父梁胜创建。旗舰产品Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为2018年全球容器管理平台领导厂商,被Gartner评为2017年全球最酷的云基础设施供应商。
目前Rancher在全球拥有超过一亿的下载量,并拥有包括中国人寿、华为、中国平安、兴业银行、民生银行、平安证券、海航科技、厦门航空、上汽集团、海尔、米其林、丰田、本田、中船重工、中联重科、迪斯尼、IBM、Cisco、Nvidia、辉瑞制药、西门子、CCTV、中国联通等全球著名企业在内的共25000家企业客户。