すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:クラスターの問題を修正する方法に関するクラスターチェック項目と提案

最終更新日:Nov 14, 2024

Container Service for Kubernetes (ACK) は、クラスター更新チェック、クラスター移行チェック、コンポーネントチェック、およびノードプールチェックをサポートしています。 このトピックでは、クラスターチェック項目について説明し、クラスターの問題を修正する方法について提案します。

目次

クラスターチェック項目

クラスター更新チェック

Kubernetesは複雑です。 新しいKubernetesバージョンでは、ランタイムを変更したり、特定のKubernetes APIを廃止したり、新しい機能を導入したりすることができます。 これらの更新により、クラスターを更新するときに高いリスクが存在します。 クラスターをスムーズに更新できるように、ACKはクラスター更新チェック機能を提供します。 事前チェックは、クラスターが更新される前に自動的にトリガーされます。 クラスターが事前チェックに合格した場合にのみ、クラスターが更新されます。

クラスター更新チェックは、次のチェックで構成されます。

  • クラスターリソースチェック: Server Load Balancer (SLB) インスタンス、Elastic Compute Service (ECS) インスタンス、仮想プライベートクラウド (VPC) など、ACKクラスターに関連するクラウドリソースをチェックします。

  • クラスターコンポーネントチェック: ACKクラスター、コンポーネント、およびアプリケーションの設定を確認します。 たとえば、システムは、コンポーネントバージョンが要件を満たしているかどうか、またはアプリケーションが非推奨のAPIを使用しているかどうかをチェックします。

  • クラスタ構成チェック: ACKクラスタ内のノードに関連する構成をチェックします。 クラスター構成チェックを実行するには、各ノードにポッドを作成して情報を収集する必要があります。

クラスター更新チェック項目は、クラスターのタイプ、ランタイム、バージョンによって異なります。 次の表のチェック項目は参照用です。 コンソールの実際のチェック項目が優先されます。

タイプ

チェックアイテム

説明

クラスターリソース

APIServer SLB

SLBインスタンスが存在するかどうかを確認します。

SLBインスタンスのステータスが正常かどうかを確認します。

リスナーのポートやプロトコルなど、SLBリスナーの設定が有効かどうかを確認します。

SLBバックエンドサーバーグループの設定が有効かどうかを確認します。

SLBアクセス制御の設定が有効かどうかを確認します。 アクセス制御が設定されていない場合、このチェック項目は正常と表示されます。

VPC

VPCが存在するかどうかを確認します。

VPCのステータスが正常かどうかを確認します。

vSwitch

vSwitchが存在するかどうかを確認します。

vSwitchのステータスが正常かどうかを確認します。

vSwitchが2つ以上のアイドルIPアドレスを提供できるかどうかを確認します。

ECS

ECSインスタンスが存在するかどうかを確認します。

ECSインスタンスのステータスが正常かどうかを確認します。

ECSインスタンスのセキュリティグループが正常かどうかを確認します。

ECSインスタンスの有効期限が切れているかどうかを確認します。

ECSインスタンスのインスタンスタイプが要件を満たしているかどうかを確認します。

Cloud Assistantクライアントのステータスが正常かどうかを確認します。

クラスターコンポーネント

Kube Proxyマスター

コンポーネントが存在するかどうかを確認します。

Kubeプロキシワーカー

コンポーネントが存在するかどうかを確認します。

APIサービス

利用できないAPIサービスが存在するかどうかを確認します。

クラスターインスタンス

クラスター内のマスターインスタンスの数が3つであるか5つであるかを確認します。

クラスターコンポーネント

Terwayのバージョンが要件を満たしているかどうかを確認します。

CoreDNSのバージョンが要件を満たしているかどうかを確認します。

クラウドコントローラマネージャのバージョンが要件を満たしているかどうかを確認します。

NGINX Ingressコントローラーのバージョンが要件を満たしているかどうかを確認します。

ACK仮想ノードのバージョンが要件を満たしているかどうかを確認します。

メトリックサーバーのバージョンが要件を満たしているかどうかを確認します。

ノード

