用kubectl管理Kubernetes的5种有用方法

93 阅读3分钟

Kubernetes是帮助你以有组织的方式运行大量容器的软件。除了提供工具来管理(或协调)你运行的容器,Kubernetes还帮助这些容器根据需要进行扩展。有了Kubernetes作为你的中央控制面板(或_控制平面_),你需要一种方法来管理Kubernetes,而这项工作的工具就是kubectl。kubectl 命令让你控制、维护、分析和排除Kubernetes集群的故障。与许多使用ctl ("控制 "的缩写)后缀的工具一样,如systemctl和sysctl,kubectl拥有广泛的功能和任务的权限,所以如果你正在运行Kubernetes,你最终会经常使用它。它是一个有很多选项的大命令,所以这里有五个kubectl使之容易的常见任务。

1.列出和描述资源

容器,从设计上看,倾向于繁殖。在某些条件下,它们可以快速繁殖。如果你只能通过podman psdocker ps 来查看正在运行的容器,这可能会让你不知所措。通过kubectl getkubectl describe ,你可以得到关于哪些 pod 正在运行以及它们正在处理的容器的信息。更重要的是,你可以通过使用--namespacename--selector 等选项来获得你需要的信息。

get 子命令对很多东西都很有用,不仅仅是pod和容器。它有关于节点、命名空间、部署、服务和复制的信息。

2.创建资源

如果你只通过网络用户界面(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.应用更改

对Kubernetes对象进行修改,可以在任何时候用kubectl apply 命令来完成。你所要做的就是将该命令指向一个配置文件。

$ kubectl apply -f ./mypod.json

类似于运行Ansible playbook或Bash脚本,apply ,可以很容易地将设置快速 "导入 "到正在运行的Kubernetes实例。例如,由于`apply`子命令,GitOps工具ArgoCD的安装令人惊讶地简单。

$ 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小抄以获得快速参考,其中包括命令样本,以帮助你学习,并在你成为专家后提醒你注意细节。