Kubernetesクラスターイベントをリアルタイムで視覚化する方法



このブログ投稿では、Fluentdロギングエージェントを使用してKubernetesクラスターイベントデータをAmazon ElasticSearchに公開する方法を学びます。

この記事では、KubernetesクラスターイベントデータをAmazonに公開する方法を学習します Fluentdロギングエージェントを使用します。データは、を使用して表示されます 、Elasticsearchのオープンソース視覚化ツール。 Amazon ESは、統合されたKibana統合で構成されています。

次のプロセスについて説明します。





ステップ1:Kubernetesクラスターを作成する

Kubernetesは、コンテナ化されたアプリケーションを管理するためにGoogleによって作成されたオープンソースプラットフォームです。コンテナ化されたアプリをクラスター環境で管理、スケーリング、デプロイできます。 さまざまなホスト間でコンテナをオーケストレーションできます。 知事 、コンテナ化されたアプリをすべてのリソースでオンザフライでスケーリングし、一元化されたコンテナ管理環境を備えています。

まず、Kubernetesクラスターの作成から始め、CentOS7にKubernetesをインストールして構成する方法を段階的に説明します。



1。 ホストを構成する

    • vi / etc / hosts
    • ホストファイルのホストの詳細に応じて変更を加える

IMG1-Elasticsearch-Edureka

2.2。 以下のコマンドを実行してSELinuxを無効にします



    • setenforce 0
    • sed -i –follow-symlinks‘s / SELINUX = enforcing / SELINUX = disabled / g ’/ etc / sysconfig / selinux

3.3。 br_netfilterカーネルモジュールを有効にする

br_netfilterモジュールは、kubernetesのインストールに必要です。 以下のコマンドを実行して、br_netfilterカーネルモジュールを有効にします。
    • modprobe br_netfilter
    • エコー「1」> / proc / sys / net / bridge / bridge-nf-call-iptables

四。 以下のコマンドを実行して、SWAPを無効にします。

    • スワップオフ-a
    • 次に、/ etc / fstabを編集して、スワップ行にコメントを付けます

5.5。 DockerCEの最新バージョンをインストールします。以下のコマンドを実行して、docker-ceのパッケージ依存関係をインストールします。

    • yum install -y yum-utils device-mapper-persistent-data lvm2
dockerリポジトリをシステムに追加し、yumコマンドを使用してdocker-ceをインストールします。

6.6。 Kubernetesをインストールする

次のコマンドを使用して、kubernetesリポジトリをcentos7システムに追加します。
    • yum install -y kubelet bebeadm kubectl

[kubernetes] name = Kubernetes baseurl = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 enabled = 1 gpgcheck = 1 repo_gpgcheck = 1 gpgkey = https://packages.cloud.google。 com / yum / doc / yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
をインストールします 以下のyumコマンドを実行して、kubeadm、kubelet、およびkubectlをパッケージ化します。
  • systemctl start docker && systemctl enable docker

インストールが完了したら、それらのサーバーをすべて再起動します。再起動後、サービスdockerとkubeletを開始します

  • systemctl start docker && systemctl enable docker
  • systemctl start kubelet && systemctl enable kubelet
7。 Kubernetesクラスターの初期化 マスターサーバーにログインし、以下のコマンドを実行します
  • systemctl start kubelet && systemctl enable kubelet
Kubernetesの初期化が完了すると、結果が得られます。得られた結果からコマンドをコピーして実行し、クラスターの使用を開始します。 結果からkubeadmjoinコマンドをメモします。このコマンドは、新しいノードをkubernetesクラスターに登録するために使用されます。 8.8。 フランネルネットワークをkubernetesクラスターにデプロイします kubectl apply -f

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

フランネルネットワークがKubernetesクラスターにデプロイされました。 しばらく待ってから、以下のコマンドを使用してkubernetesノードとポッドを確認します。
    • kubectlgetノード
    • kubectl get pods –all-namespaces
また、「k8s-master」ノードが「master」クラスターとして実行され、ステータスが「ready」になり、ネットワークポッドの「kube-flannel-ds」を含む、クラスターに必要なすべてのポッドが取得されます。構成。

9.9。 クラスターへのノードの追加node01サーバーに接続し、kubeadmjoinコマンドを実行します

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256:3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a0c5ab