ノードのIPアドレスが存在するかどうかを確認します。

ノードがスケジュール可能かどうかを確認します。

ノードの準備ができているかどうかを確認します。

ノードのオペレーティングシステムを更新できるかどうかを確認します。

ノードで使用可能なポッドの数が2より大きいかどうかをチェックします。

非推奨API

クラスターが非推奨APIを使用しているかどうかを確認します。

クラスター設定

iptables設定

iptables設定が有効かどうかを確認します。

オペレーティングシステム

オペレーティングシステムを更新できるかどうかを確認します。

yum

Yumが正常かどうかを確認します。

ディスク

ノードのファイルシステムが正常かどうかを確認します。

ノードの空きディスク容量が合計ディスク容量の5% を超えているかどうかを確認します。

スワップ

ノードのスワップが有効かどうかを確認します。

NTP

ノードのNTPが正常かどうかを確認します。

システム化

ノードのSystemdバージョンがsystemd-219-67以降であるかどうかをチェックします。

Kubelet

kubelet設定が要件を満たしているかどうかを確認します。

コンテナランタイム

DockerランタイムまたはContainerdランタイムが正常かどうかを確認します。

カーネル構成

ノードのカーネル構成が正常かどうかを確認します。

マニフェストの設定

マニフェストファイルが要件を満たしているかどうかを確認します。

クラスター移行チェック

事前チェックは、クラスターが移行される前に自動的にトリガーされます。 クラスターが事前チェックに合格した場合にのみ、クラスターが移行されます。 クラスター移行チェックは、次のシナリオに適しています。

  • ACK専用クラスターからACK Proクラスターに移行します。

  • ACK BasicクラスターからACK Proクラスターに移行します。

クラスター移行チェックは、次のチェックで構成されます。

  • クラスターリソースチェック: SLBインスタンス、ECSインスタンス、VPCなど、ACKクラスターに関連するクラウドリソースをチェックします。

  • クラスターコンポーネントチェック: ACKクラスター内のコンポーネントの設定をチェックします。 たとえば、システムは利用できないAPIサービスが存在するかどうかをチェックします。

  • クラスタ構成チェック: ACKクラスタ内のノードに関連する構成をチェックします。 クラスター構成チェックを実行するには、各ノードにポッドを作成して情報を収集する必要があります。

  • コンポーネントの使用: ACK専用クラスターからACK Proクラスターに移行すると、一部のコンポーネントはACKによって管理されます。 したがって、移行前にこれらのコンポーネントが正常かどうかを確認します。

クラスター移行チェック項目は、クラスターのタイプ、ランタイム、バージョンによって異なります。 次の表のチェック項目は参照用です。 コンソールの実際のチェック項目が優先されます。

タイプ

チェックアイテム

説明

クラスターリソース

APIServer SLB

SLBインスタンスが存在するかどうかを確認します。

SLBインスタンスのステータスが正常かどうかを確認します。

リスナーのポートやプロトコルなど、SLBリスナーの設定が有効かどうかを確認します。

SLBバックエンドサーバーグループの設定が有効かどうかを確認します。

SLBアクセス制御の設定が正常かどうかを確認します。 アクセス制御が設定されていない場合、このチェック項目は正常と表示されます。

VPC

VPCが存在するかどうかを確認します。

VPCのステータスが正常かどうかを確認します。

vSwitch

vSwitchが存在するかどうかを確認します。

vSwitchのステータスが正常かどうかを確認します。

vSwitchが2つ以上のアイドルIPアドレスを提供できるかどうかを確認します。

ECS

ECSインスタンスが存在するかどうかを確認します。

ECSインスタンスのステータスが正常かどうかを確認します。

ECSインスタンスのセキュリティグループが正常かどうかを確認します。

Cloud Assistantクライアントのステータスが正常かどうかを確認します。

クラスターコンポーネント

Kube Proxyマスター

コンポーネントが存在するかどうかを確認します。

Kubeプロキシワーカー

コンポーネントが存在するかどうかを確認します。

APIサービス

利用できないAPIサービスが存在するかどうかを確認します。

クラスターインスタンス

