最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Label 2

2023-07-05 23:19 作者:阿兵云原生  | 我要投稿

【k8s 系列】k8s 學(xué)習(xí)十六,Label2

在 k8s 中,我們會(huì)輕輕松松的部署幾十上百個(gè)微服務(wù),這些微服務(wù)的版本,副本數(shù)的不同進(jìn)而會(huì)帶出更多的 pod

這么多的 pod ,如何才能高效的將他們組織起來(lái)的,如果組織不好便會(huì)讓管理微服務(wù)變得混亂不堪,雜亂無(wú)章

因此,就有了標(biāo)簽 Label

標(biāo)簽 Label

標(biāo)簽是一種簡(jiǎn)單的卻功能強(qiáng)大的 K8S 的其中一個(gè)特性,可以組織 K8S 中的資源,包括 pod 資源

標(biāo)簽是可以被附加到資源的任意鍵值對(duì)的,用來(lái)選擇具有該確切標(biāo)簽的資源

也就是說(shuō),咱們的標(biāo)簽的 key 在資源內(nèi)部是任意的,可以自己定義,只要是資源內(nèi)唯一就可以

舉個(gè)例子

我們可以將上述混亂的多個(gè) pod,定義 2 個(gè)標(biāo)簽來(lái)進(jìn)行組織

  • app

標(biāo)識(shí)這個(gè) pod 是屬于什么應(yīng)用

  • rel

標(biāo)識(shí)這個(gè) pod 中運(yùn)行的應(yīng)用版本,例如可以設(shè)置如下版本


    • stable

    • beta

    • canary

可以這樣來(lái)組織

通過(guò)上述標(biāo)簽的方式來(lái)組織微服務(wù),我們可以很輕易的就可以通過(guò) pod 標(biāo)簽來(lái)查看我們期望看到的 pod 狀態(tài)

寫(xiě)個(gè) demo

就用之前的 xmt-kubia,yaml 文件改改,命名為 xmt-kubia-labels.yaml

加上 2 個(gè)自定義的標(biāo)簽:

  • xmt_create: auto

  • rel: stable

apiVersion:?v1
kind:?Pod
metadata:
??name:?xmt-kubia-labels
??labels:
????xmt_create:?auto
????rel:?stable
spec:
??containers:
??-?image:?xiaomotong888/xmtkubia
????name:?xmtkubia-labels
????ports:
????-?containerPort:?8080
??????protocol:?TCP

通過(guò) kubectl create -f ?xmt-kubia-labels.yaml 將 pod 運(yùn)行起來(lái)

查看實(shí)際的標(biāo)簽情況

查看標(biāo)簽

kubectl?get?pod?--show-labels

查看指定的標(biāo)簽

kubectl?get?po?-L?rel,xmt_create

修改 pod 的標(biāo)簽

kubectl?label?pod?xmt-kubia-labels?key=value

修改已有標(biāo)簽

kubectl?label?pod?xmt-kubia-labels?rel=dev?--overwrite

標(biāo)簽選擇器

就通過(guò)上面的案例,發(fā)現(xiàn)標(biāo)簽好像用處也不大,其實(shí)標(biāo)簽是要和標(biāo)簽選擇器結(jié)合起來(lái)用的

標(biāo)簽選擇器可以讓我們根據(jù)特定的標(biāo)簽查出對(duì)應(yīng)的 pod 集合,并且可以對(duì)這些 pod 集合做操作

標(biāo)簽選擇器就是一種準(zhǔn)則,用于過(guò)濾包含具有特定值的特定標(biāo)簽的資源,篩選條件如下:

  • 包含或者不包含使用特定鍵的標(biāo)簽

  • 包含具有特定鍵值的標(biāo)簽

  • 包含具有特定鍵值的標(biāo)簽,但是對(duì)應(yīng)的值和我們指定的不同

使用標(biāo)簽選擇器

列出 pod

kubectl?get?po?-l?key=value

kubectl get po -l rel=dev

列出包含某個(gè)標(biāo)簽的 pod

kubectl?get?po?-l?rel

列出不包含某個(gè)標(biāo)簽的 pod,需要使用單引號(hào)將條件包起來(lái)

kubectl?get?po?-l?'!rel'

使用感嘆號(hào),這個(gè)條件可以寫(xiě)成 !rel 表示不包含這個(gè) rel 標(biāo)簽,因?yàn)?bash shell 會(huì)解析感嘆號(hào),所以我們使用 ! ,可以使用單引號(hào) ‘’ 來(lái)進(jìn)行包含和處理

也可以是 在 -l 后面添加 key=value

或者 key != value,

使用 in ,kubectl get po -l 'rel in (dev,prod)'

使用 notinkubectl get po -l 'rel notin (dev,prod)'

標(biāo)簽選擇器中使用多個(gè)條件

kubectl?get?pod?-l?條件1,條件2...

標(biāo)簽選擇器可以幫助我們列出篩選后的 pod,我們還可以對(duì)于一個(gè)子集中的所有 pod 都執(zhí)行某一類操作,例如刪除某個(gè)子集內(nèi)的所有 pod ,就可以是這樣寫(xiě)kubectl delete pod -l xx=xx

標(biāo)簽可以用于工作節(jié)點(diǎn)的分類

