kubectl 在使用 Kubernetes 过程中的重要性不言而喻, 掌握其命令行也是许多 IT 人员的 "必修课程".
而互联网上关于 kubectl 的文章多如牛毛, 本文秉持着 "浓缩就是精华" 的原则, 精简精简再精简, 挑出你一定会用到的 7 条命令! 同时还介绍了 kubectl 命令的基本语法, 帮助你快速上手 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 资源, 请查阅官方文档:
现在让我们来看看在资源上执行的常见行动.
最常用的 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 是创建和更新资源的 "Swiss knife".
delete
kubectl delete pod my_pod 这一命令可用于删除名称为 my_pod 的 Pod.
要删除所有相同类型的资源, 需要使用 --all 标志. 例如, 使用 kubectl delete rs -all 可以删除所有 ReplicaSet. 请注意, 如果你尝试这一操作, 那么要先删除 Deployment, 否则 ReplicaSet 将会重新启动.
现在你已经了解 K8s 的关键命令了, 如果你还想查看更多的 kubectl 命令, 请参阅:
来源: http://www.bubuko.com/infodetail-3193902.html