クラスター内のマスターインスタンスの数が3つであるか5つであるかを確認します。

ノード

ノードのIPアドレスが存在するかどうかを確認します。

ノードがスケジュール可能かどうかを確認します。

ノードの準備ができているかどうかを確認します。

ノードのオペレーティングシステムを更新できるかどうかを確認します。

ノードで使用可能なポッドの数が2より大きいかどうかをチェックします。

クラスター設定

オペレーティングシステム

オペレーティングシステムを更新できるかどうかを確認します。

yum

Yumが正常かどうかを確認します。

コンポーネントの使用

Cloud Controller Manager

クラウドコントローラマネージャが正常かどうかを確認します。

コンポーネントチェック

コンポーネントのチェックは、コンポーネントの更新シナリオに適しています。 事前チェックは、コンポーネントが更新される前に自動的にトリガーされます。 コンポーネントは、クラスターが事前チェックに合格した場合にのみ更新されます。

コンポーネントのチェック項目は、クラスターのタイプ、ランタイム、バージョンによって異なります。 次の表のチェック項目は参照用です。 コンソールの実際のチェック項目が優先されます。

タイプ

チェックアイテム

説明

cloud-controller-manager

Addon_CCM

更新によってSLBが変更されるかどうかを確認します。

Component_Block_Version

クラウドコントローラマネージャを更新できるかどうかを確認します。

csi-plugin

DaemonSet_アノテーション

DaemonSetのアノテーションが要件を満たしているかどうかを確認します。

Csi_Driver_Attributes

CSIドライバ属性が要件を満たすかどうかをチェックします。

Node_Status_Ready

ノードの準備ができているかどうかを確認します。

csi-provisioner

Stateful_Set_Exist

リソースがStatefulSetであるかどうかをチェックします。

Deployment_Annotation

展開のアノテーションが要件を満たしているかどうかを確認します。

Storage_Class_Attributes

StorageClass属性が要件を満たしているかどうかをチェックします。

Csi_Provisioner_Node_Count

レディノードの数が2以上かどうかをチェックします。

terway-eniip

システム化

ノードのSystemdバージョンがsystemd-219-67以降であるかどうかをチェックします。

nginx-ingress-controller

Deployment_Healthy

NGINX Ingress Deploymentが正常かどうかをチェックします。

Deployment_Not_Under_HPA

デプロイ用に水平ポッド自動スケーラー (HPA) が設定されているかどうかを確認します。

Deployment_Not_Modified

デプロイメントが変更されたかどうかをチェックします。

Nginx_Ingress_Pod_Error_Log

NGINXエラーログが生成されているかどうかを確認します。

LoadBalancer_Service_Healthy

NGINXサービスが正常かどうかをチェックします。

Nginx_Ingress_Configuration

Ingressに互換性のない構成が存在するかどうかを確認します。

aliyun-acr-credential-helper

RamRole_Exist

コンポーネントにAliyunCSManagedAcrRoleロールが割り当てられているかどうかを確認します。

ack-cost-exporter

RamRole_Exist

コンポーネントにAliyunCSManagedCostRoleロールが割り当てられているかどうかを確認します。

ノードプールチェック

ノードプールのチェックは、ノードプールの更新シナリオに適しています。 事前チェックは、ノードプールが更新される前に自動的にトリガーされます。 ノードプールが事前チェックに合格した場合にのみ、ノードプールが更新されます。

ノードプールチェックは、次のチェックで構成されます。

  • クラスターリソースチェック: SLBインスタンスやVPCなど、ACKクラスターに関連するクラウドリソースをチェックします。

  • クラスターコンポーネントのチェック: ACKクラスター、ノード、およびアプリケーションの設定をチェックします。

  • クラスタ構成チェック: ACKクラスタ内のノードに関連する構成をチェックします。 クラスター構成チェックを実行するには、各ノードにポッドを作成して情報を収集する必要があります。

ノードプールのチェック項目は、クラスターのタイプ、ランタイム、バージョンによって異なります。 次の表のチェック項目は参照用です。 コンソールの実際のチェック項目が優先されます。

タイプ

