Container Service for Kubernetes (ACK) プラットフォームは、クラスターのアップグレードチェック、クラスターの移行チェック、およびコンポーネントチェックをサポートしています。このトピックでは、クラスターのチェック項目と、ステータスが異常な項目の解決策について説明します。
インデックス
クラスターのチェック項目
クラスターアップグレードチェック
Kubernetes クラスターのアップグレードにはリスクが伴います。Kubernetes の複雑さ、ランタイムの変更、非推奨の API、および機能の変更はすべて、このリスクの原因となります。スムーズなアップグレードを確実にするために、ACK はアップグレード前のチェックを実行します。アップグレードは、クラスターがこのチェックに合格した後にのみ開始されます。
クラスターアップグレードチェックは、2 つのカテゴリに分類されます。
クラスターリソース: このチェックでは、Server Load Balancer (SLB) や Virtual Private Cloud (VPC) など、Serverless Kubernetes クラスター に関連するクラウドリソースを検査します。
クラスターコンポーネント: このチェックでは、Serverless Kubernetes クラスター、そのコンポーネント、およびそのアプリケーションの構成を検査します。たとえば、コンポーネントのバージョンが要件を満たしているか、アプリケーションが非推奨の API を使用しているかなどを確認します。
チェック項目は、クラスターのタイプ、バージョン、およびランタイムによって異なります。次の表は参照用です。コンソールに表示されるチェック項目が最終的なソースとなります。
カテゴリ | チェック項目 | 説明 |
クラスターリソース | APIServer SLB | SLB インスタンスが存在するかどうかをチェックします。 |
SLB インスタンスのステータスが正常かどうかをチェックします。 | ||
ポートとプロトコルを含む SLB リスナーの構成が有効かどうかをチェックします。 | ||
SLB インスタンスのバックエンドサーバーグループの構成が有効かどうかをチェックします。 | ||
SLB のアクセスコントロール構成が正しいかどうかをチェックします。アクセスコントロールが構成されていない場合、チェックは合格します。 | ||
VPC | VPC タイプのインスタンスが存在するかどうかをチェックします。 | |
VPC タイプのインスタンスが正常かどうかをチェックします。 | ||
vSwitch | vSwitch が存在するかどうかをチェックします。 | |
vSwitch が正常かどうかをチェックします。 | ||
vSwitch に少なくとも 2 つの利用可能な IP アドレスがあるかどうかをチェックします。 | ||
クラスターコンポーネント | Kube Proxy Master | コンポーネントが存在するかどうかをチェックします。 |
Kube Proxy Worker | コンポーネントが存在するかどうかをチェックします。 | |
API Service | 利用できない API Service が存在するかどうかをチェックします。 | |
クラスターコンポーネント | Terway コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | |
CoreDNS コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
cloud-controller-manager (CCM) コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
Nginx Ingress Controller コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
Metric Server コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
非推奨 API | クラスターが非推奨の API を使用しているかどうかをチェックします。 | |
クラスター構成 | iptables 構成 | iptables の構成が有効かどうかをチェックします。 |
オペレーティングシステム | オペレーティングシステムがアップグレードをサポートしているかどうかをチェックします。 | |
yum | yum が正しく動作しているかどうかをチェックします。 | |
Kubelet | Kubelet の構成が期待どおりかどうかをチェックします。 | |
コンテナーランタイム | Docker または containerd ランタイムが正常かどうかをチェックします。 | |
マニフェスト構成 | マニフェストファイルが期待どおりかどうかをチェックします。 |
クラスター移行チェック
クラスターの移行前に、移行前チェックがトリガーされます。移行は、クラスターがチェックに合格した後にのみ続行できます。このチェックは、次のシナリオに適用されます。
ACK Serverless Basic Edition クラスター から ACK Serverless Pro クラスター への移行。
クラスター移行チェックは、2 つのカテゴリに分類されます。
クラスターリソース: このチェックでは、SLB インスタンスや VPC など、Serverless Kubernetes クラスター に関連するクラウドリソースを検査します。
クラスターコンポーネント: このチェックでは、利用できない API Service が存在するかどうかなど、Serverless Kubernetes クラスター のコンポーネント構成を検査します。
移行チェック項目は、クラスターのタイプ、バージョン、およびランタイムによって異なります。次の表は参照用です。コンソールに表示されるチェック項目が最終的なソースとなります。
カテゴリ | チェック項目 | 説明 |
クラスターリソース | APIServer SLB | SLB インスタンスが存在するかどうかをチェックします。 |
SLB インスタンスのステータスが正常かどうかをチェックします。 | ||
ポートとプロトコルを含む SLB リスナーの構成が有効かどうかをチェックします。 | ||
SLB インスタンスのバックエンドサーバーグループの構成が有効かどうかをチェックします。 | ||
SLB のアクセスコントロール構成が正しいかどうかをチェックします。アクセスコントロールが構成されていない場合、チェックは合格します。 | ||
VPC | VPC タイプのインスタンスが存在するかどうかをチェックします。 | |
VPC タイプのインスタンスが正常かどうかをチェックします。 | ||
vSwitch | vSwitch が存在するかどうかをチェックします。 | |
vSwitch が正常かどうかをチェックします。 | ||
vSwitch に少なくとも 2 つの利用可能な IP アドレスがあるかどうかをチェックします。 | ||
クラスターコンポーネント | Kube Proxy Master | コンポーネントが存在するかどうかをチェックします。 |
Kube Proxy Worker | コンポーネントが存在するかどうかをチェックします。 | |
API Service | 利用できない API Service が存在するかどうかをチェックします。 |
コンポーネントチェック
コンポーネントチェックは、コンポーネントのアップグレードシナリオに適用されます。コンポーネントをアップグレードする前に、アップグレード前チェックがトリガーされます。アップグレードは、コンポーネントがこのチェックに合格した後にのみ続行できます。
コンポーネントのチェック項目は、コンポーネントのタイプ、バージョン、およびランタイムによって異なります。次の表は参照用です。コンソールに表示されるチェック項目が最終的なソースとなります。
カテゴリ | チェック項目 | 説明 |
cloud-controller-manager | Addon_CCM | コンポーネントをアップグレードすると SLB が変更されるかどうかをチェックします。 |
Component_Block_Version | CCM のバージョンをアップグレードできるかどうかをチェックします。 | |
csi-plugin | DaemonSet_Annotation | DaemonSet のアノテーションが期待どおりかどうかをチェックします。 |
Csi_Driver_Attributes | Container Storage Interface (CSI) ドライバーのプロパティが要件を満たしているかどうかをチェックします。 | |
csi-provisioner | Stateful_Set_Exist | リソースが StatefulSet であるかどうかをチェックします。 |
Deployment_Annotation | デプロイメントのアノテーションが期待どおりかどうかをチェックします。 | |
Storage_Class_Attributes | StorageClass のプロパティが要件を満たしているかどうかをチェックします。 | |
nginx-ingress-controller | Deployment_Healthy | Nginx Ingress のデプロイメントが正常かどうかをチェックします。 |
Deployment_Not_Under_HPA | デプロイメントに Horizontal Pod Autoscaler (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 権限が付与されているかどうかをチェックします。 |
異常なチェック項目の解決策
異常なチェック項目 | 解決策 |
コンポーネントのバージョンが低すぎます | コンポーネントのバージョンをアップグレードします。詳細については、「コンポーネントの管理」をご参照ください。 |
APIService が利用できません |
|
クラスターに非推奨の API が含まれています | 非推奨 API のソースを特定し、適切な操作を実行します。詳細については、「非推奨 API」をご参照ください。 |
非推奨 API
Kubernetes 1.20 以降を実行するクラスターの場合、アップグレード前チェックで非推奨の API を検出できます。チェック結果には、クラスターが使用する非推奨の API がリストされます。
たとえば、クラスターを Kubernetes 1.20 から 1.22 にアップグレードする場合、システムは前日の監査ログをスキャンして、1.20 クラスターでの非推奨 API の使用状況をチェックします。
1.20 クラスターで非推奨の API が使用されている場合、チェック結果は通知のみであり、アップグレードはブロックされません。
ただし、1.22 クラスターで非推奨の API を引き続き使用すると、セキュリティリスクが発生する可能性があります。
非推奨 API は、リクエストソース (User Agent) に基づいて 4 つのカテゴリに分類されます。アップグレードする前に、次の表の [カテゴリ] 列を使用して、非推奨 API のソースを特定し、推奨される操作を実行できます。
カテゴリ | 推奨される操作 | 例 |
core | コア Kubernetes コンポーネント: ACK は、クラスターのアップグレード中にこれらのコンポーネントをバックグラウンドで自動的にアップグレードします。これらはチェックページに表示されず、ユーザーによる操作は必要ありません。 | apiserver, scheduler, kube-controller-manager |
ack | ACK コンポーネント: これらは ACK によって提供されるコンポーネントです。いつアップグレードするかを決定する必要があります。ACK はそれらを表示し、コンポーネント管理ページでアップグレードするようにガイドします。 説明
| metrics-server, nginx-ingress-controller, coredns |
opensource | オープンソースコンポーネント: ACK は、一部のオープンソースコミュニティコンポーネントのリストを表示します。アップグレードするかどうかを決定し、自分でアップグレードを実行する必要があります。省略されたものは、不明なカテゴリに表示されます。 説明 非推奨 API の情報は通知のみであり、アップグレードプロセスには影響しません。一部の機能に影響を与えないように、必要に応じてコンポーネントをアップグレードしてください。 | rancher, elasticsearch-operator など |
unknown | 不明なソース: ソースが上記のどのルールにも一致しない場合、不明としてマークされます。ACK はリストを表示しますが、アップグレードするかどうかを決定し、自分でアップグレードを実行する必要があります。 説明 非推奨 API の情報は通知のみであり、アップグレードプロセスには影響しません。一部の機能に影響を与えないように、必要に応じてコンポーネントをアップグレードしてください。 | kubectl, agent, Go-http-client, okhttp |