當(dāng)我們創(chuàng)建 pod 的時(shí)候,會(huì)有這樣的需求,創(chuàng)建的某些 pod 對(duì)于 CPU 的計(jì)算性能要求比較高,那么我就需要將這類 pod 部署到 性能好的節(jié)點(diǎn)上面去,這樣的話其實(shí)是將 程序和基礎(chǔ)架構(gòu)強(qiáng)耦合了

但是對(duì)于 K8S 的思想就不對(duì)等了,K8S 中的思想是應(yīng)用程序隱藏實(shí)際的基礎(chǔ)架構(gòu),在 K8S 中,創(chuàng)建出來(lái)的 pod 都是隨機(jī)分配到不同的 節(jié)點(diǎn)上的,

那么,我們需要實(shí)現(xiàn)如上的需求,我們可以通過(guò) 標(biāo)簽來(lái)完成

給 node 加上標(biāo)簽

前面我們說(shuō)過(guò)標(biāo)簽不僅僅是可以加在 pod 上面,實(shí)際上可以加上 K8S 中的所有資源上

例如,我們可以給我們的 node 加上一個(gè)標(biāo)簽,如: gpu=true,就指定這個(gè) node 的 gpu 比較好,暫時(shí)使用 minikube 來(lái)演示

將 pod 調(diào)度到指定的 node 上面

繼續(xù)上面的 demo,新建 xmt-kubia-gpu.yaml 文件,在 Spec 下面添加一個(gè) node 選擇器, nodeSlector,指定選擇 gpu: ”true” 的 node

使用kubectl create -f ?xmt-kubia-gpu.yaml 即可將創(chuàng)建的 pod 放到 標(biāo)簽為gpu: ”true” 的 node 上進(jìn)行調(diào)度

我們應(yīng)該通過(guò)標(biāo)簽選擇器考慮符合特定標(biāo)準(zhǔn)的邏輯節(jié)點(diǎn)組 來(lái)調(diào)度 pod

順帶說(shuō)一下:

我們?nèi)羰钦嫦胫付?pod 被調(diào)度到一個(gè)指定的節(jié)點(diǎn)上也是可以做的,我們可以通過(guò) kubectl get node --show-labels 查看 node 的標(biāo)簽

image-20211212172416354

能夠看到有一個(gè)鍵為 kubernetes.io/hostname 的標(biāo)簽,對(duì)應(yīng)的值是該節(jié)點(diǎn)的主機(jī)名,因此我們可以利用這個(gè)標(biāo)簽來(lái)將我們的 pod 調(diào)度到指定的節(jié)點(diǎn)上面

這種做法會(huì)有一個(gè)風(fēng)險(xiǎn),若我們指定的這個(gè)節(jié)點(diǎn)處于離線狀態(tài),那么我們創(chuàng)建的 pod 是不可調(diào)度的,這種方式技術(shù)上可行,但是不建議這么玩

注解

注解 annotations

注解和標(biāo)簽類似,但是和標(biāo)簽不同,注解不能像標(biāo)簽一個(gè)用于對(duì)對(duì)象的分組

注解能夠容納更多的信息,幫助我們對(duì)于資源的作用理解的更加順暢,注解也是一個(gè)鍵值對(duì)的形式

添加和修改注解

kubectl?annotate?pod?podName?具體的鍵值對(duì)

命名空間

命名空間 namespace

不同命名空間內(nèi)可以有相同的資源名

查看命名空間

kubectl get ns

查看指定命名空間的 pod

kubectl get pod --namespace xxx

創(chuàng)建一個(gè)命名空間

  • 使用命令的方式

kubectl create namespace xxx

  • 使用 yaml 的方式

編寫(xiě) yaml 文件,使用 kubectl create 創(chuàng)建即可

apiVersion:?v1
kind:?Namespace
metadata:
??name:?test_ns

刪除命名空間

kubectl?delete?ns?xxx

刪除命名空間的 pod,但是保留 命名空間

kubectl?delete?pod?--all

如果 命名空間中有 RC,那么刪除的 pod,還會(huì)被重新創(chuàng)建出來(lái),RC 會(huì)去檢測(cè) pod 的副本數(shù)量,如果小于設(shè)定的副本數(shù)量,那么就會(huì)動(dòng)態(tài)的創(chuàng)建

刪除命名空間中的所有資源

kubectl?delete?all?--all

今天就到這里,學(xué)習(xí)所得,若有偏差,還請(qǐng)斧正

歡迎點(diǎn)贊,關(guān)注,收藏

朋友們,你的支持和鼓勵(lì),是我堅(jiān)持分享,提高質(zhì)量的動(dòng)力

好了,本次就到這里

技術(shù)是開(kāi)放的,我們的心態(tài),更應(yīng)是開(kāi)放的。擁抱變化,向陽(yáng)而生,努力向前行。

我是阿兵云原生,歡迎點(diǎn)贊關(guān)注收藏,下次見(jiàn)~


Label 2的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
宝鸡市| 桓台县| 郓城县| 思茅市| 巧家县| 文成县| 鄂托克旗| 关岭| 广河县| 革吉县| 桐乡市| 辽源市| 布拖县| 绥棱县| 新源县| 浦县| 绵阳市| 息烽县| 咸宁市| 阜康市| 曲周县| 安吉县| 张掖市| 澳门| 华阴市| 苍山县| 新巴尔虎右旗| 阳曲县| 宣武区| 新民市| 玉树县| 饶河县| 辽阳市| 沂源县| 凉城县| 宁都县| 富阳市| 米脂县| 阿图什市| 蕲春县| 扎囊县|