DUICUO

Kubernetes ダッシュボードとその代替手段とは何ですか?

オープンソースの Kubernetes ダッシュボードは、UI ベースのリソースの展開と管理を容易にしますが、欠点があるため、ユーザーは代替手段を採用せざるを得なくなります。

Kubernetes ダッシュボードとは何ですか?

Kubernetes Dashboard は、Kubernetes クラスターを管理するための Web ベースのユーザーインターフェース (Web UI) です。開発者や管理者は、アプリケーション、ノード、ストレージ、ネットワークなどの情報を含むクラスターのステータスを、グラフィカルユーザーインターフェースを通じて簡単に表示、管理、監視できます。

Kubernetes ダッシュボードは次の機能を提供します。

1. リソース ビュー: ノード、ポッド、サービス、デプロイメントなど、Kubernetes クラスター内のすべてのリソースを表示できます。

  1. アプリケーション管理: アプリケーションを表示、実行、デバッグできます。

3. ログの表示: コンテナのログとイベントを表示できます。

4. ヘルス ステータス: ポッド、ノード、サービスのヘルス ステータスを表示できます。

5. 視覚化されたメトリック: 視覚化ツールを使用して、CPU、メモリ、ネットワーク使用量などのクラスター内のメトリック データを表示できます。

Kubernetes Dashboard は、Kubernetes クラスターをシンプルかつ直感的に管理できるツールです。コマンドラインの操作にあまり慣れていないユーザーや、日常業務で頻繁に Kubernetes クラスターを管理する必要がある開発者や管理者にとって、非常に便利で役立つツールです。

Kubernetes ダッシュボードは Web UI を通じてクラスターを管理するため、比較的高いセキュリティ要件があり、適切に構成および保護する必要があることに注意することが重要です。

Kubernetesは、コアオペレーションを処理するための「kubectl」と呼ばれるコマンドラインインターフェース(CLI)コンポーネントを提供しています。しかし、エンタープライズ規模でCLIを使用するには、2つの大きな障害があります。

  • Kubernetes を使用してデプロイする開発者にとって、学習曲線は急峻です。
  • 大規模な複数のクラスターの監視とトラブルシューティングは、SRE チームと Ops チームにとって時間がかかり、イライラする作業です。

Dashboard by Kubernetes(Kubernetes Dashboardとも呼ばれます)は、Kubernetesクラスターへのアプリケーションのデプロイ、すべてのリソースの健全性の監視、発生した問題のトラブルシューティングを行うためのWebベースのユーザーインターフェースです。このアプリケーションは、DevOps、Ops、SREチームがデプロイメント、ステートフルセット、ジョブなどのKubernetesリソースを管理するのに役立ちます。アプリケーションはマニフェストファイルを使用して迅速にデプロイでき、ヘルプはUIから直接更新できます。

Kubernetesダッシュボードの機能

Kubernetes ダッシュボードの主な機能は次のとおりです。

  1. 簡素化された管理: Kubernetes ダッシュボードは、Kubernetes クラスターを視覚的に管理する方法を提供し、ユーザー インターフェースを通じてクラスターを簡単に表示、管理、監視できます。
  2. 包括的なリソース表示: Kubernetes ダッシュボードは、ノード ステータス、ポッド ステータス、サービス ステータス、コンテナの詳細、スケジュール、タイムラインなど、Kubernetes クラスターのさまざまなリソースの表示をサポートしています。
  3. 便利なログ表示: Kubernetes ダッシュボードは便利なログ表示機能を提供しており、インターフェース内でコンテナの出力や Kubernetes イベントを直接表示できます。
  4. メトリクスとモニタリング: Kubernetes ダッシュボードは、CPU、メモリ、ネットワーク使用率などのクラスターのメトリクスとモニタリング データを表示するための視覚化ツールを提供します。
  5. セキュリティ: Kubernetes ダッシュボードは Kubernetes RBAC アクセス制御をサポートしており、クラスターのユーザーとロールの権限を構成できます。

まとめると、Kubernetes DashboardはKubernetesクラスターの管理を大幅に簡素化し、開発者や管理者がクラスターを容易に確認・管理できるようにすることで、作業効率を向上させます。さらに、Kubernetes Dashboardは堅牢なセキュリティを提供し、Kubernetesクラスターへの安全なアクセスを保証します。

