Kubernetes Managed Service Column <Kubernetes運用コラム>

Kubernetesの重要な構成要素である「Node」について解説します!

Category: 入門編

2024.03.25

Nodeの概要、構成要素、役割、実装手順、ヘルスチェック、セキュリティについて

本記事では Node がどのようにして Pod と連携し、コンテナが実際にどのように実行されるのか、Kubernetes の基本的な構成要素である Node の重要性について解説します。

1. Nodeとは

Kubernetes における Node とは、クラスタ内でコンテナ化されたアプリケーションが実行される個々のリソースを指します。クラスタ環境内でそれぞれの Node が連携することで、ワークロードの負荷分散や、可用性の向上を実現しています。

Nodeとは

Nodeの種類

Node には2つの種類があります。

Worker Node

Worker Node は Kubernetes クラスタ内でアプリケーションの実際の実行を担当する Nodeです。
Worker Node は計算リソース( CPU 、メモリ)、ストレージ、ネットワークを提供し、Pod がスケジューリングされて実行される場所です。

Control Plane Node

Control Plane Node は、クラスタにおける Master Node の総称です。Kubernetes v1.24 までは、そのまま Master Node と呼ばれていました。
主なコンポーネントには kube API Server 、 Controller Manager 、 Scheduler 、 kube-dns 、 etcd が含まれます。

2. Nodeの主要な構成要素について

Node が持つ主な構成要素について、 Worker Node 、 Control Plane Node 毎に解説します。

Worker Nodeの構成要素

Kubelet

Kubelet は Node 上で動作するエージェントであり、マスターノードからの指示に基づいて Node 上でのコンテナの作成、起動、停止などの操作を実行します。

Container Runtime

Container Runtime は、 Kubelet が指示された通りにコンテナを実行するためのソフトウェアです。代表的な Container Runtime には Docker 、 Containerd 、 CRI-O などがあります。

Kube Proxy

Kube Proxy は、 Node 上でネットワークプロキシの機能を提供し、 Kubernetes クラスタ内でサービスディスカバリやロードバランシングなどネットワーク関連操作を行います。

Control Plane Nodeの構成要素

kube API Server

kube API Server は Kubernetes クラスタの制御プレーンのエントリーポイントであり、Kubernetes API へのすべての操作を処理します。

Controller Manager

Controller Manager は、クラスタ内の様々なコントローラを管理し、動作を監視し、必要に応じて調整を行う機能です。

Scheduler

Scheduler は新しい Pod がどのワーカーノードにスケジューリングされるかを決定する機能です。 Worker Node にリソースが足りない場合や特定の条件を満たす場合に、 Scheduler は新しい Pod を適切なノードに割り当てます。

etcd

etcd は Kubernetes クラスタ内のデータを永続的に保存する分散データベースです。クラスタの設定、状態、コンフィギュレーションなどの情報を格納し、各コンポーネントがこのデータベースを利用して一貫性のある情報を取得します。

Control Plane Nodeの構成要素

図版出典:Sysdig

3. Nodeの実装手順について

本章では Node の追加と削除に関する手順を解説します。

追加手順

①物理または仮想マシンのセットアップ

Kubernetes がインストールされた状態で、新しい Node をセットアップします。これには Kubelet や Container Runtime も含まれます。

②kubeletの設定

新しい Node 上で Kubelet を構成します。これには Kube API Server に接続するための設定なども含まれます。

③Control Plane Nodeへの登録

新しい Node を Control Plane Node に登録します。これには新しい Node がクラスタ内の全体的な情報を共有できるように、クラスタに関する情報を etcd に保存するプロセスも含まれます。

④スケジューリングとコンテナの実行

新しい Node が Control Plane Nod に正常に登録されたら、Schedulerは新しい Node に Pod をスケジューリングし、 Kubelet はその Pod を実行します。

削除手順

①Podの移動

削除対象の Node 上で実行中の Pod を他の Node に移動します。これにより、アプリケーションが中断することなく稼働し続けることができます。

②Control Plane Nodeからの登録解除

削除対象の Node を Control Plane Node から正しく登録解除します。これにより、クラスタの情報が更新されます。

③Nodeの停止およびリソースの解放

