Kubernetes の高度なトピックとアーキテクチャ
Kubernetes Operator の概念を説明し、それを使用する例を挙げてください。
回答:
Kubernetes Operator は、Kubernetes ネイティブアプリケーションをパッケージ化、デプロイ、管理する方法です。Kubernetes API を拡張して、複雑なアプリケーションのインスタンスを作成、設定、管理します。データベース (例:Cassandra, MySQL) のようなステートフルアプリケーションでは、バックアップ、アップグレード、スケーリングなどのタスクを自動化するために Operator を使用します。
Kubernetes における Custom Resource Definition (CRD) の目的を説明してください。
回答:
Custom Resource Definition (CRD) を使用すると、Kubernetes API を拡張して、独自のカスタムリソースを Kubernetes で定義できます。これにより、Kubernetes が管理できる構造化データを保存および取得できるようになります。CRD は、Operator の構築やアプリケーション固有のオブジェクトの定義に不可欠です。
Kubernetes API Server は、リクエストに対する認証と認可をどのように処理しますか?
回答:
API Server は、クライアント証明書、ベアラートークン、またはサービスアカウントトークンなどのさまざまな方法で認証を処理します。認証後、RBAC (Role-Based Access Control)、Node 認証、または ABAC (Attribute-Based Access Control) などのモジュールを使用して認可が実行されます。RBAC が最も一般的であり、権限を持つロールを定義し、それらをユーザーまたはサービスアカウントにバインドします。
Kubernetes における DaemonSet と Deployment の違いは何ですか?
回答:
Deployment は、同一の Pod のセットを管理し、クラスター全体で望ましい数のレプリカが実行されていることを保証します。通常はステートレスアプリケーション向けです。DaemonSet は、すべてのノード(または一部のノード)で Pod のコピーを実行することを保証します。これは、すべてのノードで実行する必要があるログコレクター (例:Fluentd) や監視エージェント (例:Node Exporter) のようなクラスターレベルのサービスに役立ちます。
Pod Security Policies (PSPs) の概念と、それらが非推奨になっている理由を説明してください。
回答:
Pod Security Policies (PSPs) は、Pod とコンテナにセキュリティ標準を強制するアドミッションコントローラーでした。これにより、クラスター管理者は、特権モード、ホストネットワークアクセス、ボリュームタイプなどのセキュリティに敏感な側面を制御できました。PSPs は、より柔軟で詳細な制御を提供する Pod Security Admission (PSA) および OPA Gatekeeper のようなポリシーエンジンを支持して非推奨になっています。
Kubernetes コントロールプレーンの高可用性をどのように実現しますか?
回答:
コントロールプレーンの高可用性は、API Server、etcd、Controller Manager、および Scheduler の複数のインスタンスを実行することによって実現されます。etcd は通常、クォーラムベースのクラスター (例:3 または 5 ノード) として実行されます。API Server の前にロードバランサーが配置され、トラフィックを分散し、フェイルオーバーを提供します。
ミューテーティングアドミッションウェブフックとは何か、そしてどのように使用できますか?
回答:
ミューテーティングアドミッションウェブフックは、Kubernetes API Server へのリクエストを永続化する前に変更できる HTTP コールバックです。サイドカーコンテナを注入したり、ラベル/アノテーションを追加したり、フィールドのデフォルト値を設定したりできます。例えば、サービスメッシュ統合のために Pod に istio-proxy サイドカーを自動的に注入できます。
Kubernetes クラスターにおける etcd の役割を説明してください。
回答:
etcd は、Kubernetes の整合性が取れた高可用性のキーバリューストアとして機能します。すべての Kubernetes オブジェクト (Pod、Deployment、Service など) の構成、状態、メタデータを含む、すべてのクラスターデータを格納します。クラスターの運用に不可欠であり、その可用性はクラスターの正常性に直接影響します。
Kubernetes はネットワークポリシーの強制をどのように処理しますか?
回答:
Kubernetes Network Policies は、Pod のグループが互いに、および外部エンドポイントとどのように通信できるかを定義する仕様です。これらは、Calico、Cilium、または Weave Net のような NetworkPolicy をサポートするネットワークプラグイン (CNI) によって実装されます。CNI プラグインは、これらのポリシーをファイアウォールルールに変換します。
Taints と Tolerations とは何であり、Pod スケジューリングにどのように使用されますか?
回答:
Taints はノードに適用され、それらのノードに一致する Tolerations を持つ Pod がない限り、特定の Pod にとって「不適切」であるとマークします。Tolerations は Pod に適用され、それらが Tainted ノードにスケジュールされることを可能にします。このメカニズムは、特定のワークロード (例:GPU ノード) のためにノードを予約したり、正常でないノードから Pod をエビクトしたりするために使用されます。