自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序解Bug最常用的K8s命令,外加使用竅門

開發(fā) 新聞
本文給大家總結(jié)了幾個(gè)使用頻率高的K8s命令操作。

K8s 是時(shí)下最流行的容器"操作系統(tǒng)",雖然已經(jīng)流行了好幾年了,不過作為開發(fā)人員想要熟練的使用它,除了理解它的各個(gè)組件的職責(zé)、行為特性之外,還得熟記它的 CLI 命令工具 kubectl 。

想要讓 K8s 聽從我們的調(diào)遣,我們就得通過 kubectl 給它發(fā)送指示才行,可是這么多操作我們?nèi)匆槐檎娴氖峭馁M(fèi)腦力的,更別提記下來了。

所以今天給大家總結(jié)了幾個(gè)最常用也最實(shí)用的命令操作,以后實(shí)在忘了,翻開看看馬上就能撿起來。嗯,平時(shí)用的 go mod 和 maven 那些命令,我就能記住常用的那兩三個(gè),解決依賴問題的時(shí)候每次都上搜索引擎,時(shí)候長(zhǎng)了就搞了個(gè)筆記,用到了翻一翻。

感覺沒了這些筆記和搜索引擎我已經(jīng)不會(huì)干活了...

好了,閑話不多說,馬上開始。

Kubectl 的語法結(jié)構(gòu)

首先我們來理解一下K8s 的 CLI 命令工具 kubectl 它的語法結(jié)構(gòu)是什么樣的,不然就真得每個(gè)操作都靠抄了。

所有的 K8s 命令操作在 CLI 中都使用以下結(jié)構(gòu):

kubectl [command] [TYPE] [NAME] [flags]

這個(gè)命令語法中每個(gè)部分的順序不能調(diào)換,否則 K8s 就不理解我們要干什么了。

command

command 部分描述了要執(zhí)行的操作類型,主要的操作類型有:

  • create 從文件或命令行輸入提供的配置,生成資源對(duì)象。
  • describe 檢索資源對(duì)象的詳細(xì)信息
  • get 獲取各種資源在集群里的信息
  • delete 從集群中刪除需要擦除的資源對(duì)象
  • apply 搭配聲明文件使用,把資源對(duì)象的定義提交給集群,由集群進(jìn)行應(yīng)用。

TYPE

命令操作中的 TYPE 部分用于制定  kubectl 發(fā)起的操作,所針對(duì)的資源類型。常用的資源類型有 pod , service , deployment ,  statefulset , node 這些。

NAME

NAME 部分區(qū)分大小寫,是K8s里資源對(duì)象的唯一標(biāo)識(shí),用于制定指定 TYPE 部分指明的相關(guān)資源的名稱。將名稱附加到命令操作上會(huì)將該命令操作只對(duì)該資源對(duì)象游泳。

flags

flags 部分表示對(duì)特定資源的特殊選項(xiàng)或請(qǐng)求。它們是用作覆蓋默認(rèn)值或環(huán)境變量。

比如任何 kubectl 發(fā)起的命令操作,都是在 default 這個(gè)命名空間下起作用的,想要作用到其他命名空間,可以通過在 flags 部分用 -n 選項(xiàng)指定命名空間,例如:

kubectl get pod -n web

就是查看 web 命名空間下有哪些 pod 資源。

好了下面列舉幾個(gè)非常實(shí)用的命令操作,建議收藏。

實(shí)用命令推薦

1. 查看所有命名空間下的資源

命名空間在 K8s 中非常重要。它們是一種在集群中隔離某些資源組,然后相應(yīng)地管理它們的機(jī)制。命名空間提供的可見性隔離在 K8s 中也起著至關(guān)重要的作用。

默認(rèn)我們所有命令生效的命名空間都是 default 。

kubectl get pods

那么有時(shí)候在查問題,看集群大體布局的時(shí)候,往往需要看某類資源在集群中整體的情況,這就需要能查出所有命名空間下的信息,這個(gè)時(shí)候我們可以在 flags 部分使用 --all-namespaces 選項(xiàng):

kubectl get pods --all-namespaces

2. 查詢命名空間下所有在運(yùn)行的pod

kubectl get pods --field-selector=status.phase=Running

這個(gè)就不多解釋了,其實(shí)擅用 —field-selector 能根據(jù)資源的屬性查出各種在某個(gè)狀態(tài)、擁有某個(gè)屬性值的資源。

