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サービス |
|
非推奨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コンポーネントを更新できます。 説明
| metrics-server、nginx-ingress-controller、およびcoredns |
オープンソース | オープンソースコンポーネント: ACKは、コンソールにいくつかのオープンソースコンポーネントを一覧表示します。 コンポーネントを更新するかどうかを決定できます。 他のオープンソースコンポーネントは、未知のタイプに分類され得る。 説明 事前チェック結果の非推奨APIは参照用です。 クラスターが非推奨のAPIを使用している場合でも、更新を続行できます。 ビジネス要件に基づいてコンポーネントを更新します。 | rancher and elasticsearch-オペレーター |
不明 | 不明なソース: 以前のタイプに属さない非推奨APIは、不明なタイプに分類されます。 ACKは、未知のコンポーネントをコンソールに一覧表示します。 コンポーネントを更新するかどうかを決定できます。 コンポーネントは手動更新が必要です。 説明 事前チェック結果の非推奨APIは参照用です。 クラスターが非推奨のAPIを使用している場合でも、更新を続行できます。 ビジネス要件に基づいてコンポーネントを更新します。 | kubectl、agent、Go-http-client、およびokhttp |