Kubernetes ダッシュボードは、主に次の 2 つの機能により DevOps チームにとって魅力的です。

  • クラスタ全体の可視性とトラブルシューティング
  • UIベースの展開

クラスタ全体の可視性とトラブルシューティング

Kubernetesダッシュボードでは、実行中のさまざまなワークロードとその合計数を確認できます。DevOpsエンジニアは、ワークロード、サービス、構成、ストレージ、クラスタービューを可視化できます。

Kubernetes クラスタでは、サービスをより効率的かつ確実に管理するために、開発者と管理者はクラスタ全体の可視性とトラブルシューティングを確保する必要があります。クラスタ全体の可視性とトラブルシューティングを確保するための一般的な方法を以下に示します。

  1. メトリクスとモニタリング: Kubernetes クラスターでメトリクスとモニタリング ツールを使用すると、開発者と管理者はシステムの状態をより深く理解し、サービスの健全性をタイムリーに監視し、障害を予測して防止することでサービスの信頼性と可用性を向上させることができます。
  2. ログの集約と監査: ログの集約と監査ツールは、複数のコンテナと異なるノードからのログを集約できるため、開発者と管理者はログを統一された方法で表示および分析し、問題のトラブルシューティングに役立てることができます。
  3. 分散トレース:複数のサービスやコンテナにまたがるアプリケーションのトレースとトラブルシューティングは非常に困難です。Kubernetesクラスターの分散トレース技術は、アプリケーション内の「分散トレース」操作のトレース、サービス間の依存関係の分析、問題のトラブルシューティングに役立ちます。
  4. ログ記録とイベント通知:ログ記録とイベント通知を設定することで、クラスター内の障害や異常をタイムリーに検出できます。管理者は通知に基づいて適切なタイミングでアクションを実行し、ユーザーへの影響を最小限に抑えることができます。
  5. グレースケールおよびブルーグリーン・デプロイメント:グレースケールおよびブルーグリーン・デプロイメントは、デプロイメントの失敗による影響を軽減するための手法です。アプリケーションをデプロイする際、まず一部のサービスを新しいバージョンにデプロイし、一定期間後に残りのサービスを新しいバージョンにデプロイします。トラフィックは徐々に新しいバージョンに移行されるため、新しいバージョンのサービスのオンラインにおける不安定性や障害を軽減できます。

企業やアプリケーションによってニーズや制限が異なるため、開発者や管理者は実際の状況に基づいて適切な可視性およびトラブルシューティング ソリューションを選択する必要があることに注意することが重要です。

ワークロードビュー

ワークロード ビューは、Kubernetes ダッシュボードの機能の 1 つで、デプロイメント、StatefulSet、DaemonSet など、Kubernetes クラスターで実行されているアプリケーションのさまざまなリソースに関する情報を表示します。

ワークロード ビューでは、次の側面に関する情報が提供されます。

  1. アプリケーションとワークロード: ワークロード ビューには、まず実行中のアプリケーションとワークロードのリストが表示され、各ワークロードをクリックすると詳細が表示されます。
  2. アプリケーションのデプロイメントステータス:ワークロードビューには、アプリケーションの可用性を判断するために使用されるアプリケーションのデプロイメントステータスが表示されます。また、アプリケーションに必要なインスタンス数と実際に使用されたインスタンス数、アプリケーションのランタイムと消費電力も表示されます。
  3. 関連サービス: ワークロード ビューには、アプリケーションで実行されているすべての関連サービスのリストと、IP アドレス、ポート番号、アクセス プロトコルなどの各サービスの詳細も表示されます。
  4. 関連付けられたストレージ ボリューム: ワークロード ビューには、アプリケーションによって使用されるすべてのストレージ ボリュームと、各ボリュームの詳細および容量が一覧表示されます。
  5. 関連付けられたポッド: ワークロード ビューには、実行中のすべてのポッドとコンテナ、およびポッドとコンテナのコンピューティング リソースの使用状況も一覧表示されます。

ワークロードビューを使用すると、開発者と管理者は、Kubernetes クラスターで実行されているアプリケーションのさまざまなリソース(ランタイムステータス、サービス、ストレージボリューム、関連するポッドなど)をより簡単に確認できます。これにより、開発者と管理者は問題をより迅速に特定して解決できるようになり、システムの信頼性と可用性が向上します。ワークロードビューでは、デプロイメント、ポッド、レプリカセット、デーモンセット、ジョブ、ステートフルセットなど、クラスター内のすべての名前空間で実行されているワークロードリソースに関する詳細情報を取得できます。クラスター内の特定の名前空間に基づいて、きめ細かな検索を実行することもできます。