削除対象の Nodeを停止し、クラスタから物理的または仮想的に削除します。これにより、クラスタからのリソースが解放されます。

④クリーンアップ

不要になったリソースや設定をクリーンアップします。これには、 etcd 内で関連するエントリを削除するなどが含まれます。

4. Nodeのヘルスチェックについて

本章では Node の状態を監視するためのヘルスチェック機能及び、障害復旧機能の実装について解説します。

ヘルスチェック

KubeletのLiveness Probe

Kubelet は自身の Liveness Probe を提供し、自身のヘルス状態を監視します。 Kubeletの停止などにより、応答がない場合は、 Kubernetes マスターがその Node をダウンと見なし、対応するアクションを実行します。

NodeのLiveness Probe

Node の全体的なヘルス状態を確認するために、クラスタ内で Node 全体に対して Liveness Probe を設定することができます。物理的な Node 自体の障害が検出されると、 Kubernetes はそのノードをダウンと見なし、対応するアクションを実行します。

障害復旧

Podの再スケジューリング

Node がダウンした場合、その Node 上で実行されていた Pod は他の Node に再スケジューリングされます。

ReplicaSetの使用

ReplicaSet や Deployment などのコントローラを使用することで、特定の Pod が停止した場合に新しい Pod が再スケジューリングされ、必要なレプリカ数が維持されます。

自動Node修復

Kubernetes 1.10以降では、自動 Node 修復( Automatic Node Repair )と呼ばれる機能が導入され、 AWS や GCP などのクラウドプロバイダにおいて、 Node が異常な状態になった場合に自動的に修復される仕組みが提供されています。

Node Problem Detector

Problem Detector は、 Node 上で発生した問題を検出し、それに基づいて自動的な修復アクションをトリガーする仕組みです。これにより、特定の問題に対してカスタムな修復手段を組み込むことが可能となりました。

5. Nodeのセキュリティについて

本章ではNode のセキュリティ設定におけるベストプラクティスについて解説します。

最小特権の原則

大前提の原則として Node 上の各プロセスやコンポーネントには、最小限の必要な権限しか与えないようにします。

Kubeletのセキュリティ設定

Kubelet はクラスタ内で最も重要なコンポーネントの一つであり、適切な認証、認可、および TLS 設定を確実に行い、不要な機能や API への不正なアクセスを防ぐためにセキュリティ設定を行います。

Nodeの監査ログを有効化する

Node 上の操作やイベントの監査ログを有効にし、異常な活動や不正アクセスの疑いがある場合に迅速に特定できるようにします。

Kubernetesのセキュリティ機能の活用

Kubernetes が提供するセキュリティ機能( RBAC 、 Network Policies など)を適切に設定し、Node への不正なアクセスを防ぐことができます。

これらのベストプラクティスは、 Node のセキュリティを向上させ、クラスタ全体の安全性を確保するのに役立ちます。

紹介したのは一例ですが、セキュリティは継続的なプロセスであるため、新たな脅威に対応するために最新のセキュリティベストプラクティスを継続的に確認することも重要です。

6. まとめ

Node が正常に機能していることは、クラスタ全体の可用性と信頼性に直結します。また Node の追加や削除、リソースの効果的な利用は、ビジネスの成長や需要の変動に対応するために重要です。

そのためにログやモニタリングデータの適切な管理も、トラブルシューティングおよび予防的なメンテナンスの実施に役立ち、システムの安定性を確保できます。

さらに Node セキュリティの確保は、データおよびアプリケーションの安全性を確保し、法規制や業界のコンプライアンス要件を遵守するために不可欠です。

このように Node の適切な管理は、クラウドネイティブ環境においてアプリケーションの稼働を支え、ビジネスの競争力や効率を向上させる要素と言えるでしょう。

Kubernetes の運用を相談したい

Kubernetes運用サポートサービス

Kubernetes運用サポートサービス

クラウドベンダが提供するKubernetes 環境の運用をサポートします。

Free

資料ダウンロード

課題解決に役立つ詳しいサービス資料はこちら

資料ダウンロード
  • Kubernetes運用サポートサービスカタログ

    サービスの詳細をご覧いただけます。

Contactお問い合わせ

お見積もり・ご相談など、お気軽にお問い合わせください。

single.php