Kubernetes クラスターのパフォーマンスの観察と管理は、アプリケーションの健全性を維持し、問題を特定し、高可用性を確保するために重要です。 kubectl と Helm を使用した包括的な監視ソリューションのセットアップ、Grafana、Loki、Prometheus のクラスターへのデプロイ、外部アクセス用の Ingress のセットアップについて説明します。
次の主要な手順について説明します:
前提条件
始める前に、以下のものがあることを確認してください:
ステップ 1: モニタリング名前空間を作成する
名前空間は、Kubernetes リソースを論理的に分割して整理するのに役立ちます。競合を回避し、監視リソースを分離し続けるために、監視ツール専用の名前空間を作成します。
1.モニタリング名前空間を適用します。次の内容を monitoring-namespace.yml ファイルに保存します:
APIバージョン: v1
種類: ネームスペース
メタデータ:
名前: モニタリング
ラベル:
app.kubernetes.io/name: モニタリング
app.kubernetes.io/instance:モニタリング
2. kubectl:
を使用して名前空間を適用します。kubectl apply -f 監視名前空間.yml
このコマンドは、Kubernetes クラスターにモニタリングという新しい名前空間を作成します。
ステップ 2: Helm をインストールし、Grafana リポジトリを追加する
Kubernetes パッケージ マネージャーである Helm を使用すると、Grafana、Loki、Prometheus などの複雑なアプリケーションを簡単にデプロイできます。 Helm をインストールし、必要なリポジトリをセットアップする方法は次のとおりです。
sudo スナップ インストール ヘルム --classic
このコマンドは、Linux 用のパッケージ管理システムである Snap を使用して Helm をインストールします。
helm リポジトリに grafana を追加 https://grafana.github.io/helm-charts
helm リポジトリの更新
これにより、Helm は Grafana リポジトリから最新のチャートを取得できるようになります。
ステップ 3: Helm を使用して Loki、Prometheus、Grafana をデプロイする
Helm のインストールと構成が完了したので、Grafana Helm チャートを使用して Loki、Prometheus、Grafana をデプロイします。
1. Helm インストール コマンドを実行します:
helm upgrade --install loki --namespace=monitoring grafana/loki-stack \
--set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false,loki.persistence.enabled=true,loki.persistence.storageClassName=gp2 ,loki.persistence.size=100Gi --set nodeSelector.name=node.kubernetes.io/description=all_production
A: Grafana: **これにより、Helm チャート内でモニタリング ダッシュボード ツールである Grafana が有効になります。
**B: Prometheus: **Prometheus はメトリクスの収集に対して有効になっていますが、Alertmanager と Prometheus サーバーの永続ボリュームはストレージ構成を簡素化するために無効になっています。
**C: Loki: ログ集約ツールである Loki は、gp2 ストレージ クラスを使用した 100Gi の永続ボリューム ストレージで有効になっています。
--install フラグは、スタックがまだデプロイされていない場合に確実にインストールされるようにします。 --upgrade フラグは、スタックがすでにインストールされている場合、スタックを最新バージョンに更新します。
2.インストールの確認: インストールが成功したら、監視名前空間で実行されているポッドのステータスを確認します:
kubectl ポッドの取得 -n モニタリング
Grafana、Prometheus、Loki、および Promtail (Loki にログを送信します) のポッドが表示されるはずです。
ステップ 4: 外部アクセス用に Ingress を設定する
クラスターの外部から Grafana、Prometheus、または Loki にアクセスするには、Ingress リソースを構成する必要があります。これにより、監視サービスへの外部 HTTP/S アクセスが許可されます。
*1. Ingress リソースを作成する: 次の例を monitoring-ingress.yml ファイルに保存します:
*
apiバージョン: networking.k8s.io/v1
種類: イングレス
メタデータ:
名前: モニタリング入力
名前空間: モニタリング
注釈:
kubernetes.io/ingress.class: "nginx"
cert-manager.io/cluster-issuer: letsencrypt
仕様:
TLS:
- ホスト:
- あなたのドメイン.com
秘密名: 証明書名
ルール:
- ホスト: あなたのドメイン.com
http:
パス:
- パス: /
パスタイプ: プレフィックス
バックエンド:
サービス:
名前:ロキ・グラファナ
ポート:
番号: 80
この Ingress 構成は、ドメイン名 {your-domain.com} で Grafana、Prometheus、および Loki のルーティングを設定します。 your-domain.com を実際のドメインに置き換え、クラスターの外部 IP を指すように DNS を構成する必要があります。
2. Ingress リソースを適用します:
kubectl apply -f モニタリング-ingress.yml
適用されると、Ingress コントローラーはホスト名に基づいてトラフィックを適切なサービスにルーティングします。
kubectl get ingress -n モニタリング
外部からサービスにアクセスできるように、ADDRESS 列に外部 IP が設定されていることを確認してください。
ステップ 5: モニタリング ダッシュボードにアクセスする
Ingress が適切に構成され、DNS がクラスターを指すようになると、Grafana、Prometheus、Loki にアクセスできるようになります。
結論
わずか数個のコマンドで、Helm を使用した完全な監視スタックを Kubernetes クラスターにデプロイすることができました。 Helm チャートを活用することで、Grafana、Loki、Prometheus などの複雑なアプリケーションのデプロイを簡素化すると同時に、Ingress を統合して簡単にアクセスできるようにします。これで、ログとメトリクスをリアルタイムで監視できる強力な可観測性セットアップが完成し、Kubernetes アプリケーションをより効果的に管理および最適化できるようになりました。
この Helm ベースのデプロイメントにより、スケーラビリティが確保され、アップグレードや構成変更が簡素化され、実稼働環境でのオブザーバビリティの管理が容易になります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3