k8s通过label来控制pod的位置
默認(rèn)情況下,scheduler會(huì)將pod調(diào)度到所有可用的Node,不過(guò)有些情況我們希望將 Pod 部署到指定的 Node,比如將有大量磁盤 I/O 的 Pod 部署到配置了 SSD 的 Node;或者 Pod 需要 GPU,需要運(yùn)行在配置了 GPU 的節(jié)點(diǎn)上。
kubernetes通過(guò)label來(lái)實(shí)現(xiàn)這個(gè)功能
label 是 key-value 對(duì),各種資源都可以設(shè)置 label,靈活添加各種自定義屬性。比如執(zhí)行如下命令標(biāo)注 k8s-node1 是配置了 SSD 的節(jié)點(diǎn)
首先我們給k8s-node1節(jié)點(diǎn)打上一個(gè)ssd的標(biāo)簽
kubectl label node k8s-node1 disktype=ssd通過(guò) kubectl get node --show-labels
disktype=ssd?已經(jīng)成功添加到 k8s-node1,除了?disktype,Node 還有幾個(gè) Kubernetes 自己維護(hù)的 label。
?
有了自定義的disktype=ssd 這個(gè)標(biāo)簽,只需要在配置文件中定義 nodeselector 為這個(gè)自定義標(biāo)簽,就可以指定pod在k8s-node1中運(yùn)行
?
?
部署deployment驗(yàn)證
?
全部 6 個(gè)副本都運(yùn)行在 k8s-node1 上,符合我們的預(yù)期。
?
?
要?jiǎng)h除 label?disktype,執(zhí)行如下命令:
kubectl label node k8s-node1 disktype-?node/k8s-node1 labeled
不過(guò)刪除標(biāo)簽 并不會(huì)重新部署,所以pod依舊是在k8s-node1上。
要想讓k8s-node2也參與到工作負(fù)載,則必須刪掉當(dāng)前的deployment,并刪除或注釋掉配置文件中的 nodeSelector配置。
?
?我們看到之前的pod會(huì)被全部刪除掉,并重新調(diào)度到不同的k8s節(jié)點(diǎn)上。
?
轉(zhuǎn)載于:https://www.cnblogs.com/benjamin77/p/9901912.html
總結(jié)
以上是生活随笔為你收集整理的k8s通过label来控制pod的位置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 美国数学月刊问题18-10-31
- 下一篇: 【Django】MTV(Django)模