ポッドビュー

Pod View は、Kubernetes クラスターで実行中の Pod に関する詳細情報 (Pod のステータス、コントローラー情報、関連するコンテナーなど) を表示する Kubernetes ダッシュボードの機能です。

ポッド ビューでは、次の側面に関する情報が提供されます。

  1. 基本的なポッド情報: ポッド ビューには、名前、名前空間、IP アドレス、ステータスなど、ポッドに関する基本情報が表示されます。
  2. コンテナ情報: 各ポッドについて、ポッド ビューにはコンテナ名、ステータス、コンテナ ID、CPU、メモリ使用量などの詳細情報を含む、関連付けられているすべてのコンテナが一覧表示されます。
  3. イベント ログ: ポッド ビューには、コンテナの障害、Kubernetes クラスターの障害など、ポッドに関連するイベント ログが表示されます。
  4. 環境情報: ポッド ビューには、コンテナ環境を含むポッドのランタイム環境情報が一覧表示されます。

ワークロードの最も重要な側面の 1 つは、特定のノードとその名前空間で実行されているポッドの数です。

ユーザーは、ポッドに関する次のような詳細情報を受け取ります。

  • タグと注釈に関するメタデータ
  • リソース消費 - CPUとメモリの使用率
  • 作成日と再起動回数
  • イベントログと永続ボリュームの宣言

同様に、Kubernetes ダッシュボードは、名前空間の集約ビューのほか、名前空間内のサービスとエントリ オブジェクト、構成マッピング、ネットワーク ポリシー、機密ボリューム クレームと永続ボリューム クレームの詳細ビューも提供します。

サービスと入場ビュー

エントリービューでは、Kubernetes ダッシュボードはユーザーが Kubernetes クラスターにアクセスするためのゲートウェイとして機能します。ユーザーは Web ブラウザから Kubernetes ダッシュボードにアクセスし、Kubernetes のリソースとワークロードを表示および管理できます。Kubernetes ダッシュボードでは、コンテナ、デプロイメント、サービス、名前空間などのリソースを表示および編集できるほか、アプリケーションの実行状況の監視グラフも表示できます。

Kubernetes ダッシュボードは、実行中のサービスと Ingress オブジェクトを可視化します。これには、各サービスまたは Ingress が属する名前空間、ラベル、クラスター IP が含まれます。ユーザーは、各サービスのラベル、ポッド、エンドポイントなど、より詳細な情報を取得できます。

構成とストレージビュー

構成ビューとストレージ ビューは、IT サービスの構成とストレージ管理を記述するために使用される ITIL フレームワークの 2 つのビューです。

構成ビューは、ITILフレームワークにおけるサービスとインフラストラクチャの構成を記述するビューです。ITリソースからサービスまで、あらゆるレベルを網羅しています。構成ビューは、サービスコンポーネントの構成、それらの関係性、依存関係をより深く理解するのに役立ちます。また、サーバーのハードウェア構成情報、ネットワークトポロジ、ソフトウェアおよびアプリケーションのバージョンと設定など、さまざまな構成項目とそれらの関係性も構成ビューに含まれます。

ストレージビューとは、ITILフレームワークにおけるストレージ管理を記述するビューです。ストレージリソースの構成とストレージの割り当て方法が含まれます。ストレージビューは、ユーザーがストレージの構造と仕様をより深く理解し、ストレージリソースの使用状況、パフォーマンス、および可用性を監視するのに役立ちます。

構成ビューとストレージビューは通常、手動で作成・管理され、ITサービス管理において重要な役割を果たします。これらの2つのビューを利用することで、ITプロフェッショナルはITリソースの構成と設定をより深く理解し、これらの情報に迅速にアクセスして連携できるため、サービスの品質と効率性が向上します。

他のオブジェクトビューと同様に、Kubernetes ダッシュボードには、クラスター内の永続ボリュームクレーム (PCV) に関する詳細情報が表示されます。これには、ステータス、ストレージボリューム、ストレージクラス、アノテーション、タグ、ネームスペースなどが含まれます。また、ダッシュボードには、クラスター内のアプリケーションにデプロイされたクラスター構成も表示され、UI から直接編集できます。

UIベースの展開