node02サーバーに接続し、kubeadmjoinコマンドを実行します

    • kubeadm join 172.31.7.47:6443 –token at03m9.iinkh5ps9q12sh2i –discovery-token-ca-cert-hash sha256:3f6c1824796ef1ff3d9427c883bde915d5bc13331d74891d831f29a8c4a0c5ab

しばらく待って、「k8s-master」マスタークラスタサーバーを検証し、次のコマンドを使用してノードとポッドを確認します。

      • kubectlgetノード

これで、worker1が取得され、worker2がステータス「ready」でクラスターに追加されました。

      • kubectl get pods –all-namespaces

Kubernetesクラスターマスターの初期化と構成が完了しました。

ステップ2:AmazonESクラスターを作成する

Elasticsearchは、アプリケーションのログ分析とリアルタイム監視に使用されるオープンソースの検索および分析エンジンです。 Amazon Elasticsearch Service(Amazon ES)は、AWSクラウドでのElasticsearchのデプロイ、運用、拡張を可能にするAWSサービスです。 Amazon ESを使用して、AmazonSESからのEメール送信イベントを分析できます。

Amazon ESクラスターを作成してから、FluentdロギングエージェントをKubernetesクラスターにデプロイします。Kubernetesクラスターはログを収集してAmazonESクラスターに送信します

このセクションでは、AmazonESコンソールを使用してAmazonESクラスターを作成する方法を示します。

AmazonESクラスターを作成するには

    1. AWSマネジメントコンソールにサインインし、Amazon ElasticsearchServiceコンソールを開きます。 https://console.aws.amazon.com/es/
    2. 選択する 新しいドメインを作成し、展開タイプを選択します AmazonESコンソールで
    3. [バージョン]で、Elasticsearchバージョンフィールドのデフォルト値のままにします。
    4. 次を選択
    5. にElastic検索ドメインの名前を入力します クラスターの構成 下のページ ドメインを構成します。
    6. [クラスターの構成]ページで、[データインスタンス]の下の次のオプションを選択します
      • インスタンスタイプ – t2.micro.elasticsearch(無料利用枠の対象)を選択します。
      • インスタンスの数 - 1
    7. 専用マスターインスタンス
      • 専用マスターを有効にする –このオプションを有効にしないでください。
      • ゾーン認識を有効にする –このオプションを有効にしないでください
    8. [ストレージ構成]で、次のオプションを選択します。
      • ストレージタイプ –EBSを選択します。 EBS設定には、汎用(SSD)のEBSボリュームタイプとEBSボリュームサイズを選択します&thinsp10の。
    9. 暗号化中– このオプションを有効にしないでください
    10. スナップショット構成の下
      • 自動スナップショット開始時間 –自動スナップショット開始時間00:00 UTC(デフォルト)を選択します。
    11. 次を選択
    12. [ネットワーク構成]で[VPCアクセス]を選択し、VPCに従って詳細を選択します。Kibana認証の場合:–このオプションを有効にしないでください。
    13. アクセスポリシーを設定するには、[ドメインへのオープンアクセスを許可する]を選択します。注:-本番環境では、特定のIPアドレスまたは範囲へのアクセスを制限する必要があります。
    14. [次へ]を選択します。
    15. [確認]ページで、設定を確認し、[確認して作成]を選択します。

注:クラスターのデプロイには最大10分かかります。作成されたElasticSearchドメインをクリックしたら、KibanaのURLをメモします。

ステップ3:KubernetesクラスターにFluentdロギングエージェントをデプロイする

Fluentdはオープンソースのデータコレクターであり、データの収集と消費を統合して、データの使用と理解を向上させることができます。この場合、FluentdロギングをKubernetesクラスターにデプロイします。これにより、ログファイルが収集され、Amazon ElasticSearchに送信されます。

ポッドと名前空間オブジェクトにアクセス許可を提供するClusterRoleを作成して、クラスターへのget、list、およびwatchリクエストを作成します。

まず、Fluentdが適切なコンポーネントにアクセスできるように、RBAC(役割ベースのアクセス制御)権限を構成する必要があります。

Javaでのcharのデフォルト値

1.fluentd-rbac.yaml:

