溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

kubectl入門知識(shí)點(diǎn)有有哪些

發(fā)布時(shí)間:2022-01-07 15:55:22 來(lái)源:億速云 閱讀:140 作者:iii 欄目:云計(jì)算

本篇內(nèi)容主要講解“kubectl入門知識(shí)點(diǎn)有有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“kubectl入門知識(shí)點(diǎn)有有哪些”吧!

前言

對(duì) Kubernetes 稍有了解的讀者應(yīng)該都知道聲明式 API 的說(shuō)法,kubectl 就是一個(gè)這種 API 的客戶端,所以 kubectl 的主要功能就是用來(lái)操作對(duì)象的。

動(dòng)作

在 kubectl 中被稱為 command 也就是命令。使用 kubectl --help 能看到可用的命令列表:

$ kubectl --help
kubectl controls the Kubernetes cluster manager.

Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
 create        Create a resource from a file or from stdin.
...
 run           在集群中運(yùn)行一個(gè)指定的鏡像
...

Basic Commands (Intermediate):
 explain       查看資源的文檔
 get           顯示一個(gè)或更多 resources
...
Deploy Commands:
 rollout       Manage the rollout of a resource
...

可以看到 kubectl 的命令行幫助非常不錯(cuò),不僅有功能說(shuō)明、分類,還有難度標(biāo)識(shí),甚至有部分的中文說(shuō)明,kubectl 的每個(gè)命令都可以用 --help 查看進(jìn)一步的幫助說(shuō)明。

這里列出了很多可用的命令,按照操作能力,主流命令基本可以分為增刪改查(CRUD)四種。

C

新建命令用于在集群中創(chuàng)建對(duì)象,最常用的新建命令應(yīng)該是 createrun 了,create 能夠創(chuàng)建多種對(duì)象,而 run 則主要用來(lái)創(chuàng)建 Pod。這兩個(gè)命令都需要在命令行中使用參數(shù)的方式來(lái)表達(dá)待創(chuàng)建的對(duì)象的字段內(nèi)容,其表達(dá)力非常粗糙和有限,并且?guī)в忻黠@的命令式 API 風(fēng)味,在我的日常工作中已經(jīng)很少用到這樣的命令了。

但是這種命令往往有個(gè)妙用,--dry-run=client(舊版本中是 --dry-run),可以在不產(chǎn)生實(shí)際操作的情況下,測(cè)試命令的輸出,加上 -o yaml,可以幫助輸出 YAML 文檔。

R

get 是最常用的查詢指令,用于獲取對(duì)象列表和基本信息,而 describe 則用于獲取一個(gè)對(duì)象的詳細(xì)信息。另外一個(gè)常用的讀取指令就是 Debug 常用的日志查看指令:kubectl logs。

U

最重要的更新命令可以說(shuō)是 apply,edit 了,patchlabel、annotation、scale 等命令也算常用。

apply 是把 yaml 提交給 Kubernetes 集群的最常用方式,而 edit patch 都是用于修改線上負(fù)載的常用手段。labelannotation 命令則是用于修改對(duì)象元數(shù)據(jù)的,例如標(biāo)簽和注解。

D

這個(gè)沒(méi)什么好說(shuō)——delete

獲取幫助

kubectl 的所有命令、子命令都支持 --help 參數(shù),可以用這種方式獲取幫助。

kubectl options 命令能夠獲取 kubectl 的所有全局參數(shù)。

常用參數(shù)

-f:很多指令(不只是 applycreate)都可以用 -f <文件名> 的方式進(jìn)行輸入,如果使用管道操作,則可以用參數(shù) -f - 接收 STDIN 的輸入。

-l:可以使用各種對(duì)象上的標(biāo)簽對(duì)操作范圍進(jìn)行過(guò)濾,例如 -l app=hello

-o:指定輸出格式,這個(gè)參數(shù)相對(duì)復(fù)雜,最常用的是 yaml 或者 json 用于輸出機(jī)器報(bào)文,還可以用 JSON Path 或者 Go Template 對(duì)結(jié)果進(jìn)行處理。

對(duì)象

對(duì)象通常是類型+名稱的一個(gè)組合,可以用 kubectl 獲得當(dāng)前集群支持的對(duì)象類型:

kubectl入門知識(shí)點(diǎn)有有哪些

如上圖,輸出內(nèi)容包含幾個(gè)列:名稱、簡(jiǎn)稱、API 群組、是否歸屬命名空間以及對(duì)象的 Kind 屬性。例如常用的 Deployment

  • 名稱:

    Deployment

  • 簡(jiǎn)稱:

    Deploy

  • API 群組:

    apps

  • 歸屬命名空間:

  • Kind:

    Deployment

使用命令 kubectl get deploy,就能獲得當(dāng)前命名空間中的 Deployment 對(duì)象列表,如果在尾巴上加入 Deployment 的名稱,就能得到符合名稱要求的 Deployment 對(duì)象,

Schema

前面提到的 -f 參數(shù),或者是 get -o yaml,都要用到具體的對(duì)象數(shù)據(jù)結(jié)構(gòu),這個(gè)結(jié)構(gòu)到底是哪里規(guī)定的呢?基本結(jié)構(gòu)可以分為三個(gè)部分,以一個(gè) Namespace 為例:

apiVersion: v1
kind: Namespace
metadata:
 name: default
spec:
 finalizers:
 - kubernetes

一般會(huì)分為四個(gè)基礎(chǔ)字段:apiVersion、kind、metadata、status 以及 spec。

  • apiVersion:

    格式為 <apiGroup>/<apiVersion>,一個(gè)對(duì)象的 API Group,可以用前文提到的 api-resources 命令查到,而版本則可以通過(guò) kubectl api-versions 查詢得到。

  • kind:

    對(duì)應(yīng) api-resources 命令輸出的字段。

  • metadata:

    元數(shù)據(jù),其中包括標(biāo)簽、注解、名稱等字段,如果對(duì)象是屬于命名空間的,也會(huì)把命名空間寫在這里。

  • status:

    這個(gè)字段的內(nèi)容通常是由 Kubenretes 自動(dòng)填寫的。

    經(jīng)常會(huì)被省略掉。

  • spec:

    具體的對(duì)象內(nèi)容,可以由幾個(gè)途徑獲取其定義結(jié)構(gòu)

    • 部分資源可以使用 kubectl explain <對(duì)象類別> 獲得解釋

    • 如果該資源在集群中有對(duì)象存在,可以使用 kubectl get <對(duì)象類別> <對(duì)象名稱> -o yaml 的方式獲得原文,向其致敬。

    • 如果前兩種方法都沒(méi)有,就需要去查看 Kubernetes 或者第三方的 API Reference 了。

到此,相信大家對(duì)“kubectl入門知識(shí)點(diǎn)有有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI