様々なユースケースでサポートされるラベル

Kubernetes Engine (OKE)がクラスタを作成および管理する際に使用するラベルについて確認します。

Kubernetes Engineは、次のような様々なラベルを使用してクラスタを作成および管理します:

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-1UK-LONDON-1-AD-2UK-LONDON-1-AD-3AP-MELBOURNE-1-AD-1ME-JEDDAH-1-AD-1です。使用するリージョン識別子および可用性ドメインを確認するには、リージョン別可用性を参照してください。

次に示すように、アッシュバーンおよびフェニックス・リージョンの可用性ドメイン名の短縮バージョンは例外です:

  • フェニックス・リージョンの場合、短縮バージョンの可用性ドメイン名はPHX-AD-<availability-domain-number>の形式です。たとえば、PHX-AD-1PHX-AD-2PHX-AD-3です。
  • アッシュバーン・リージョンの場合、短縮バージョンの可用性ドメイン名はUS-ASHBURN-AD-<availability-domain-number>の形式です。たとえば、US-ASHBURN-AD-1US-ASHBURN-AD-2US-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ラベルは仮想ノードではサポートされません。