用 Kubectl 管理 Kubernetes 的五種有用方法
學(xué)習(xí) kubectl,提升你與 Kubernetes 的互動(dòng)方式。
Kubernetes 可以幫你編排運(yùn)行有大量容器的軟件。Kubernetes 不僅提供工具來(lái)管理(或者說(shuō) 編排)運(yùn)行的容器,還幫助這些容器根據(jù)需要進(jìn)行擴(kuò)展。有了 Kubernetes 作為你的中央控制面板(或稱 控制平面),你需要一種方式來(lái)管理 Kubernetes,而這項(xiàng)工作的工具就是 kubectl。kubectl
命令讓你控制、維護(hù)、分析和排查 Kubernetes 集群的故障。與許多使用 ctl
(“控制”的縮寫(xiě))后綴的工具一樣,如 systemctl
和 sysctl
,kubectl
擁有大量的功能和任務(wù)權(quán)限,所以如果你正在運(yùn)行 Kubernetes,你肯定會(huì)經(jīng)常使用它。它是一個(gè)擁有眾多選項(xiàng)的命令,所以下面是 kubectl
中簡(jiǎn)單易用的五個(gè)常見(jiàn)任務(wù)。
1、列出并描述資源
按照設(shè)計(jì),容器往往會(huì)成倍增加。在某些條件下,它們可以快速增加。如果你只能通過(guò) podman ps
或 docker ps
來(lái)查看正在運(yùn)行的容器,這可能會(huì)讓你不知所措。通過(guò) kubectl get
和 kubectl describe
,你可以列出正在運(yùn)行的吊艙以及它們正在處理的容器信息。更重要的是,你可以通過(guò)使用 --namespace
或 name
或 --selector
等選項(xiàng),只列出所需信息。
get
子命令不僅僅對(duì)吊艙和容器有用。它也有關(guān)于節(jié)點(diǎn)、命名空間、發(fā)布、服務(wù)和副本的信息。
2、創(chuàng)建資源
如果你只通過(guò)類似 OpenShift、OKD 或 Kubernetes 提供的 Web 用戶界面(UI)創(chuàng)建過(guò)發(fā)布,但你想從 Linux 終端控制你的集群,那么可以使用 kubectl create
。kubectl create
命令并不只是實(shí)例化一個(gè)新的應(yīng)用發(fā)布。Kubernetes 中還有很多其他組件可以創(chuàng)建,比如服務(wù)、配額和 計(jì)劃任務(wù)。
Kubernetes 中的計(jì)劃任務(wù)可以創(chuàng)建一個(gè)臨時(shí)的吊艙,用來(lái)在你選擇的時(shí)間表上執(zhí)行一些任務(wù)。它們并不難設(shè)置。下面是一個(gè)計(jì)劃任務(wù),讓一個(gè) BusyBox 鏡像每分鐘打印 “hello world”。
$ kubectl create cronjob \
hello-world \
--image=busybox \
--schedule="*/1 * * * *" -- echo "hello world"
3、編輯文件
Kubernetes 中的對(duì)象都有相應(yīng)的配置文件,但在文件系統(tǒng)中查找相應(yīng)的文件較為麻煩。有了 kubectl edit
,你可以把注意力放在對(duì)象上,而不是定義文件上。你可以通過(guò) kubectl
找到并打開(kāi)文件(通過(guò) KUBE_EDITOR
環(huán)境變量,你可以設(shè)置成你喜歡的編輯器)。
$ KUBE_EDITOR=emacs \
kubectl edit cronjob/hello-world
4、容器之間的傳輸文件
初次接觸容器的人往往對(duì)無(wú)法直接訪問(wèn)的共享系統(tǒng)的概念感到困惑。他們可能會(huì)在容器引擎或 kubectl
中了解到 exec
選項(xiàng),但當(dāng)他們不能從容器中提取文件或?qū)⑽募湃肴萜髦袝r(shí),容器仍然會(huì)顯得不透明。使用 kubectl cp
命令,你可以把容器當(dāng)做遠(yuǎn)程服務(wù)器,使主機(jī)和容器之間文件傳輸如 SSH 命令一樣簡(jiǎn)單:
$ kubectl cp foo my-pod:/tmp
5、應(yīng)用變更
對(duì) Kubernetes 對(duì)象進(jìn)行修改,可以通過(guò) kubectl apply
命令完成。你所要做的就是將該命令指向一個(gè)配置文件:
$ kubectl apply -f ./mypod.json
類似于運(yùn)行 Ansible 劇本或 Bash 腳本,apply
使得快速“導(dǎo)入”設(shè)置到運(yùn)行中的 Kubernetes 實(shí)例很容易。例如,GitOps 工具 ArgoCD 由于 apply
子命令,安裝起來(lái)出奇地簡(jiǎn)單:
$ kubectl create namespace argocd
$ kubectl apply -n argocd \
-f https://raw.githubusercontent.com/argoproj/argo-cd/vx.y.z/manifests/install.yaml
使用 kubectl
Kubectl 是一個(gè)強(qiáng)大的工具,由于它是一個(gè)終端命令,它可以寫(xiě)成腳本,并能實(shí)現(xiàn)用眾多 Web UI 無(wú)法實(shí)現(xiàn)的功能。學(xué)習(xí) kubectl
是進(jìn)一步了解 Kubernetes、容器、吊艙以及圍繞這些重要的云計(jì)算創(chuàng)新技術(shù)的一個(gè)好方法。下載我們的 kubectl 速查表,以獲得快速參考,其中包括命令示例,以幫助你學(xué)習(xí),并在為你提供注意細(xì)節(jié)。