この記事では、KubernetesクラスターイベントデータをAmazonに公開する方法を学習します Fluentdロギングエージェントを使用します。データは、を使用して表示されます 、Elasticsearchのオープンソース視覚化ツール。 Amazon ESは、統合されたKibana統合で構成されています。
次のプロセスについて説明します。
- Kubernetesクラスターの作成
- AmazonESクラスターの作成
- FluentdロギングエージェントをKubernetesクラスターにデプロイする
- Visualize kubernetes date in Kibana
ステップ1:Kubernetesクラスターを作成する
Kubernetesは、コンテナ化されたアプリケーションを管理するためにGoogleによって作成されたオープンソースプラットフォームです。コンテナ化されたアプリをクラスター環境で管理、スケーリング、デプロイできます。 さまざまなホスト間でコンテナをオーケストレーションできます。 知事 、コンテナ化されたアプリをすべてのリソースでオンザフライでスケーリングし、一元化されたコンテナ管理環境を備えています。
まず、Kubernetesクラスターの作成から始め、CentOS7にKubernetesをインストールして構成する方法を段階的に説明します。
1。 ホストを構成する
- vi / etc / hosts
- ホストファイルのホストの詳細に応じて変更を加える
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
- yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
- yum install -y 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
- systemctl start kubelet && systemctl enable kubelet
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
フランネルネットワークがKubernetesクラスターにデプロイされました。 しばらく待ってから、以下のコマンドを使用してkubernetesノードとポッドを確認します。- kubectlgetノード
- kubectl get pods –all-namespaces
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クラスターを作成するには
- AWSマネジメントコンソールにサインインし、Amazon ElasticsearchServiceコンソールを開きます。 https://console.aws.amazon.com/es/
- 選択する 新しいドメインを作成し、展開タイプを選択します AmazonESコンソールで。
- [バージョン]で、Elasticsearchバージョンフィールドのデフォルト値のままにします。
- 次を選択
- にElastic検索ドメインの名前を入力します クラスターの構成 下のページ ドメインを構成します。
- [クラスターの構成]ページで、[データインスタンス]の下の次のオプションを選択します
- インスタンスタイプ – t2.micro.elasticsearch(無料利用枠の対象)を選択します。
- インスタンスの数 - 1
- 下専用マスターインスタンス
- 専用マスターを有効にする –このオプションを有効にしないでください。
- ゾーン認識を有効にする –このオプションを有効にしないでください。
- [ストレージ構成]で、次のオプションを選択します。
- ストレージタイプ –EBSを選択します。 EBS設定には、汎用(SSD)のEBSボリュームタイプとEBSボリュームサイズを選択します&thinsp10の。
- 暗号化中– このオプションを有効にしないでください
- スナップショット構成の下
- 自動スナップショット開始時間 –自動スナップショット開始時間00:00 UTC(デフォルト)を選択します。
- 次を選択
- [ネットワーク構成]で[VPCアクセス]を選択し、VPCに従って詳細を選択します。Kibana認証の場合:–このオプションを有効にしないでください。
- アクセスポリシーを設定するには、[ドメインへのオープンアクセスを許可する]を選択します。注:-本番環境では、特定のIPアドレスまたは範囲へのアクセスを制限する必要があります。
- [次へ]を選択します。
- [確認]ページで、設定を確認し、[確認して作成]を選択します。
注:クラスターのデプロイには最大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データを視覚化する
- キバナダッシュボードのURLに接続して、AmazonESコンソールから取得します
- FluentdがKibanaで収集したログを表示するには、[管理]をクリックし、[Kibana]の下の[インデックスパターン]を選択します。
- デフォルトのインデックスパターンを選択します(logstash- *)
- [次のステップ]をクリックして、[時間フィルターフィールド名](@ timestamp)を設定し、[インデックスパターンの作成]を選択します
- [検出]をクリックして、アプリケーションログを表示します
- [視覚化]をクリックして、視覚化の作成を選択し、[円]を選択します。以下に示すように、次のフィールドに入力します。
- Logstash- *インデックスを選択し、分割スライスをクリックします
- 集約–重要な用語
- フィールド= Kubernetes.pod_name.keyword
- サイズ– 10
7.そして変更を適用する
それでおしまい!これは、Kibanaで作成されたKubernetesポッドを視覚化する方法です。
概要 :
ログ分析による監視は、アプリケーション展開の重要なコンポーネントです。 Kubernetesのクラスター全体でログを収集して統合し、1つのダッシュボードからクラスター全体を監視できます。この例では、fluentdがkubernetesクラスターとAmazonESの間のメディエーターとして機能することを確認しました。 Fluentdは、ログの収集と集約を組み合わせ、ログ分析とkibanaを使用したデータの視覚化のためにログをAmazonESに送信します。
上記の例は、fluentdを使用してAWSElastic検索ログとkibanaモニタリングをkubernetesクラスターに追加する方法を示しています。
このKubernetesブログに関連性があると思われる場合は、 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。
質問がありますか?コメント欄にご記入ください。折り返しご連絡いたします。