apiVersion:v1種類:ServiceAccountメタデータ:名前:fluentd名前空間:kube-system --- apiVersion:rbac.authorization.k8s.io/v1beta1種類:ClusterRoleメタデータ:名前:fluentd名前空間:kube-システムルール:-apiGroups:-' 'リソース:-ポッド-名前空間動詞:-取得-リスト-監視---種類:ClusterRoleBinding apiVersion:rbac.authorization.k8s.io/v1beta1メタデータ:名前:fluentd roleRef:種類:ClusterRole名:fluentd apiGroup:rbac.authorization .k8s.ioサブジェクト:-種類:ServiceAccount名:fluentd名前空間:kube-system

作成:$ kubectl create -f kubernetes / fluentd-rbac.yaml
これで、DaemonSetを作成できます。

2. fluentd-daemonset.yaml

apiVersion:extensions / v1beta1種類:DaemonSetメタデータ:名前:fluentd名前空間:kube-システムラベル:k8s-app:fluentd-ロギングバージョン:v1 kubernetes.io/cluster-service:'true '仕様:テンプレート:メタデータ:ラベル:k8s -app:fluentd-loggingバージョン:v1 kubernetes.io/cluster-service:'true '仕様:serviceAccount:fluentd serviceAccountName:fluentd tolerations:-キー:node-role.kubernetes.io/master効果:NoScheduleコンテナー:-名前: fluentdイメージ:fluent / fluentd-kubernetes-daemonset:v1.3-debian-elasticsearch env:-名前:FLUENT_ELASTICSEARCH_HOST値: 'elasticsearch.logging'-名前:FLUENT_ELASTICSEARCH_PORT値:' 9200'-名前:FLUENT_ELASTICSEARCH_SCHEME値: 'http'名前:FLUENT_UID値: '0'リソース:制限:メモリ:200Miリクエスト:cpu:100mメモリ:200Mi volumeMounts:-名前:varlog mountPath:/ var / log-名前:varlibdockercontainers mountPath:/ var / lib / docker / containers readOnly :trueterminationGracePeriodSeconds:30ボリューム:-名前:varlog hostPath:パス:/ var / log-名前: varlibdockercontainers hostPath:パス:/ var / lib / docker / containers

Elastic Search環境に応じて、FLUENT_ELASTICSEARCH_HOSTとFLUENT_ELASTICSEARCH_PORTを必ず定義してください

デプロイ:

$ kubectl create -f kubernetes / fluentd-daemonset.yaml

ログを検証する

$ kubectlログfluentd-lwbt6-n kube-system | grep接続

Fluentdがログ内でElasticsearchに接続していることがわかります。

ステップ4:Kibanaでkubernetesデータを視覚化する

  1. キバナダッシュボードのURLに接続して、AmazonESコンソールから取得します
  2. FluentdがKibanaで収集したログを表示するには、[管理]をクリックし、[Kibana]の下の[インデックスパターン]を選択します。
  3. デフォルトのインデックスパターンを選択します(logstash- *)
  4. [次のステップ]をクリックして、[時間フィルターフィールド名](@ timestamp)を設定し、[インデックスパターンの作成]を選択します
  5. [検出]をクリックして、アプリケーションログを表示します
  6. [視覚化]をクリックして、視覚化の作成を選択し、[円]を選択します。以下に示すように、次のフィールドに入力します。
    • Logstash- *インデックスを選択し、分割スライスをクリックします
    • 集約–重要な用語
    • フィールド= Kubernetes.pod_name.keyword
    • サイズ– 10

7.そして変更を適用する

それでおしまい!これは、Kibanaで作成されたKubernetesポッドを視覚化する方法です。

概要

ログ分析による監視は、アプリケーション展開の重要なコンポーネントです。 Kubernetesのクラスター全体でログを収集して統合し、1つのダッシュボードからクラスター全体を監視できます。この例では、fluentdがkubernetesクラスターとAmazonESの間のメディエーターとして機能することを確認しました。 Fluentdは、ログの収集と集約を組み合わせ、ログ分析とkibanaを使用したデータの視覚化のためにログをAmazonESに送信します。

上記の例は、fluentdを使用してAWSElastic検索ログとkibanaモニタリングをkubernetesクラスターに追加する方法を示しています。

このKubernetesブログに関連性があると思われる場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。

質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。