UIベースのデプロイメントとは、スクリプトやコマンドラインコードを記述することなく、グラフィカルユーザーインターフェース(UI)を使用してアプリケーションやサービスを迅速に作成、構成、デプロイすることを指します。このアプローチは、デプロイメントや構成にコマンドラインを使いたくない、あるいは使い慣れていない開発者や管理者に適しています。

ユーザーインターフェース(UI)は通常、ユーザーフレンドリーなインターフェースを提供し、ユーザーが簡単な手順でアプリケーションやシステムをデプロイできるようにします。UIを通じて、ユーザーはコンテナイメージ、ネットワーク構成、ストレージオプションなど、必要なデプロイおよびインストールオプションを選択・設定できます。また、UIはデプロイ状況やエラーメッセージに関するリアルタイムのフィードバックを提供することで、ユーザーが問題をより適切に追跡・解決できるようにします。

UIベースのデプロイメントは、プラットフォームやサービスプロバイダー固有のものでも、Dockerのような汎用的なものでも構いません。エンタープライズIT環境では、このアプローチによりデプロイメント速度の向上、ユーザーエラー率の低減、メンテナンスの簡素化が期待できます。Kubernetesダッシュボードを使用すると、UIから任意の(ワークロード)リソースをデプロイできます。マニフェストファイルはブラウザで作成することも、Gitなどのソースからアップロードすることもできます。KubernetesダッシュボードはKubernetesコントローラーと直接通信し、作成されたリソースオブジェクトを取得します。以下の例では、NGINX 1.19.0イメージを使用して、ポッドを作成するためのマニフェストファイルを作成しました。

Kubernetesダッシュボードアーキテクチャ

Kubernetes ダッシュボードは、Kubernetes アーキテクチャ上に開発された外部サービスです。ダッシュボードは内部的に API を使用し、クラスター全体の情報を読み取り、単一のペインで可視化します。また、リソースとアプリケーションをクラスターにデプロイする際にも API を使用します。CLI と Kubernetes ダッシュボードはどちらも、リクエストの処理に kube-API-server を使用します。CLI を使い始めるには、運用チームが Kubernetes ダッシュボードを同じクラスター内にデプロイする必要があります(Kubectl のデプロイと同様)。

Kubernetes ダッシュボードを使い始める

Kubernetes ダッシュボードの使用を開始するには、クラスターで次のコマンドを実行する必要があります。

ステップ1: Kubernetesダッシュボードをデプロイする

Kubernetes Dashboard アプリケーションをデプロイするには、次のコマンドを実行します。

kubectl apply -fhttps://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml

ローカルマシンから Kubernetes ダッシュボードにアクセスするには、次のコマンドを実行して、K8s クラスターにアクセスするための安全なチャネルを作成します。

 kubectlプロキシ

次の URL を使用してダッシュボードにアクセスできます。

http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/

ステップ2: サービスアカウントを作成する

Kubernetesダッシュボードは最小限のRBAC権限でインストールされるため、ベアラートークンを使用してアクセスできます。そのため、サービスアカウントを作成し、管理者権限でクラスターにバインドすることができます。以下のサービスアカウントYAMLファイルを使用できます。

 apiVersion : v1kind : ServiceAccountmetadata : name : admin -ユーザー名前空間: kubernetes -ダッシュボード

コマンドを使用してサービス リソースを作成します。

 kubectl - apply - f << serviceaccount .yaml >>

次の ClusterRoleBinding YAML を使用して、サービス アカウント cluster-admin を作成できます。

 apiVersion : v1kind : ClusterRoleBindingmetadata : name : admin - userroleRef : apiGroup : rbac.authorization.k8s.io kind : ClusterRole name : cluster - adminsubjects : kind : ServiceAccount name : admin - user namespace : kubernetes - dashboard

同様に、YAML ファイルを使用してクラスター内に ClusterRoleBinding リソースを作成します。

ステップ3: ベアラートークンを生成する

コマンドを使用してベアラー トークンを生成します。

 kubectl - n kubernetes -ダッシュボードシークレットを取得します$ ( kubectl - n kubernetes -ダッシュボードsa / admin - user - o jsnotallow = "{.secrets[0].name}" ) - o go - template = "{{.data.token | Base64decode}}"

ステップ4: トークンを使用してダッシュボードの使用を開始する

Kubernetes ダッシュボードの使用を開始するには、ベアラー トークンを貼り付けることができます。

Kubernetesダッシュボードの制限

