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

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

最終更新日:Dec 16, 2024

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

目次

クラスターチェック項目

クラスター更新チェック

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

クラスター更新チェックは、次のタイプのリソースを検査します。

  • クラスターリソース: Server Load Balancer (SLB) インスタンスや仮想プライベートクラウド (VPC) など、ACKサーバーレスクラスターに関連するクラウドリソース。

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

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

タイプ

チェックアイテム

説明

クラスターリソース

APIServer SLB

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

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

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

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

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

VPC

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

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

vSwitch

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

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

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

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

Kube Proxyマスター

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

Kubeプロキシワーカー

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

APIサービス

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

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

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

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

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

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

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

非推奨API

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

クラスター設定

iptables設定

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

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

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

yum

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

Kubelet

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

コンテナランタイム

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

マニフェストの設定

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

クラスター移行チェック

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

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

クラスター移行チェックは、次のタイプのリソースを検査します。

  • クラスターリソース: SLBインスタンスやVPCなど、ACKサーバーレスクラスターに関連するクラウドリソース。

  • クラスターコンポーネント: 利用できないAPIサービスが存在するかどうかなど、ACKサーバーレスクラスター内のコンポーネントの設定。

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

タイプ

チェックアイテム

説明

クラスターリソース

APIServer SLB

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

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

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

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

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

VPC

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

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

vSwitch

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

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

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

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

Kube Proxyマスター

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

Kubeプロキシワーカー

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

APIサービス

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

コンポーネントチェック

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

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

タイプ

チェックアイテム

説明

cloud-controller-manager

Addon_CCM

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

Component_Block_Version

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

csi-plugin

DaemonSet_アノテーション

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

Csi_Driver_Attributes

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

csi-provisioner

Stateful_Set_Exist

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

Deployment_Annotation

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

Storage_Class_Attributes

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

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ロールが割り当てられているかどうかを確認します。

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

問題

提案

ロールAliyun_ARMS_CMonitor_Roleがありません

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

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

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

利用できない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}

非推奨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