Kubernetes 是一款软件,可帮助您以有组织的方式运行大量容器。除了提供管理(或编排)您运行的容器的工具外,Kubernetes 还可以帮助这些容器根据需要进行扩展。将 Kubernetes 作为您的中央控制面板(或控制平面),您需要一种管理 Kubernetes 的方法,而完成这项工作的工具就是 kubectl。kubectl
命令让您可以控制、维护、分析和排除 Kubernetes 集群的故障。与许多使用 ctl
(“control”的缩写)后缀的工具(如 systemctl 和 sysctl)一样,kubectl 覆盖了广泛的功能和任务,因此如果您正在运行 Kubernetes,您最终会经常使用它。这是一个包含许多选项的大型命令,因此以下是 kubectl 使之变得容易的五个常见任务。
1. 列出和描述资源
容器在设计上倾向于倍增。在某些条件下,它们可以快速倍增。如果您查看正在运行的容器的唯一方法是 podman ps
或 docker ps
,这可能会让人感到不知所措。使用 kubectl get
和 kubectl describe
,您可以获取有关正在运行的 pod 以及它们处理的容器的信息。更重要的是,您可以使用 --namespace
或 name
或 --selector
等选项来获取您需要的信息。
get
子命令不仅仅对 pod 和容器有用。它包含有关节点、命名空间、部署、服务和副本的信息。
2. 创建资源
如果您只通过 Web 用户界面 (UI)(如 OpenShift、OKD 或 Kubernetes 提供的界面)创建过部署,但您希望从 Linux 终端控制您的集群,那么请准备好使用 kubectl create
。kubectl create
命令不仅仅实例化新的应用程序部署。Kubernetes 中还有许多其他组件可以创建,例如服务、配额和 CronJob。
Kubernetes 中的 CronJob 可以创建一个临时的 pod,用于按您选择的计划执行某些任务。它们并不难设置。这是一个 CronJob,让 BusyBox 镜像每分钟回显“hello world”
$ kubectl create cronjob \
hello-world \
--image=busybox \
--schedule="*/1 * * * *" -- echo "hello world"
3. 编辑文件
您可能知道 Kubernetes 中的对象都有随附的配置文件,但是翻遍您的文件系统来查找合适的文件可能会很麻烦。使用 kubectl edit
,您可以专注于对象,而不是定义它们的文件。您可以让 kubectl
为您查找并打开文件(它尊重 KUBE_EDITOR
环境变量,因此您可以将您的编辑器设置为您喜欢的任何编辑器)
$ KUBE_EDITOR=emacs \
kubectl edit cronjob/hello-world
4. 在容器之间交换文件
容器的新手经常会对他们显然无法访问的共享系统的概念感到困惑。他们可能会了解容器引擎或 kubectl 本身中的 exec
选项,但是当他们无法从容器中获取文件或将文件放入容器时,容器仍然可能看起来坚不可摧。使用 kubectl cp
命令,您可以将容器视为远程服务器,从而使文件与容器之间的复制不再比 SSH 命令复杂
$ kubectl cp foo my-pod:/tmp
5. 应用更改
可以使用 kubectl apply
命令随时更改 Kubernetes 对象。您所要做的就是将命令指向配置文件
$ kubectl apply -f ./mypod.json
类似于运行 Ansible playbook 或 Bash 脚本,apply
可以轻松地将设置快速“导入”到正在运行的 Kubernetes 实例中。例如,GitOps 工具 ArgoCD 的安装非常简单,这要归功于 `apply` 子命令
$ kubectl create namespace argocd
$ kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/vx.y.z/manifests/install.yaml
使用 kubectl
Kubectl 是一个强大的工具,并且由于它是一个终端命令,因此可以编写脚本并在 Web UI 无法实现的许多方面使用它。学习 kubectl 是进一步了解 Kubernetes、容器、pod 以及围绕这些重要云创新的所有技术的绝佳方法。下载我们的 kubectl 速查表,其中包含示例命令的快速参考,以在您学习时为您提供帮助,并在您成为专业人士后提醒您详细信息。
评论已关闭。