CLIではなくUIベースのKubernetesダッシュボードを使用するのは、間違いなく良いアイデアです。しかし、そのユースケースを小規模なスタートアップに限定するいくつかの制限があります。

  1. 複数クラスタビューの欠如: Kubernetesダッシュボードは、単一クラスタ内の名前空間に関するビューを提供します。複数のクラスタのビューは提供されません。
  2. 最小限のRBAC: Kubernetesはすべてのユーザーに対してきめ細かなアクセス制御を提供していません。トークンまたはkubeconfigファイルに依存する必要があります。
  3. シングルサインオン(SSO)の欠如: Kubernetesダッシュボードはシングルサインオンサービスを提供していません。SSOは、中規模から大規模の企業にとって、Kubernetes内のリソースとアプリケーションを保護するために不可欠です。
  4. ノード管理機能なし: Kubernetesダッシュボードでは、DevOpsチームがノード情報(ステータス、タグ、制限、メモリ/CPUリクエスト、マシンID、アドレス、割り当てられたリソース、ポッドなど)を確認できます。ただし、ノードの編集は許可されていません。ノードが正常でない場合、ポッドは実行されず、クラスターアクティビティにも参加しないため、これは重要です。
  5. HELMダイアグラムは可視性と管理性が全くありません。多くの組織がKubernetesアプリケーションの大規模なデプロイにHELMダイアグラムを使用しています。残念ながら、KubernetesダッシュボードはHELMダッシュボードのような機能を提供していません。
  6. アプリケーションビューの欠如: Kubernetesダッシュボードはリソースやオブジェクトのビューを提供しますが、アプリケーションに関するより多くの情報が必要となるため、開発者がデプロイメントを変更することが困難になります。アプリケーションビューがないため、Kubernetesダッシュボードの使用は運用チームに限定されます。
  7. 監査: Kubernetes ダッシュボードでは、アプリケーションを誰が、いつ、どのようにデプロイしたかなどのデプロイメントに関する監査レポートは提供されません。

Kubernetes ダッシュボードは UI のデプロイメントを容易にするために開発されましたが、現在のところ UI アプリケーションからの高度なデプロイメント戦略 (カナリアなど) のためのメカニズムは存在しないことに注意してください。

Kubernetesダッシュボードのオープンソース代替品

Kubernetes ダッシュボードには、独立して構築することも、ダッシュボード プロジェクト上に構築して UI からデプロイ、監視、トラブルシューティングする機能を強化できるオープンソースの代替手段が 4 つあります。

1. Devtron Kubernetes ダッシュボード:

Devtronは、CI/CD、GitOps、セキュリティとガバナンス、増分デプロイメント、可観測性、監視、トラブルシューティングなど、ソフトウェアデリバリープロセス全体を自動化するオープンソースのKubernetesネイティブDevOpsプラットフォームを提供しています。Devtron Kubernetesダッシュボードは、強力な機能を単一のペインで提供し、DevOps、SRE、そして開発者の業務を簡素化します。

  • マルチクラスタのリソース監視とノード管理
  • ダッシュボードの単一ペインからの HELM チャート ダッシュボードと管理。
  • イベントとリアルタイム ログ、およびデバッグ用の Pod 実行。
  • UI ベースの展開 (または既存のマニフェスト ファイルの変更)
  • 新しいデプロイメントを直ちに本番環境にロールバックします。
  • DORAインデックス
  • ユーザー、操作、リソースに対するきめ細かな RBAC。

2. レンズを開く

MITライセンスでライセンスされているこのオープンソースソフトウェアは、複数のクラスターにまたがるワークロードの管理と監視に使用されます。HELMの基本的なリソース管理とリソースのグループ化機能も備えていますが、習得に時間がかかる場合があります。また、マルチクラスター展開用のHELMチャートグループやチャート設定の違いなど、いくつかの盲点があります。

3. 8/8円

OctaneはVMwareが立ち上げたオープンソースのダッシュボードでしたが、現在はアーカイブ化されています。コミュニティからのサポートはなく、自分で開発する必要がありました。当初、このプロジェクトは開発者がUIを使用してクラスタにコードをより迅速に送信できるようにすることを目的としていました。Octaneには、クラスタの可視化と管理に関する機能が限られていました。

表の比較

Vanilla Kubernetes ダッシュボードと Devtron Kubernetes ダッシュボードと OpenLens の比較。

クラスターとリソース管理

安全性