チェックアイテム

説明

クラスターリソース

APIServer SLB

SLBインスタンスが存在するかどうかを確認します。

SLBインスタンスのステータスが正常かどうかを確認します。

リスナーのポートやプロトコルなど、SLBリスナーの設定が有効かどうかを確認します。

SLBバックエンドサーバーグループの設定が有効かどうかを確認します。

SLBアクセス制御の設定が有効かどうかを確認します。 アクセス制御が設定されていない場合、このチェック項目は正常と表示されます。

VPC

VPCが存在するかどうかを確認します。

VPCのステータスが正常かどうかを確認します。

vSwitch

vSwitchが存在するかどうかを確認します。

vSwitchのステータスが正常かどうかを確認します。

vSwitchが2つ以上のアイドルIPアドレスを提供できるかどうかを確認します。

クラスターコンポーネント

APIサービス

利用できないAPIサービスが存在するかどうかを確認します。

クラスターインスタンス

クラスター内のマスターインスタンスの数が3つであるか5つであるかを確認します。

ノード

ノードの準備ができているかどうかを確認します。

ノードで使用可能なポッドの数が2より大きいかどうかをチェックします。

HostPath

hostPathを使用するポッドがノードに存在するかどうかをチェックします。

クラスター設定

iptables設定

iptables設定が有効かどうかを確認します。

オペレーティングシステム

オペレーティングシステムを更新できるかどうかを確認します。

yum

Yumが正常かどうかを確認します。

ディスク

ノードのファイルシステムが正常かどうかを確認します。

ノードの空きディスク領域

ノードの空きディスク容量が合計ディスク容量の5% を超えているかどうかを確認します。

スワップ

ノードのスワップが有効かどうかを確認します。

NTP

ノードのNTPが正常かどうかを確認します。

システム化

ノードのSystemdバージョンがsystemd-219-67以降であるかどうかをチェックします。

Kubelet

kubelet設定が要件を満たしているかどうかを確認します。

コンテナランタイム

DockerランタイムまたはContainerdランタイムが正常かどうかを確認します。

カーネル構成

ノードのカーネル構成が正常かどうかを確認します。

マニフェストの設定

マニフェストファイルが要件を満たしているかどうかを確認します。

クラスターの問題を修正する方法に関する提案

問題

提案

ロールAliyun_ARMS_CMonitor_Roleがありません

Prometheusのマネージドサービスに対するクラスター権限を付与します。 Application Real-Time Monitoring Service (ARMS) およびTracing Analysisに対する権限を手動で付与する方法の詳細については、「KubernetesクラスターのKubernetesモニタリングの有効化」をご参照ください。

古いSystemdバージョン

Systemdの更新

古いコンポーネントバージョン

コンポーネントを更新します。 詳細については、「コンポーネントの管理」をご参照ください。

Yumタイムアウト

次のコマンドを実行して、Yumがタイムアウトするかどうかを確認します。 デフォルトのタイムアウト時間は10秒です。

time if type yum&>/dev/null; then yum list yum; fi

利用できないAPIサービス

  1. 次のコマンドを実行して、利用できないAPIサービスを確認します。

    kubectl -n kube-system get apiservices | grep -i false
  2. 利用できないAPIサービスの目的を確認してください。 APIサービスが不要になった場合は、次のコマンドを実行してサービスを削除します。

    重要

    まだ使用中のAPIサービスを削除するとクラスター例外が発生する可能性があるため、注意して続行してください。 APIサービスの目的を判断できない場合は、チケットを起票します。

    kubectl -n kube-system delete apiservices ${your-abnormal-apiservice-name}

hostPathを使用したポッド

システムがシステムディスクを交換してノードを更新するときに、ノード上のポッドがhostPathを使用してコンテナーディレクトリをホストにマウントすると、データが失われる可能性があります。 ポッドによってマウントされているディレクトリを確認する必要があります。 hostPathが使用されていない場合、またはデータ損失のリスクがない場合は、更新を続行できます。 チェック結果は参考用です。

非推奨APIの使用

