Alibaba Cloud Container Service for Kubernetes (ACK) は、その技術アーキテクチャとコアコンポーネントに対してマネージドサービスを提供します。しかし、ご利用の ACK クラスター内のアンマネージドコンポーネントやアプリケーションに対する不適切な操作は、サービス障害を引き起こす可能性があります。これらのリスクを評価し、防止するために、ACK を使用する前に、このトピックの推奨事項と注意事項をお読みください。
インデックス
項目 | 参照 |
使用上の注意
データプレーンコンポーネント
データプレーンコンポーネントは、CoreDNS、Ingress、kube-proxy、Terway、kubelet など、ご利用の ECS インスタンス上で実行されるシステムコンポーネントです。これらのコンポーネントはご利用の ECS インスタンス上で実行されるため、Alibaba Cloud Container Service とお客様の両方がその安定性を維持する責任を共有します。
ACK は、データプレーンコンポーネントに対して次のサポートを提供します。
コンポーネントのパラメーター設定を管理し、定期的な機能の最適化、バグ修正、CVE パッチ、および関連するガイダンスドキュメントを提供します。
コンポーネントのモニタリングやアラートなどの可観測性機能を提供します。一部のコアコンポーネントについては、ログが提供され、Simple Log Service (SLS) を通じてお客様に公開されます。
構成のベストプラクティスと推奨事項を提供します。Container Service for Kubernetes は、クラスターのサイズに基づいてコンポーネントの構成に関する推奨事項を提供します。
定期的なコンポーネントの検査と一部のアラート通知機能を提供します。検査項目には、コンポーネントのバージョン、構成、ペイロード、デプロイメントトポロジー、インスタンス数などが含まれますが、これらに限定されません。
データプレーンコンポーネントを使用する際は、以下の推奨事項に従ってください:
最新のコンポーネントバージョンを使用してください。新しいバージョンは、バグ修正や新機能の提供のために頻繁にリリースされます。新しいバージョンがリリースされたら、サービスの安定性を確保しつつ、適切なタイミングでコンポーネントをアップグレードしてください。コンポーネントのアップグレードガイドの指示に従ってください。詳細については、「コンポーネント」をご参照ください。
ACK アラートセンターで、連絡先のメールアドレスと携帯電話番号を設定し、希望のアラート通知方法を設定してください。Alibaba Cloud は、これらのチャネルを通じてアラート情報、サービス通知、その他のメッセージを送信します。詳細については、「Container Service for Kubernetes のアラート管理」をご参照ください。
コンポーネントの安定性に関するリスクレポートを受け取った場合は、指示に従って問題を解決し、セキュリティリスクを排除してください。
データプレーンコンポーネントを使用する際、コンポーネントのカスタムパラメーターは、ご利用のクラスターの Container Service for Kubernetes コンソールの ページ、または OpenAPI を使用して設定してください。他のチャネルを通じてコンポーネントの構成を変更すると、コンポーネントの例外が発生する可能性があります。詳細については、「コンポーネントの管理」をご参照ください。
IaaS レイヤー製品の OpenAPI を使用してコンポーネントのランタイム環境を変更しないでください。これには、ECS OpenAPI を使用して ECS インスタンスの実行ステータスを変更したり、ワーカーノードのセキュリティグループ構成を変更したり、ワーカーノードのネットワーク構成を変更したり、Server Load Balancer OpenAPI を使用して SLB 構成を変更したりすることが含まれます。IaaS レイヤーリソースへの不正な変更は、データプレーンコンポーネントの例外を引き起こす可能性があります。
一部のデータプレーンコンポーネントは、アップストリームのオープンソースバージョンの影響を受け、バグや脆弱性が存在する場合があります。オープンソースコンポーネントのバグや脆弱性によってサービスが影響を受けないように、コンポーネントを速やかにアップグレードしてください。
クラスターのアップグレード
ACK のクラスター更新機能を使用して、クラスターの Kubernetes バージョンを更新してください。他の方法では、安定性や互換性の問題が発生する可能性があります。詳細については、「クラスターの更新とコントロールプレーンおよびノードプールの個別更新」をご参照ください。
ACK は、クラスターのアップグレードに対して次のサポートを提供します。
クラスターを新しい Kubernetes バージョンにアップグレードする機能を提供します。
新しい Kubernetes バージョンのアップグレードに対する事前チェック機能を提供し、クラスターがアップグレードの準備ができていることを確認します。
以前のバージョンからの変更点を含む、新しい Kubernetes バージョンのリリースノートを提供します。
新しい Kubernetes バージョンにアップグレードする際にリソースの変更によって発生する可能性のある潜在的なリスクについて警告します。
クラスターのアップグレード機能を使用する際は、以下の推奨事項に従ってください:
クラスターをアップグレードする前に事前チェックを実行してください。事前チェックの結果に基づいて、アップグレードを妨げる問題を修正してください。
新しい Kubernetes バージョンのリリースノートを注意深くお読みください。ACK が提示するアップグレードのリスクに基づいて、クラスターとサービスのステータスを確認し、ご自身でアップグレードのリスクを評価してください。詳細については、「[提供終了] Kubernetes バージョンリリースの概要」をご参照ください。
クラスターのアップグレード機能はロールバックをサポートしていません。開始する前に、徹底的なアップグレード計画を立て、データをバックアップしてください。
ACK のバージョンサポートポリシーに従い、現在のバージョンのサポートライフサイクル内に、クラスターの Kubernetes バージョンを速やかにアップグレードしてください。詳細については、「バージョンガイド」をご参照ください。
ネイティブ Kubernetes の設定
以下のファイルのパス、リンク、内容など、主要な Kubernetes 構成を変更しないでください:
/var/lib/kubelet
/var/lib/docker
/etc/kubernetes
/etc/kubeadm
/var/lib/containerd
YAML テンプレートで Kubernetes クラスター用に予約されているアノテーションを使用しないでください。使用すると、リソースが利用できなくなったり、リクエストに失敗したり、例外が発生したりする可能性があります。
kubernetes.io/およびk8s.io/で始まるアノテーションは、コアコンポーネント用に予約されています。無効な例:pv.kubernetes.io/bind-completed: "yes"。
ACK サーバーレスクラスター
以下のシナリオでは、ACK サーバーレスクラスターは補償を提供しません:
クラスターの O&M を簡素化するために、ACK サーバーレスクラスターは一部のシステムコンポーネントに対してマネージド機能を提供します。クラスター内のコンポーネントに対してマネージド機能を有効にすると、ACK がそのデプロイメントとメンテナンスを担当します。マネージドコンポーネントが依存する Kubernetes オブジェクトを誤って削除したためにサービスが影響を受けた場合、ACK Serverless は補償を提供しません。
登録済みクラスター
管理コンソールの登録済みクラスター機能を使用して外部 Kubernetes クラスターを接続する場合、外部クラスターと Alibaba Cloud 間のネットワークの安定性を確保してください。
ACK では外部 Kubernetes クラスターの登録と接続が可能ですが、外部クラスターの安定性を制御したり、不適切な操作を防いだりすることはできません。したがって、登録済みクラスターのノードにラベル、アノテーション、タグなどの情報を設定する際は注意してください。このような操作はアプリケーションの例外を引き起こす可能性があります。
アプリカタログ
Kubernetes アプリケーションを充実させるために、ACK アプリカタログはオープンソースソフトウェアに基づいて適合・カスタマイズされたアプリケーションを提供します。ACK はオープンソースソフトウェア自体に内在する欠陥を制御することはできません。このリスクにご注意ください。詳細については、「アプリカタログ」をご参照ください。
リスクの高い操作
ACK の一部の機能モジュールには、サービスの安定性に大きな影響を与える可能性のあるリスクの高い操作が含まれています。これらの機能を使用する前に、以下のリスクの高い操作とその影響を注意深くお読みください。
クラスターに関連するリスクの高い操作
分類 | リスクの高い操作 | 影響 | 回復計画 |
API サーバー | API サーバーが使用する SLB インスタンスを他のシナリオで再利用する (例:LoadBalancer サービスで SLB インスタンスを再利用する)。 | クラスターが利用不可になり、サービスのトラフィックに影響します。 | 元の構成に戻すか、アフターサービスサポートに依頼してください。 |
API サーバーが使用する SLB インスタンスのリスナー、vServer グループ、アクセス制御リスト (ACL)、またはタグ構成を変更する。これらの構成は SLB の転送を制御します。 | クラスターが異常になります。 | 元の構成に戻してください。 | |
API サーバーが使用する SLB インスタンスを削除する。 | クラスターが操作不能になります。 | 復旧不可。クラスターを再作成してください。詳細については、「ACK マネージドクラスターの作成」をご参照ください。 | |
ワーカーノード | クラスター内のノードのセキュリティグループを変更する。 | ノードが利用できなくなる可能性があります。 | クラスター用に自動作成されたセキュリティグループにノードを再度追加してください。詳細については、「インスタンス (プライマリ ENI) とセキュリティグループの関連付け」をご参照ください。 |
ノードが有効期限切れになるか、破棄される。 | ノードが利用できなくなります。 | 回復不能。 | |
オペレーティングシステムを再インストールする。 | ノード上のコンポーネントが削除されます。 | クラスターからノードを削除し、再度追加してください。詳細については、「ノードの削除」および「既存ノードのクラスターへの追加」をご参照ください。 | |
ノードコンポーネントのバージョンを独自にアップグレードする。 | ノードが使用不能になる可能性があります。 | 元のバージョンにロールバックしてください。 | |
ノードの IP アドレスを変更する。 | ノードが利用できなくなります。 | IP アドレスを元のものに戻してください。 | |
kubelet、docker、containerd などのコアコンポーネントのパラメーターを独自に変更する。 | ノードが利用できなくなる可能性があります。 | 公式サイトで推奨されているパラメーターを設定してください。 | |
オペレーティングシステムの設定を変更する。 | ノードが利用できなくなる可能性があります。 | 設定項目を元に戻すか、ノードを削除して新しいものを購入してください。 | |
ノードの時刻を変更する。 | ノード上のコンポーネントが異常に動作する可能性があります。 | ノードの時刻を元に戻してください。 | |
ACK がサポートしていない方法でクラスターに計算能力リソースを追加する。 | ACK は、コンソール、OpenAPI、コマンドラインインターフェイス (CLI) など、クラスターに計算能力リソースを追加するための複数の方法を提供しています。詳細については、「既存ノードのクラスターへの追加」をご参照ください。他の手段でクラスターにノードを追加した場合、ACK はノードのソースを識別できません。その結果、ACK はノードのライフサイクル管理、自動 O&M、技術サポートなどの製品機能を提供できません。リスクの詳細については、「コンソールにノードが属するノードプールのソースが「その他のノード」と表示されるのはなぜですか?」をご参照ください。 | 計算能力リソースはノードプールを使用して管理することを推奨します。ノードを引き続き使用する場合は、Kubernetes コンポーネント、ネットワーク、ストレージ、セキュリティコンポーネントなど、すべてのクラスターコンポーネントとの互換性を確保してください。 | |
マスターノード (ACK 専用クラスター) | クラスター内のノードのセキュリティグループを変更する。 | Master ノードが利用できなくなる可能性があります。 | クラスター用に自動作成されたセキュリティグループにノードを再度追加してください。詳細については、「インスタンス (プライマリ ENI) とセキュリティグループの関連付け」をご参照ください。 |
ノードが有効期限切れになるか、破棄される。 | Master ノードが利用できなくなります。 | 回復不能。 | |
オペレーティングシステムを再インストールする。 | Master ノード上のコンポーネントが削除されます。 | 回復不能。 | |
Master または etcd コンポーネントのバージョンを独自にアップグレードする。 | クラスターが使用できなくなる可能性があります。 | 元のバージョンにロールバックしてください。 | |
ノード上の /etc/kubernetes などのコアディレクトリ内のデータを削除またはフォーマットする。 | Master ノードが利用できなくなります。 | 回復不能。 | |
ノードの IP アドレスを変更する。 | Master ノードが利用できなくなります。 | IP アドレスを元のものに戻してください。 | |
etcd、kube-apiserver、docker などのコアコンポーネントのパラメーターを独自に変更する。 | Master ノードが利用できなくなる可能性があります。 | 公式サイトで推奨されているパラメーターを設定してください。 | |
Master または etcd の証明書を独自に置き換える。 | クラスターが使用できなくなる可能性があります。 | 回復不能。 | |
マスターノードを独自に追加または削除する。 | クラスターが使用できなくなる可能性があります。 | 回復不能。 | |
ノードの時刻を変更する。 | ノード上のコンポーネントが異常に動作する可能性があります。 | ノードの時刻を元に戻してください。 | |
その他 | RAM を使用して権限を変更または修正する。 | Server Load Balancer などの一部のクラスターリソースの作成に失敗する可能性があります。 | 元の権限に戻してください。 |
説明 これは 1.26 より前のバージョンのクラスターにのみ適用されます。 クラスター内のプリセットされた PodSecurityPolicy 関連のリソースを変更または削除する。これには、 | コアクラスターコンポーネントが異常になる可能性があります。クラスター内で Pod リソースを作成または更新できなくなる場合があります。 | 関連リソースを回復してください。詳細については、「ACK のデフォルト Pod セキュリティポリシーの設定または回復」をご参照ください。 |
ノードプールに関連するリスクの高い操作
リスクの高い操作 | 影響 | 回復計画 |
スケーリンググループを削除する。 | ノードプールが異常になります。 | 復旧不可。ノードプールを再作成するしかありません。詳細については、「ノードプールの作成」をご参照ください。 |
kubectl を使用してノードを削除する。 | ノードプールに表示されるノード数が実際の数と一致しなくなります。 | 管理コンソールまたはノードプール関連の API を使用して指定されたノードを削除する (「ノードの削除」をご参照ください)、または期待されるノード数を変更してノードプールをスケールインする (「ノードプールの作成と管理」をご参照ください)。 |
ECS インスタンスを直接リリースする。 | ノードプールの製品ページで例外が表示される場合があります。期待されるノード数を持つノードプールの場合、その数を維持するために構成に基づいて自動的に期待される数までスケールアウトします。 | 復旧不可。正しい方法は、管理コンソールまたはノードプール関連の API を使用して、期待されるノード数を変更してノードプールをスケールインする (「ノードプールの作成と管理」をご参照ください) か、指定されたノードを削除する (「ノードの削除」をご参照ください) ことです。 |
自動スケーリングが有効になっているノードプールを手動でスケールアウトまたはスケールインする。 | 自動スケーリングコンポーネントがポリシーに基づいてノード数を自動的に調整するため、予期しない結果につながります。 | 回復不能。自動スケーリングノードプールに手動で介入しないでください。 |
ESS スケーリンググループのインスタンスの最大数または最小数を変更する。 | スケーリングが異常になる可能性があります。 |
|
既存のノードを追加する前にデータをバックアップしない。 | インスタンス上のデータは追加される前に失われます。 | 回復不能。
|
ノードのシステムディスクに重要なデータを保存する。 | ノードプールの自己修復操作により、ノードの構成をリセットして修復することがあり、これによりシステムディスク上のデータが失われる可能性があります。 | 復旧不可。正しい方法は、重要なデータを追加のデータディスク、またはクラウドディスク、NAS、OSS に保存することです。 |
ネットワーキングとロードバランシングに関連するリスクの高い操作
リスクの高い操作 | 影響 | 回復計画 |
カーネルパラメーター | ネットワーク接続が失敗する。 | カーネルパラメーターを |
カーネルパラメーターを変更する:
| ネットワーク接続が失敗する。 | カーネルパラメーターを次のように変更してください:
|
カーネルパラメーター | Pod のヘルスチェックが異常になります。 | カーネルパラメーターを |
カーネルパラメーター | NAT が異常になります。 | カーネルパラメーターを |
カーネルパラメーター | ネットワーク接続が断続的に失敗する。 | カーネルパラメーターをデフォルト値 |
Firewalld や ufw などのファイアウォールソフトウェアをインストールする。 | コンテナネットワーク接続が失敗する。 | ファイアウォールソフトウェアをアンインストールし、ノードを再起動してください。 |
ノードのセキュリティグループ構成が、コンテナー CIDR ブロックのポート 53 での UDP トラフィックを許可していない。 | クラスター内の DNS が正しく機能しません。 | 公式サイトで推奨されているように、セキュリティグループを構成してトラフィックを許可してください。 |
ACK によって追加された SLB インスタンスのタグを変更または削除する。 | SLB インスタンスが異常になります。 | SLB インスタンスのタグを元に戻してください。 |
Server Load Balancer コンソールで、ACK が管理する SLB インスタンスの構成 (SLB インスタンス、リスナー、vServer グループを含む) を変更する。 | SLB インスタンスが異常になります。 | SLB インスタンスの構成を元に戻してください。 |
サービスから既存の SLB インスタンスを再利用するためのアノテーションを削除する: | SLB インスタンスが異常になります。 | サービスに既存の SLB インスタンスを再利用するためのアノテーションを追加してください。 説明 既存の SLB インスタンスを再利用するサービスは、自動作成された SLB インスタンスを使用するサービスに直接変更することはできません。サービスを再作成する必要があります。 |
Server Load Balancer コンソールで ACK によって作成された SLB インスタンスを削除する。 | クラスターネットワークが異常になる可能性があります。 | サービスを削除することで SLB インスタンスを削除してください。詳細については、「サービスの削除」をご参照ください。 |
Nginx Ingress Controller コンポーネントがインストールされている場合、kube-system 名前空間の | Ingress コントローラーが正しく機能せず、クラッシュすることさえあります。 | 以下の YAML テンプレートを使用して、同じ名前の新しいサービスを作成してください。 |
ECS ノード上の DNS 設定ファイル /etc/resolv.conf の | 設定された DNS サーバーが適切に構成されていない場合、DNS 解決に失敗し、クラスターの正常な動作に影響を与える可能性があります。 | 自己管理の DNS サーバーをアップストリームサーバーとして使用する場合は、CoreDNS 側で設定することを推奨します。詳細については、「アンマネージド CoreDNS の設定手順」をご参照ください。 |
ACK によって作成された ENI または Lingjun ENI を変更または削除する。 | Pod ネットワークが中断される。 | 回復不能。 |
ネットワーク関連の CRD を変更または削除する。 | Terway コンポーネントが機能しなくなります。深刻な場合、ネットワークの中断や Pod の例外を引き起こす可能性があります。 | 回復不能。 |
ネットワーク関連のシステム CR を作成、変更、または削除する。 | Terway コンポーネントが機能しなくなります。深刻な場合、ネットワークの中断や Pod の例外を引き起こす可能性があります。 | カスタム CR 定義を削除し、関連する Pod を再作成してください。 |
Terway ネットワーク構成で変更が許可されていないフィールドを変更または削除する。構成パラメーターの詳細については、「Terway 構成パラメーターのカスタマイズ」をご参照ください。 | Terway コンポーネントが機能しなくなります。深刻な場合、ネットワークの中断や Pod の例外を引き起こす可能性があります。 | 元の構成に戻し、ノードを再起動してください。 |
ストレージに関連するリスクの高い操作
リスクの高い操作 | 影響 | 回復計画 |
コンソールでディスクを手動でデタッチする。 | Pod が書き込み操作中に I/O エラーを報告します。 | Pod を再起動し、ノード上の残存マウント情報を手動でクリアしてください。 |
ノード上のディスクマウントパスに対して umount コマンドを実行する。 | Pod がローカルディスクにデータを書き込む。 | Pod を再起動してください。 |
ノード上のディスクを直接操作する。 | Pod がローカルディスクにデータを書き込む。 | 回復不能。 |
同じディスクを複数の Pod にマウントする。 | Pod がローカルディスクにデータを書き込むか、I/O エラーを報告します。 | 1 つのディスクが 1 つの Pod のみで使用されるようにしてください。 重要 クラウドディスクは Alibaba Cloud ストレージチームが提供する非共有ストレージであり、一度に 1 つの Pod にしかマウントできません。 |
NAS のマウントディレクトリを手動で削除する。 | Pod が書き込み操作中に I/O エラーを報告します。 | Pod を再起動してください。 |
使用中の NAS ディスクまたはマウントポイントを削除する。 | Pod で I/O ハングが発生します。 | ECS ノードを再起動してください。詳細については、「ECS インスタンスの再起動」をご参照ください。 |
ログに関連するリスクの高い操作
リスクの高い操作 | 影響 | 回復計画 |
ホスト上の /tmp/ccs-log-collector/pos ディレクトリを削除する。 | ログが繰り返し収集されます。 | 回復不能。このディレクトリのファイルはログ収集位置を記録しています。 |
ホスト上の /tmp/ccs-log-collector/buffer ディレクトリを削除する。 | ログが失われます。 | 復旧不可。このディレクトリには、消費を待つログのキャッシュファイルが含まれています。 |
aliyunlogconfig CRD リソースを削除する。 | ログ収集が失敗します。 | 削除された CRD とそれに対応するリソースを再作成してください。ただし、障害期間中のログは回復できません。 CRD を削除すると、関連するすべてのインスタンスも削除されます。CRD を回復した後でも、削除されたインスタンスを手動で作成する必要があります。 |
ログコンポーネントをアンインストールする。 | ログ収集が失敗します。 | ログコンポーネントを再インストールし、aliyunlogconfig CRD インスタンスを手動で回復してください。アンインストール期間中のログは回復できません。 ログコンポーネントをアンインストールすることは、aliyunlogconfig CRD と Logtail ログコレクターを削除することに相当します。この期間中、すべてのログ収集機能が失われます。 |