ACK は、クラスターのアップグレード、クラスターの移行、コンポーネント、およびノードプールのチェックをサポートしています。クラスターをアップグレードまたは移行する前に、クラスターチェックを実行して、クラスターが要件を満たしていることを確認できます。このチェックでは、失敗したチェック項目に対する解決策も提供されます。
クラスターチェック項目
クラスターアップグレードチェック
Kubernetes は複雑であるため、クラスターのアップグレードにはリスクが伴う可能性があります。スムーズなアップグレードを保証するために、ACK はアップグレード前のチェックを提供します。このチェックに合格した後にのみ、クラスターをアップグレードできます。チェック項目は、クラスターのタイプ、Kubernetes のバージョン、およびコンテナーランタイムによって異なります。コンソールに表示されるチェック項目が最新のものです。
クラスターアップグレードチェックには、次の 3 つのタイプがあります。
クラスターリソース: SLB、ECS、VPC インスタンスなど、ACK クラスターに関連するクラウドリソースをチェックします。
クラスターコンポーネント: ACK クラスター、コンポーネント、およびアプリケーションの構成をチェックします。たとえば、コンポーネントのバージョンが要件を満たしているか、アプリケーションが非推奨の API を使用しているかなどを確認します。
クラスター構成: ACK クラスター内のノードの構成をチェックします。このチェックでは、各ノードに Pod を作成して情報を収集する必要があります。
種類 | チェック項目 | 説明 |
クラスターリソース | API Server SLB | SLB インスタンスが存在するかどうかをチェックします。 |
SLB インスタンスのステータスが正常かどうかをチェックします。 | ||
ポートとプロトコルを含む SLB リスナーの構成が正しいかどうかをチェックします。 | ||
SLB インスタンスのバックエンドサーバーグループの構成が正しいかどうかをチェックします。 | ||
SLB のアクセスの制御の構成が正しいかどうかをチェックします。アクセスの制御が構成されていない場合、チェックは合格します。 | ||
VPC | VPC タイプのインスタンスが存在するかどうかをチェックします。 | |
VPC タイプのインスタンスが正常かどうかをチェックします。 | ||
vSwitch | vSwitch が存在するかどうかをチェックします。 | |
vSwitch が正常かどうかをチェックします。 | ||
vSwitch に 2 つ以上の利用可能な IP アドレスがあるかどうかをチェックします。 | ||
ECS | ECS インスタンスが存在するかどうかをチェックします。 | |
ECS インスタンスが正常かどうかをチェックします。 | ||
ECS セキュリティグループが正常かどうかをチェックします。 | ||
ECS インスタンスのサブスクリプションがアクティブであるかどうかをチェックします。 | ||
ECS インスタンスタイプが要件を満たしているかどうかをチェックします。 | ||
クラウドアシスタントクライアントが正常かどうかをチェックします。 | ||
クラスターコンポーネント | Kube Proxy Master | コンポーネントが存在するかどうかをチェックします。 |
Kube Proxy Worker | コンポーネントが存在するかどうかをチェックします。 | |
API サービス | 利用できない API サービスが存在するかどうかをチェックします。 | |
クラスターインスタンス | クラスター内の Master ノードの数が 3 または 5 であるかどうかをチェックします。 | |
クラスターコンポーネント | Terway コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | |
CoreDNS コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
cloud-controller-manager コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
Nginx Ingress Controller コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
ACK Virtual Node コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
Metrics Server コンポーネントのバージョンが要件を満たしているかどうかをチェックします。 | ||
ノード | ノードの IP アドレスが存在するかどうかをチェックします。 | |
ノードがスケジューリング可能かどうかをチェックします。 | ||
ノードが Ready 状態であるかどうかをチェックします。 | ||
ノードのオペレーティングシステムがアップグレードをサポートしているかどうかをチェックします。 | ||
ノード上の利用可能な Pod の数が 2 より大きいかどうかをチェックします。 | ||
非推奨 API | クラスターが非推奨の API を使用しているかどうかをチェックします。 | |
クラスター構成 | iptables 構成 | iptables の構成が正しいかどうかをチェックします。 |
オペレーティングシステム | オペレーティングシステムがアップグレードをサポートしているかどうかをチェックします。 | |
yum | yum が正しく動作しているかどうかをチェックします。 | |
ディスク | ノードのファイルシステムが正常かどうかをチェックします。 | |
ノードのディスク領域の 5% 以上が空いているかどうかをチェックします。 | ||
スワップ | ノードで Swap が有効になっているかどうかをチェックします。 | |
NTP | ノードのネットワークタイムプロトコル (NTP) が正しく動作しているかどうかをチェックします。 | |
Systemd | ノードの Systemd バージョンが systemd-219-67 より後であるかどうかをチェックします。 | |
kubelet | kubelet の構成が期待どおりであるかどうかをチェックします。 | |
コンテナーランタイム | Docker または containerd ランタイムが正常かどうかをチェックします。 | |
カーネル構成 | ノードのカーネル構成が正しいかどうかをチェックします。 | |
マニフェスト構成 | マニフェストファイルが期待どおりであるかどうかをチェックします。 |
クラスター移行チェック
クラスターの移行前に、移行前チェックがトリガーされます。移行は、クラスターがチェックに合格した後にのみ続行できます。このチェックは、次のシナリオに適用されます。
ACK 専用クラスターから ACK マネージドクラスター Pro 版への移行。
ACK マネージドクラスター Basic Editionから ACK マネージドクラスターへの移行。
クラスター移行チェックには、次の 4 つのタイプがあります。
クラスターリソース: SLB、ECS、VPC インスタンスなど、ACK クラスターに関連するクラウドリソースをチェックします。
クラスターコンポーネント: 利用できない API サービスをチェックするなど、ACK クラスター内のコンポーネントの構成をチェックします。
クラスター構成: ACK クラスター内のノードの構成をチェックします。このチェックでは、各ノードに Pod を作成して情報を収集する必要があります。
コンポーネントの使用状況: ACK 専用クラスターが移行されると、一部のコンポーネントは ACK によって管理されるようになります。したがって、これらのコンポーネントは移行前に問題がないかチェックされます。
種類 | チェック項目 | 説明 |
クラスターリソース | API Server SLB | SLB インスタンスが存在するかどうかをチェックします。 |
SLB インスタンスのステータスが正常かどうかをチェックします。 | ||
ポートとプロトコルを含む SLB リスナーの構成が正しいかどうかをチェックします。 | ||
SLB インスタンスのバックエンドサーバーグループの構成が正しいかどうかをチェックします。 | ||
SLB のアクセスの制御の構成が正しいかどうかをチェックします。アクセスの制御が構成されていない場合、チェックは合格します。 | ||
VPC | VPC タイプのインスタンスが存在するかどうかをチェックします。 | |
VPC タイプのインスタンスが正常かどうかをチェックします。 | ||
vSwitch | vSwitch が存在するかどうかをチェックします。 | |
vSwitch が正常かどうかをチェックします。 | ||
vSwitch に 2 つ以上の利用可能な IP アドレスがあるかどうかをチェックします。 | ||
ECS | ECS インスタンスが存在するかどうかをチェックします。 | |
ECS インスタンスが正常かどうかをチェックします。 | ||
ECS セキュリティグループが正常かどうかをチェックします。 | ||
クラウドアシスタントクライアントが正常かどうかをチェックします。 | ||
クラスターコンポーネント | Kube Proxy Master | コンポーネントが存在するかどうかをチェックします。 |
Kube Proxy Worker | コンポーネントが存在するかどうかをチェックします。 | |
API サービス | 利用できない API サービスが存在するかどうかをチェックします。 | |
クラスターインスタンス | クラスター内の Master ノードの数が 3 または 5 であるかどうかをチェックします。 | |
ノード | ノードの IP アドレスが存在するかどうかをチェックします。 | |
ノードがスケジューリング可能かどうかをチェックします。 | ||
ノードが Ready 状態であるかどうかをチェックします。 | ||
ノードのオペレーティングシステムがアップグレードをサポートしているかどうかをチェックします。 | ||
ノード上の利用可能な Pod の数が 2 より大きいかどうかをチェックします。 | ||
クラスター構成 | オペレーティングシステム | オペレーティングシステムがアップグレードをサポートしているかどうかをチェックします。 |
yum | yum が正しく動作しているかどうかをチェックします。 | |
コンポーネントの使用状況 | cloud-controller-manager | cloud-controller-manager コンポーネントに問題があるかどうかをチェックします。 |
コンポーネントチェック
コンポーネントチェックは、コンポーネントのアップグレードシナリオに適用されます。コンポーネントがアップグレードされる前に、アップグレード前チェックがトリガーされます。アップグレードは、コンポーネントがチェックに合格した後にのみ続行できます。
種類 | チェック項目 | 説明 |
cloud-controller-manager | Addon_CCM | このコンポーネントをアップグレードすると SLB が変更されるかどうかをチェックします。 |
Component_Block_Version | CCM のバージョンをアップグレードできるかどうかをチェックします。 | |
csi-plugin | DaemonSet_Annotation | DaemonSet のアノテーションが期待どおりであるかどうかをチェックします。 |
Csi_Driver_Attributes | CSI ドライバのプロパティが要件を満たしているかどうかをチェックします。 | |
Node_Status_Ready | クラスターノードが Ready 状態であるかどうかをチェックします。 | |
csi-provisioner | Stateful_Set_Exist | リソースが StatefulSet であるかどうかをチェックします。 |
Deployment_Annotation | デプロイメントのアノテーションが期待どおりであるかどうかをチェックします。 | |
Storage_Class_Attributes | StorageClass のプロパティが要件を満たしているかどうかをチェックします。 | |
Csi_Provisioner_Node_Count | Ready 状態のノード数が 2 以上であるかどうかをチェックします。 | |
terway-eniip | Systemd | ノードの Systemd バージョンが systemd-219-67 より後であるかどうかをチェックします。 |
nginx-ingress-controller | Deployment_Healthy | Nginx Ingress デプロイメントが正常であるかどうかをチェックします。 |
Deployment_Not_Under_HPA | デプロイメントに水平ポッドオートスケーラー (HPA) が構成されているかどうかをチェックします。 | |
Deployment_Not_Modified | デプロイメントが変更されたかどうかをチェックします。 | |
Nginx_Ingress_Pod_Error_Log | Nginx にエラーログがあるかどうかをチェックします。 | |
LoadBalancer_Service_Healthy | Nginx Service が正常であるかどうかをチェックします。 | |
Nginx_Ingress_Configuration | Ingress に互換性のない構成があるかどうかをチェックします。 | |
aliyun-acr-credential-helper | RamRole_Exist | コンポーネントに AliyunCSManagedAcrRole 権限が付与されているかどうかをチェックします。 |
ack-cost-exporter | RamRole_Exist | コンポーネントに AliyunCSManagedCostRole 権限が付与されているかどうかをチェックします。 |
ノードプールチェック
ノードプールチェックは、ノードプールのアップグレードシナリオに適用されます。ノードプールがアップグレードされると、アップグレード前チェックがトリガーされます。アップグレードは、ノードプールがチェックに合格した後にのみ続行できます。
ノードプールチェックには、次の 3 つのタイプがあります。
クラスターリソース: SLB や VPC インスタンスなど、ACK クラスターに関連するクラウドリソースをチェックします。
クラスターコンポーネント: ACK クラスター、ノード、およびアプリケーションの構成をチェックします。
クラスター構成: ACK クラスター内のノードの構成をチェックします。このチェックでは、各ノードに Pod を作成して情報を収集する必要があります。
種類 | 確認項目 | 説明 |
クラスタ リソース | API Server SLB | SLB インスタンスが存在するかどうかをチェックします。 |
SLB インスタンスのステータスが正常かどうかをチェックします。 | ||
ポートとプロトコルを含む SLB リスナーの構成が正しいかどうかをチェックします。 | ||
SLB インスタンスのバックエンドサーバーグループの構成が正しいかどうかをチェックします。 | ||
SLB のアクセスの制御の構成が正しいかどうかをチェックします。アクセスの制御が構成されていない場合、チェックは合格します。 | ||
VPC | VPC タイプのインスタンスが存在するかどうかをチェックします。 | |
VPC タイプのインスタンスが正常かどうかをチェックします。 | ||
vSwitch | vSwitch が存在するかどうかをチェックします。 | |
vSwitch が正常かどうかをチェックします。 | ||
vSwitch に 2 つ以上の利用可能な IP アドレスがあるかどうかをチェックします。 | ||
クラスタコンポーネント | API サービス | 利用できない API サービスが存在するかどうかをチェックします。 |
クラスターインスタンス | クラスター内の Master ノードの数が 3 または 5 であるかどうかをチェックします。 | |
ノード | ノードが Ready 状態であるかどうかをチェックします。 | |
ノード上の利用可能な Pod の数が 2 より大きいかどうかをチェックします。 | ||
HostPath | ノード上のいずれかの Pod が HostPath を使用しているかどうかをチェックします。 | |
クラスター構成 | iptables 構成 | iptables の構成が正しいかどうかをチェックします。 |
オペレーティングシステム | オペレーティングシステムがアップグレードをサポートしているかどうかをチェックします。 | |
yum | yum が正しく動作しているかどうかをチェックします。 | |
ディスク | ノードのファイルシステムが正常かどうかをチェックします。 | |
ノードの残りのディスク領域 | ノードのディスク領域の 5% 以上が空いているかどうかをチェックします。 | |
スワップ | ノードで Swap が有効になっているかどうかをチェックします。 | |
NTP | ノードの NTP が正しく動作しているかどうかをチェックします。 | |
Systemd | ノードの Systemd バージョンが systemd-219-67 より後であるかどうかをチェックします。 | |
kubelet | kubelet の構成が期待どおりであるかどうかをチェックします。 | |
コンテナーランタイム | Docker または containerd ランタイムが正常かどうかをチェックします。 | |
カーネル構成 | ノードのカーネル構成が正しいかどうかをチェックします。 | |
マニフェスト構成 | マニフェストファイルが期待どおりであるかどうかをチェックします。 |
失敗したチェック項目の解決策
失敗したチェック項目 | 解決策 |
Systemd のバージョンが低すぎます | |
コンポーネントのバージョンが低すぎます | コンポーネントのバージョンをアップグレードします。詳細については、「コンポーネントの管理」をご参照ください。 |
yum チェックがタイムアウトしました | 次のコマンドを実行して、yum がタイムアウトするかどうかを確認します。デフォルトのタイムアウトは 10 秒です。 |
API Service が利用できません |
|
ノードに HostPath を使用する Pod があります | システムディスクを交換してノードをアップグレードする場合、ノード上の Pod が HostPath を使用してコンテナーディレクトリをホストにマウントすると、データ損失が発生する可能性があります。Pod のマウントされたディレクトリを確認してください。影響がない場合は、アップグレードを続行できます。チェック結果は参考用です。 |
クラスターが非推奨の API を使用しています | 非推奨 API のソースを特定し、適切な操作を実行します。詳細については、「非推奨 API」をご参照ください。 |
クラスターの問題を修正するための提案
Kubernetes 1.20 以降を実行するクラスターの場合、アップグレード前チェックには非推奨 API のスキャンが含まれます。チェックレポートには、クラスターが使用する非推奨 API がリストされます。
たとえば、クラスターを Kubernetes 1.20 から 1.22 にアップグレードする場合、システムは前日の監査ログをスキャンして、Kubernetes 1.20 クラスターが非推奨の API を使用しているかどうかをチェックします。
Kubernetes 1.20 クラスターが非推奨の API を使用している場合、チェック結果は通知のみであり、アップグレードプロセスをブロックしません。
クラスターが Kubernetes 1.22 で非推奨の API を引き続き使用すると、セキュリティリスクが発生する可能性があります。サービスへの影響を評価する必要があります。
非推奨 API は、リクエストソース (ユーザーエージェント) に基づいて 4 つのタイプに分類されます。アップグレードする前に、次の表の [タイプ] 列を使用して非推奨 API のソースを特定し、適切な操作を実行してください。
種類 | 推奨される操作 | 例 |
core | Kubernetes コアコンポーネント: ACK はクラスターのアップグレード中にこれらのコンポーネントを自動的にアップグレードします。これらはチェックページに表示されず、ユーザーによる操作は不要です。 | kube-apiserver、kube-scheduler、kube-controller-manager |
ack | ACK コンポーネント: これらは ACK によって提供されるコンポーネントです。非推奨 API ページには表示されません。代わりに、ACK はコンポーネント管理ページでコンポーネントをアップグレードして問題を解決するようにガイドします。 説明
| metrics-server、nginx-ingress-controller、CoreDNS |
opensource | オープンソースコンポーネント: ACK は、コミュニティのいくつかのオープンソースコンポーネントをリストします。それらをアップグレードするかどうかを決定する必要があります。 説明 非推奨 API の情報は参考用であり、アップグレードプロセスには影響しません。一部の機能に影響を与えないように、必要に応じてコンポーネントをアップグレードしてください。 | rancher、elasticsearch-operator、その他 |
unknown | 不明なソース: API が上記のいずれのルールにも一致しない場合、ACK はそれを不明なソースからであるとマークします。アップグレードするかどうかを決定し、自分でアップグレードを実行する必要があります。 説明 非推奨 API の情報は参考用であり、アップグレードプロセスには影響しません。一部の機能に影響を与えないように、必要に応じてコンポーネントをアップグレードしてください。 | kubectl, agent, Go-http-client, okhttp |
非推奨 API に関する情報を表示するには:
[クラスターのアップグレード] ページで、[事前チェック] をクリックし、次に [詳細の表示] をクリックします。
[チェックレポート] ページで、[詳細の表示] をクリックします。
詳細ページには、非推奨 API、ユーザーエージェント、タイプ、非推奨の Kubernetes バージョン、最終アクセス時刻、および最終アクセスのソース IP が表示されます。