Container Service for Kubernetes (ACK) は、クラスターアップグレード、クラスター移行、コンポーネント、およびノードプール用のクラスターチェック機能を提供します。これらの操作を実行する前にチェックを行うことで、クラスターが要件を満たしているかを確認し、失敗したチェック項目に対する推奨される修正を取得できます。
クラスターチェック
クラスターアップグレードチェック
Kubernetes は複雑であるため、クラスターのアップグレードには大きなリスクが伴います。アップグレードをスムーズに行うために、ACK は一連のアップグレード前チェックを実行します。クラスターがすべてのチェックに合格した後にのみ、アップグレードできます。特定のチェック項目は、クラスターのタイプ、Kubernetes バージョン、およびコンテナランタイムによって異なります。お使いのクラスターの最終的なチェックリストについては、ACK コンソールをご参照ください。
クラスターアップグレードチェックには、3 つのカテゴリがあります。
-
クラスターリソース:SLB、ECS、VPC など、ACK クラスターに関連付けられているクラウドリソースをチェックします。
-
クラスターコンポーネント:コンポーネントのバージョンが要件を満たしているか、アプリケーションが非推奨 API を使用しているかなど、ACK クラスター、そのコンポーネント、およびアプリケーションの設定をチェックします。
-
クラスター設定:ACK クラスター内のノードの設定をチェックします。このチェックでは、ノード上に Pod を作成して情報を収集します。
|
カテゴリ |
チェック項目 |
説明 |
|
クラスターリソース |
API サーバー 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 Proxy ワーカー |
コンポーネントが存在することを確認します。 |
|
|
APIService |
利用できない APIService がないかチェックします。 |
|
|
クラスターインスタンス |
クラスターに 3 つまたは 5 つのマスターノードがあることを確認します。 |
|
|
クラスターコンポーネント |
Terway コンポーネントのバージョンが要件を満たしていることを確認します。 |
|
|
CoreDNS コンポーネントのバージョンが要件を満たしていることを確認します。 |
||
|
cloud-controller-manager コンポーネントのバージョンが要件を満たしていることを確認します。 |
||
|
Nginx Ingress Controller コンポーネントのバージョンが要件を満たしていることを確認します。 |
||
|
ACK Virtual Node コンポーネントのバージョンが要件を満たしていることを確認します。 |
||
|
Metrics Server コンポーネントのバージョンが要件を満たしていることを確認します。 |
||
|
ノード |
ノードに IP アドレスがあることを確認します。 |
|
|
ノードがスケジュール可能であることを確認します。 |
||
|
ノードが Ready 状態であることを確認します。 |
||
|
ノードのオペレーティングシステムがアップグレードをサポートしていることを確認します。 |
||
|
ノードに 2 つを超える利用可能な Pod があることを確認します。 |
||
|
非推奨 API |
クラスターでの非推奨 API の使用状況をチェックします。 |
|
|
クラスター設定 |
iptables 設定 |
iptables の設定が正しいことを確認します。 |
|
オペレーティングシステム |
オペレーティングシステムがアップグレードをサポートしていることを確認します。 |
|
|
yum |
yum が正しく動作することを確認します。 |
|
|
ディスク |
ノードのファイルシステムが正常であることを確認します。 |
|
|
ノードに 5% を超える空きディスク容量があることを確認します。 |
||
|
Swap |
ノードで Swap が有効になっているかどうかをチェックします。 |
|
|
NTP |
ノードで NTP が正しく機能していることを確認します。 |
|
|
Systemd |
Systemd のバージョンが systemd-219-67 より後であることを確認します。 |
|
|
kubelet |
kubelet の設定が想定される設定と一致することを確認します。 |
|
|
コンテナランタイム |
Docker または containerd ランタイムが正常であることを確認します。 |
|
|
カーネル設定 |
ノードのカーネル設定が正しいことを確認します。 |
|
|
マニフェスト設定 |
マニフェストファイルが想定される設定と一致することを確認します。 |
クラスター移行チェック
クラスター移行の前に、ACK は移行前チェックを実行します。移行を続行するには、すべてのチェックに合格する必要があります。以下のシナリオが対象です:
-
ACK 専用クラスターから ACK Pro マネージドクラスターへの移行。
-
ベーシックな ACK マネージドクラスターから ACK Pro マネージドクラスターへの移行。
クラスター移行チェックには、以下の 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 セキュリティグループが正常であることを確認します。 |
||
|
Cloud Assistant クライアントが正常であることを確認します。 |
||
|
クラスターコンポーネント |
Kube Proxy マスター |
コンポーネントが存在することを確認します。 |
|
Kube Proxy ワーカー |
コンポーネントが存在することを確認します。 |
|
|
API Service |
利用できない API サービスがないかチェックします。 |
|
|
クラスターインスタンス |
クラスターに 3 つまたは 5 つのマスターノードがあることを確認します。 |
|
|
ノード |
ノードに IP アドレスがあることを確認します。 |
|
|
ノードがスケジューリング可能であることを確認します。 |
||
|
ノードが Ready 状態であることを確認します。 |
||
|
ノードのオペレーティングシステムがアップグレードをサポートしていることを確認します。 |
||
|
ノードに 3 つ以上の利用可能な Pod があることを確認します。 |
||
|
クラスター設定 |
オペレーティングシステム |
オペレーティングシステムがアップグレードをサポートしていることを確認します。 |
|
yum |
yum が正しく動作することを確認します。 |
|
|
コンポーネント使用状況 |
cloud-controller-manager |
cloud-controller-manager コンポーネントが正常であることを確認します。 |
コンポーネントチェック
コンポーネントチェックは、コンポーネントのアップグレード時に適用されます。コンポーネントをアップグレードする前に、Container Service for Kubernetes (ACK) はアップグレード前チェックを実行します。アップグレードは、コンポーネントがすべてのチェックに合格した後にのみ実行できます。
|
カテゴリー |
チェック項目 |
説明 |
|
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 |
Deployment のアノテーションが想定される設定と一致していることを確認します。 |
|
|
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 が正常であることを確認します。 |
|
Deployment_Not_Under_HPA |
Deployment に HorizontalPodAutoscaler (HPA) が設定されているかチェックします。 |
|
|
Deployment_Not_Modified |
Deployment が変更されているかチェックします。 |
|
|
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 が付与されていることを確認します。 |
ノードプールチェック
ノードプールチェックは、ノードプールのアップグレード時に適用されます。ノードプールをアップグレードすると、ACK はアップグレード前チェックを実行します。すべてのチェックに合格した後にのみ、ノードプールをアップグレードできます。
ノードプールチェックには 3 つのカテゴリがあります:
-
クラスターリソース:SLB や VPC など、ACK クラスターに関連付けられているクラウドリソースをチェックします。
-
クラスターコンポーネント:ACK クラスター、ノード、およびアプリケーションの設定をチェックします。
-
クラスター構成:ACK クラスター内のノードの構成をチェックします。このチェックでは、ノード上に Pod を作成して情報を収集します。
|
カテゴリ |
チェック項目 |
説明 |
|
クラスターリソース |
API サーバー SLB |
SLB インスタンスが存在することを確認します。 |
|
SLB インスタンスが正常であることを確認します。 |
||
|
SLB リスナーが正しく設定されていることを確認します。 |
||
|
SLB インスタンスのバックエンドサーバーグループが正しく設定されていることを確認します。 |
||
|
SLB のアクセス制御設定が正しいことを確認します。アクセス制御が設定されていない場合、このチェックは合格します。 |
||
|
VPC |
VPC インスタンスが存在することを確認します。 |
|
|
VPC インスタンスが正常であることを確認します。 |
||
|
vSwitch |
vSwitch が存在することを確認します。 |
|
|
vSwitch が正常であることを確認します。 |
||
|
vSwitch に少なくとも 2 つの利用可能な IP アドレスがあることを確認します。 |
||
|
クラスターコンポーネント |
API Service |
利用できない API サービスがないかチェックします。 |
|
クラスターインスタンス |
クラスターに 3 または 5 つのマスターノードがあることを確認します。 |
|
|
ノード |
ノードが Ready 状態であることを確認します。 |
|
|
ノードに 3 つ以上の利用可能な Pod があることを確認します。 |
||
|
HostPath |
ノード上のいずれかの Pod が HostPath ボリュームを使用しているかどうかをチェックします。 |
|
|
クラスター構成 |
iptables 構成 |
iptables の構成が正しいことを確認します。 |
|
オペレーティングシステム |
オペレーティングシステムがアップグレードをサポートしていることを確認します。 |
|
|
yum |
yum が正しく動作することを確認します。 |
|
|
ディスク |
ノードのファイルシステムが正常であることを確認します。 |
|
|
ノードの残りのディスク容量 |
ノードに 5% を超える空きディスク容量があることを確認します。 |
|
|
Swap |
ノードで Swap が有効になっているかどうかをチェックします。 |
|
|
NTP |
ノードで NTP が正しく機能していることを確認します。 |
|
|
Systemd |
Systemd のバージョンが systemd-219-67 より新しいことを確認します。 |
|
|
kubelet |
kubelet の構成が期待される設定と一致することを確認します。 |
|
|
コンテナランタイム |
Docker または containerd ランタイムが正常であることを確認します。 |
|
|
カーネル構成 |
ノードのカーネル構成が正しいことを確認します。 |
|
|
マニフェスト構成 |
マニフェストファイルが期待される設定と一致することを確認します。 |
チェック失敗時のソリューション
|
失敗したチェック |
ソリューション |
|
systemd のバージョンが低すぎます |
|
|
コンポーネントのバージョンが低すぎます |
コンポーネントのバージョンをアップグレードします。詳細については、「コンポーネントの管理」をご参照ください。 |
|
yum チェックがタイムアウトしました |
次のコマンドを実行して、yum のタイムアウトを確認します。デフォルトのタイムアウトは 10 秒です。
|
|
API サービスが利用できません |
|
|
ノードに、HostPath を使用する Pod が含まれています |
システムディスクを交換してノードをアップグレードすると、HostPath を使用してホストディレクトリをマウントする Pod でデータ損失が発生する可能性があります。影響を受ける各 Pod のマウントされたディレクトリを確認してください。影響がない場合は、アップグレードを続行できます。このチェックは情報提供のみを目的としており、アップグレードをブロックしません。 |
|
クラスターが非推奨 API を使用しています |
非推奨 API のソースを特定し、適切な対応を行います。詳細については、「非推奨 API」をご参照ください。 |
非推奨 API
Kubernetes 1.20 以降を実行するクラスターでアップグレード前チェックを実行すると、非推奨 API の使用が検出されます。チェック結果には、これらの API が一覧表示されます。
たとえば、クラスターを Kubernetes 1.20 から Kubernetes 1.22 にアップグレードすると、システムは前日の監査ログをスキャンして、非推奨 API の使用を検出します。
-
クラスターが非推奨 API を使用している場合、チェック結果は通知のみであり、アップグレードはブロックされません。
-
Kubernetes 1.22 で非推奨 API を引き続き使用すると、セキュリティリスクが生じる可能性があります。業務への影響を評価する必要があります。
非推奨 API は、リクエスト元 (ユーザーエージェント) に基づいて、次の 4 つのタイプに分類されます。クラスターをアップグレードする前に、次の表の [カテゴリ]に基づいて各非推奨 API のソースを特定し、推奨アクションを実行してください。
|
タイプ |
推奨アクション |
例 |
|
core |
Kubernetes のコアコンポーネント:Container Service for Kubernetes (ACK) はクラスターのアップグレード中にこれらのコンポーネントを自動的にアップグレードします。これらはチェックページに表示されず、アクションは不要です。 |
kube-apiserver、kube-scheduler、kube-controller-manager |
|
ack |
ACK コンポーネント:これらのコンポーネントは ACK によって提供されます。非推奨 API の使用が検出された場合、アドオンページでこれらのコンポーネントをアップグレードするよう案内が表示されます。 説明
|
metrics-server、nginx-ingress-controller、CoreDNS |
|
opensource |
オープンソースコンポーネント:このタイプには、オープンソースコミュニティのコンポーネントが含まれます。要件に基づいてアップグレードするかどうかを決定してください。 説明
非推奨 API の通知は参考情報であり、アップグレードには影響しません。機能に影響を与えないように、要件に基づいてコンポーネントをアップグレードしてください。 |
rancher、elasticsearch-operator など |
|
unknown |
不明なソース:上記のタイプに一致しないソースは不明としてマークされます。コンポーネントをアップグレードするかどうかを決定し、自分でアップグレードを実行する必要があります。 説明
非推奨 API の通知は参考情報であり、アップグレードには影響しません。機能に影響を与えないように、要件に基づいてコンポーネントをアップグレードしてください。 |
kubectl、agent、Go-http-client、okhttp |
非推奨 API 情報を表示するには:
-
クラスターのアップグレード ページで 事前チェック をクリックし、次に 詳細情報 をクリックします。
-
[レポート] ページで、[詳細の表示] をクリックします。
-
詳細ページには、非推奨 API、ユーザーエージェント、タイプ、非推奨となった Kubernetes バージョン、最終アクセス時刻、および送信元 IP アドレスが表示されます。
[レポート] ページには、[クラスターリソース]、[クラスターコンポーネント]、および [ノード構成] の 3 つのタブがあります。[ノード構成] タブには、「クラスターはまだ非推奨の Kubernetes API を使用しています。」という警告が表示されます。