廃止されたAPIを使用するリソースを特定し、それに応じてアクションを実行します。 詳細については、「非推奨API」をご参照ください。

非推奨API

クラスターがKubernetes 1.20以降を実行する場合、事前チェックは、クラスターで非推奨のAPIが使用されているかどうかを確認します。 チェックレポートでは、クラスターで使用されている非推奨のAPIを表示できます。

たとえば、クラスターをKubernetes 1.20からKubernetes 1.22に更新する前に、前日に生成された監査ログをスキャンして、クラスターで非推奨のAPIが使用されているかどうかを確認します。

  • 事前チェックの結果は参照用です。 クラスターがKubernetes 1.20を実行し、非推奨のAPIを使用している場合でも、更新を続行できます。

  • Kubernetes 1.22で廃止されたAPIを引き続き使用すると、潜在的なセキュリティリスクが存在する可能性があります。

次の表に、廃止予定のAPIの種類を示します。 非推奨APIを使用するクラスターを更新する前に、次の表の [タイプ] 列を参照し、クラスターで使用される非推奨APIのタイプに対応する操作を実行することを推奨します。

タイプ

提案

core

キーKubernetesコンポーネント: ACKはキーKubernetesコンポーネントを自動的に更新します。 コンポーネントを更新する必要はありません。 コンポーネントに関する情報は、事前チェックページに表示されません。

apiserver、scheduler、およびkube-controller-manager

ack

ACKコンポーネント: ACKコンポーネントは手動更新が必要です。 ACKコンソールの [アドオン] ページの指示に基づいて、ACKコンポーネントを更新できます。

説明
  • ACKコンソールにログインし、[操作] > [アドオン] を選択してコンポーネントを更新します。 コンポーネントが更新された翌日、非推奨のAPIは表示されません。

  • CoreDNSコンポーネントは、Kubernetes 1.24を実行するクラスターで非推奨のAPIを使用する場合があります。 チェックレポートにCoreDNSが含まれている場合は、「CoreDNSが非推奨APIを使用する理由」をご参照ください。 それに応じて続行します。

  • 事前チェック結果の非推奨APIは参照用です。 クラスターが非推奨のAPIを使用している場合でも、更新を続行できます。 クラスターが更新されると、クラスターは新しいAPIを使用します。 セキュリティリスクを回避するために、クラスターの更新後に非推奨のAPIを使用しないことを推奨します。

metrics-server、nginx-ingress-controller、およびcoredns

オープンソース

オープンソースコンポーネント: 一部のオープンソースコンポーネントはACKコンソールに一覧表示されます。 コンポーネントを更新するかどうかを決定できます。 これらのコンポーネントは手動でのみ更新できます。 他のオープンソースコンポーネントは、未知のタイプに分類され得る。

説明

事前チェック結果の非推奨APIは参照用です。 クラスターが非推奨のAPIを使用している場合でも、更新を続行できます。 ビジネス要件に基づいてコンポーネントを更新します。

rancher and elasticsearch-オペレーター

不明

不明なソース: 上記のタイプに属さない非推奨APIは、不明なリソースと見なされ、ACKコンソールに一覧表示されます。 コンポーネントを更新するかどうかを決定できます。 これらのコンポーネントは手動でのみ更新できます。

説明

事前チェック結果の非推奨APIは参照用です。 クラスターが非推奨のAPIを使用している場合でも、更新を続行できます。 ビジネス要件に基づいてコンポーネントを更新します。

kubectl、agent、Go-http-client、およびokhttp

次の操作を実行して、廃止されたAPIに関する情報を表示します。

  1. [クラスターのアップグレード] ページで、[事前チェック] をクリックし、[詳細の表示] をクリックします。

  2. [レポート] ページで、[クラスターコンポーネント] タブをクリックし、[トラブルシューティング] タブをクリックします。

  3. Deprecated Kubernetes APIの横にあるボタンをクリックします。1.jpg

  4. 表示されるダイアログボックスで、[非推奨Kubernetes API] をクリックし、下のリンクをクリックします。2.jpg

  5. [廃止されたKubernetes API] ページで、廃止されたAPIに関する情報を表示できます。3