那怎么知道某個(gè)類型的資源對(duì)象有哪些屬性值呢,畢竟K8s資源的類型十幾種,每種的屬性就更多了,這個(gè)時(shí)候就可以看下個(gè)命令。

3. 查詢資源當(dāng)下在集群中的屬性

kubectl get pod pod-name -o=yaml

上面這個(gè)命令就能把指定名稱的 pod 對(duì)象在集群中當(dāng)前擁有的屬性以 YAML 格式的形式全打印出來,也支持JSON格式。

這里例子里 TYPE 部分用的是 pod,可以替換成任何K8s支持的資源類型,查看他們的屬性。

4. 提交資源給集群應(yīng)用,并記錄版本

提交資源定義,讓集群進(jìn)行應(yīng)用調(diào)度,我們統(tǒng)一用的是

kubectl apply -f resources.yaml

不過,如果你想用K8s中-- Deployment資源的回滾能力的話,還得讓K8s記住每個(gè)版本都提交了什么,這個(gè)功能可以通過 --record 選項(xiàng)開啟。

kubectl apply -f resources.yaml --record

5. 查看資源對(duì)象的事件信息

有的時(shí)候,Pod 掛了,一直停在掛起狀態(tài),這個(gè)時(shí)候就需要看看它經(jīng)理過哪些事件了,好做排查。

kubectl describe pod pod-name

時(shí)候回打印出來這個(gè) Pod 經(jīng)歷過的所有事件信息

Events:

Type Reason Age From Message

---- ------ ---- ---- -------

Warning Failed 20s (x4 over 2m4s) kubelet Failed to pull image "xxx

": rpc error: code = Unknown desc = Error response from daemon: manifest for xxx not found: manifest unknown: manifest unknown

Warning Failed 20s (x4 over 2m4s) kubelet Error: ErrImagePull

Normal BackOff 4s (x5 over 2m4s) kubelet Back-off pulling image "xxx"

Warning Failed 4s (x5 over 2m4s) kubelet Error: ImagePullBackOff

同樣除了Pod外,用describe還能看其他資源的事件。

6. 查看容器日志

我們所有的應(yīng)用在K8s運(yùn)行前都是先封裝在容器里,再以 Pod 為單位調(diào)度到集群上的,那么一旦不符合預(yù)期,有錯(cuò)的時(shí)候,肯定第一時(shí)間想到的是看日志,這時(shí)候就需要用到下面這個(gè)命令:

kubectl  logs <podname> -n <namespace>

如果恰巧這個(gè) Pod 被重啟了,查不出來任何東西,可以通過增加 — previous 參數(shù)選項(xiàng),查看之前容器的日志。

kubectl logs <podname> --previous

總結(jié)

今天給大家總結(jié)了幾個(gè)使用頻率高的K8s命令操作,其實(shí)最主要的還是第一部分講的命令語法結(jié)構(gòu),掌握了這個(gè)結(jié)構(gòu),我們只需要把各個(gè)資源類型、操作類型、資源名稱這些變量填空到結(jié)構(gòu)里就能指示 K8s 完成我們想要的操作啦。

責(zé)任編輯:張燕妮 來源: 網(wǎng)管叨bi叨
相關(guān)推薦

2021-07-14 14:20:22

root命令Linux

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2023-11-06 07:16:22

WasmK8s模塊

2022-05-18 20:01:07

K8sIP 地址云原生

2022-06-14 07:56:15

Kubernetes存儲(chǔ)架構(gòu)K8S

2023-09-06 08:12:04

k8s云原生

2024-01-26 14:35:03

鑒權(quán)K8sNode

2023-11-30 16:25:21

2021-08-05 07:28:26

K8sNFS ProvisiSubdir

2023-01-12 11:31:00

K8sToken

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標(biāo)簽

2019-08-12 08:36:33

K8S網(wǎng)絡(luò)Pod

2022-02-07 08:42:28

k8sdocker命令

2022-04-29 10:40:38

技術(shù)服務(wù)端K8s

2023-08-03 08:36:30

Service服務(wù)架構(gòu)

2023-05-25 21:38:30

2023-08-04 08:19:02

2022-01-07 08:23:38

k8s AnnotationNginx

2022-12-27 14:18:45

K8S命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)