様々なユースケースでサポートされるラベル
Kubernetes Engine (OKE)がクラスタを作成および管理する際に使用するラベルについて確認します。
Kubernetesラベルの詳細は、Kubernetesのドキュメントを参照してください。
topology.kubernetes.io/zone
Kubernetes Engineは、配置されている可用性ドメインに従って、クラスタ内の各ワーカー・ノード(管理対象ノードと仮想ノードの両方)にtopology.kubernetes.io/zone
ラベルを自動的に追加します。(topology.kubernetes.io/zone
ラベルは、以前のKubernetesリリースのfailure-domain.beta.kubernetes.io/zone
ラベルでした。)
可用性ドメインとは、1つのリージョン内に存在する1つ以上のデータ・センターです。1つのリージョンは、1つ以上の可用性ドメインで構成されます。可用性ドメインは相互に分離され、フォルト・トレラントであり、同時に障害が発生することはほとんどありません。リージョンおよび可用性ドメインを参照してください。
topology.kubernetes.io/zone
ラベルは様々な方法で使用できます:
- 複数の可用性ドメインにワーカー・ノードがあるクラスタの場合、
topology.kubernetes.io/zone
ラベルを(oci.oraclecloud.com/fault-domain
ラベルとともに使用して)使用して、ポッドを実行するワーカー・ノードを制約できます。ポッド仕様にtopology.kubernetes.io/zone
ラベルを含めて、ワーカー・ノードが配置されている必要がある可用性ドメインを指定します。 topology.kubernetes.io/zone
ラベルを使用して、FlexVolumeボリューム・プラグインの使用時にブロック・ボリューム・サービスに永続ボリューム要求をプロビジョニングする可用性ドメインおよびリージョンを指定できます。「Kubernetesクラスタのストレージの設定」を参照してください。
topology.kubernetes.io/zone
ラベルの値を指定する場合は、Oracle Cloud Infrastructureリージョンの可用性ドメイン名の正しい短縮バージョンを使用する必要があります。
多くの場合、可用性ドメイン名の短縮バージョンのフォーマットは<region-identifier>-1-AD-<availability-domain-number>
です。たとえば、UK-LONDON-1-AD-1
、UK-LONDON-1-AD-2
、UK-LONDON-1-AD-3
、AP-MELBOURNE-1-AD-1
、ME-JEDDAH-1-AD-1
です。使用するリージョン識別子および可用性ドメインを確認するには、リージョン別可用性を参照してください。
次に示すように、アッシュバーンおよびフェニックス・リージョンの可用性ドメイン名の短縮バージョンは例外です:
- フェニックス・リージョンの場合、短縮バージョンの可用性ドメイン名は
PHX-AD-<availability-domain-number>
の形式です。たとえば、PHX-AD-1
、PHX-AD-2
、PHX-AD-3
です。 - アッシュバーン・リージョンの場合、短縮バージョンの可用性ドメイン名は
US-ASHBURN-AD-<availability-domain-number>
の形式です。たとえば、US-ASHBURN-AD-1
、US-ASHBURN-AD-2
、US-ASHBURN-AD-3
です。
oci.oraclecloud.com/fault-domain
Kubernetes Engineは、配置されているフォルト・ドメインに従って、クラスタ内の各ワーカー・ノード(管理対象ノードと仮想ノードの両方)にoci.oraclecloud.com/fault-domain
ラベルを自動的に追加します。
フォルト・ドメインは、同じ可用性ドメイン内の他のフォルト・ドメインとは異なるハードウェアおよびインフラストラクチャのグループです。各可用性ドメインには、FAULT-DOMAIN-1、FAULT-DOMAIN-2、FAULT-DOMAIN-3という名前のフォルト・ドメインが3つあります。すべてのコンピュート・インスタンスはフォルト・ドメインに配置されます。フォルト・ドメインを参照してください。
ポッド仕様にoci.oraclecloud.com/fault-domain
ラベルを含めることで、ポッドを実行するワーカー・ノードを制約できます。oci.oraclecloud.com/fault-domain
ラベルを使用して、ワーカー・ノードが配置されている必要があるフォルト・ドメインを指定します。
通常、単一の可用性ドメインを持つリージョンにクラスタが配置されている場合は、oci.oraclecloud.com/fault-domain
ラベルを使用して高可用性を実現します。
例:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
nodeSelector:
oci.oraclecloud.com/fault-domain: FAULT-DOMAIN-3
前述のポッド仕様の例をクラスタに適用すると、nginxポッドは、可用性ドメインのFAULT-DOMAIN-3にワーカー・ノードがある場合にのみ作成されます。クラスタにFAULT-DOMAIN-1またはFAULT-DOMAIN-2のワーカー・ノードのみがある場合、ポッドは作成されず、保留ステータスのままになります。
クラスタに複数の可用性ドメイン内のワーカー・ノードがある場合は、ポッド仕様にfailure-domain.beta.kubernetes.io/zone
ラベルとoci.oraclecloud.com/fault-domain
ラベルの両方を含めて、ポッドを実行するワーカー・ノードの可用性ドメインとフォルト・ドメインの両方を指定します。
node.kubernetes.io/exclude-from-external-load-balancers
Kubernetes Engineは、作成したクラスタでServiceNodeExclusion
機能ゲートを自動的に有効にします。クラスタでServiceNodeExclusion
機能ゲートを有効にすると、特定の管理対象ノードにラベルを追加して、Oracle Cloud Infrastructureロード・バランサ・バックエンド・セットのバックエンド・サーバーのリストからそれらを除外できます。バックエンド・セットに含まれるワーカー・ノードが少ないほど、ロード・バランサの更新速度は速くなります。
node.kubernetes.io/exclude-from-external-load-balancers
ラベルをノードに追加します:kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers=true
例:
kubectl label nodes 10.0.1.2 node.kubernetes.io/exclude-from-external-load-balancers=true
ラベルをノードに追加すると、ラベルの値に関係なく、そのノードはバックエンド・サーバーのリストから除外されることに注意してください。たとえば、node.kubernetes.io/exclude-from-external-load-balancers label=false
を指定した場合でも、ワーカー・ノードはバックエンド・サーバーのリストから除外されます。
ノードからラベルを削除するには、次のように入力します:
kubectl label nodes <node-name> node.kubernetes.io/exclude-from-external-load-balancers-
ノード・プール内のすべてのノードをバックエンド・サーバーのリストから除外するには、ノード・プールを作成または変更するときに、ノード・プールのKubernetesラベル・プロパティにnode.kubernetes.io/exclude-from-external-load-balancers=true
を追加します。
node.kubernetes.io/exclude-from-external-load-balancers
ラベルは仮想ノードではサポートされません。