Red Hat OpenShift 4 特定節點 Label 更新
以前的演講 - 那些年的 OpenShift 3.11 容器平台技術選型_20190122 有分享過,Red Hat OpenShift 對於節點的角色有分 3 種:
- Master
- Infra
- Worker
而 OpenShift 4 的安裝方式是預設不會有 Infa 節點的存在,僅會先有 Master 及 Worker,而需要特別設定 Label - 從 Worker 轉成 Infra 節點。本文將花點篇幅講一下轉法
Q: 如何辨識特定節點為何種角色?
看標籤 (Label),對於 Red Hat OpenShift 來講,三個角色分別對應的標籤名為:
- Master
node-role.kubernetes.io/master=""
- Infra
node-role.kubernetes.io/infra=""
- Worker
node-role.kubernetes.io/worker=""
只要看著標籤,就知道該節點是什麼角色。除此之外,同一個節點可以擁有多個角色
Q: 如何列舉所有節點名稱?
1 | $ oc get nodes |
Q: 如何列舉所有節點的 Label 資訊?
1 | $ oc get nodes --show-labels |
Q: 如何列舉特定節點的 Label 資訊?
以 ip-10-0-142-198.us-east-2.compute.internal
為例:
1 | # Example: oc label --list node <node> |
Q: 如何列出所有角色為 worker 的節點?
1 | $ oc get nodes -l node-role.kubernetes.io/worker |
Q: 如何針對特定節點新增 Label
以 ip-10-0-142-198.us-east-2.compute.internal
為例,新增 infra
標籤
1 | # Example: oc label node <node> node-role.kubernetes.io/infra="" |
做完之後可以用 oc get nodes
或者是開 Web console 看一下狀態改變
Q: 如何針對特定節點移除 Label?
以 ip-10-0-142-198.us-east-2.compute.internal
為例,移除 worker
標籤
1 | # oc label node <node-name> node-role.kubernetes.io/worker- |
做完之後可以用 oc get nodes
或者是開 Web console 看一下狀態改變
Q: 如何把 OpenShift Router 搬到 Infra 節點上去?
要對 Operator 進行修改操作,不要直接修改 router 裡面的內容,會一直被 Operator 洗掉設定
1 | oc patch ingresscontroller/default --type=merge -n openshift-ingress-operator -p '{"spec": {"nodePlacement":{"nodeSelector":{"matchLabels":{"node-role.kubernetes.io/infra": ""}}}}}' |
如果是要搬其他的服務,也是以此類推,或者是參考 Moving resources to infrastructure MachineSets
Q: 如果有除了 3 大角色以外的節點分類該怎麼辦?
假設你今天有 3 個節點,要準備跑特定的服務,譬如像是 Ceph,歸類角色為 ceph-node
,依據 同一個節點可以擁有多個角色
的特性,可以執行如下指令:
1 | # Example: oc label node <node> node-role.kubernetes.io/ceph-node="" |