Download PDF
Download page Kubernetes を使用したネットワークの可視性.
Kubernetes を使用したネットワークの可視性
このページでは、Kubernetes で実行されているアプリケーションをモニタするようにネットワークの可視性を設定する方法について説明します。
ネットワークの可視性では、アプリケーションのネットワーク上でのやり取りを監視し、主要なパフォーマンスメトリックを報告します。これらのメトリックでは、アプリケーションのネットワークの問題がアプリケーションの問題から分離されます。
ネットワークエージェントは、REST API を使用してアプリケーションコンテナの各ノードで TCP ポートを開き、ネットワーク DaemonSet コンテナと通信します。この通信により、ポッドとノード間のモニタリングが可能になります。エージェントを、ホストモードが有効になっている各ノードで DaemonSet として展開できます。
はじめる前に
DaemonSet の Docker イメージを作成し、エージェントを設定する前に、次の要件を確認します。
- ネットワークエージェントと同じクラスタに展開されている Java エージェント 4.4 以上を使用するポッドが少なくとも 1 つあること。
TCP ポート 3892 がノードでまだ使用されていないこと。ポート 3892 は、DaemonSet と通信するためにアプリケーションポッドで使用されます。
ネットワークの可視性の DaemonSet 用 Docker イメージ
Kubernetes を使用してネットワークの可視性を設定するには、最初にネットワーク可視性の DaemonSet 用 Docker イメージを作成し、Docker の信頼できるレジストリにイメージをプッシュする必要があります。
次のサンプル Dockerfile をテキストファイルに貼り付けて、ファイルを保存します。
FROM ubuntu:14.04 ARG NETVIZ_ZIP_PKG RUN groupadd -r appd-netviz && useradd -r -g appd-netviz appd-netviz RUN apt-get update && apt-get install -y \ net-tools \ tcpdump \ curl \ unzip \ ssh-client \ binutils \ build-essential WORKDIR /netviz-agent # copy NetViz agent contents COPY $NETVIZ_ZIP_PKG . # run the agent install script and disable netlib RUN unzip $NETVIZ_ZIP_PKG && ./install.sh \ && sed -i -e "s|enable_netlib = 1|enable_netlib = 0|g" ./conf/agent_config.lua \ && sed -i -e "s|WEBSERVICE_IP=.*|WEBSERVICE_IP=\"0.0.0.0\"|g" ./conf/agent_config.lua RUN chown -R appd-netviz:appd-netviz /netviz-agent RUN setcap cap_net_raw=eip /netviz-agent/bin/appd-netagent USER appd-netviz # default command to run for the agent CMD ./bin/appd-netagent -c ./conf -l ./logs -r ./run
CODEDockerfile を保存したディレクトリに移動し、次のコマンドを入力して Docker イメージを作成します。
$ docker build --build-arg NETVIZ_ZIP_PKG=/path/to/netviz-agent-pkg.zip -t appd-netviz .
CODEDocker の信頼できるレジストリに Docker イメージをプッシュします。
Kubernetes を使用したネットワークの可視性の設定
次の設定を使用して
yaml
ファイルを作成します。apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2 kind: DaemonSet metadata: name: appd-netviz-agent spec: selector: matchLabels: name: appd-netviz-agent template: metadata: name: appd-netviz-agent labels: name: appd-netviz-agent spec: hostIPC: true hostNetwork: true containers: - name: appd-netviz-agent image: path/to/your/Docker/image # docker registry image resources: requests: memory: "250Mi" cpu: "0.5" limits: memory: "2Gi" cpu: "1" securityContext: capabilities: add: ["NET_RAW"] ports: - containerPort: 3892 hostPort: 3892 imagePullSecrets: - name: your-registry-key # add the registry key, kubectl create secret ...
CODE- 設定ファイルで、次のフィールドを更新します。
image
(containers
の下):Docker の信頼できるレジストリ内の DaemonSet イメージへのファイルパス。name
(imagePullSecrets
の下):Docker の信頼できるレジストリのキー。
次のコマンドを入力して、Kubernetes にネットワークエージェントを展開します。
$ kubectl apply -f MyConfigFile.yaml
CODE
アプリケーションポッドをモニタするためのネットワークの可視性の設定
Kubernetes にネットワークの可視性を展開したら、Java エージェントバージョン 4.4 以上を使用するポッドをネットワークエージェントと同じクラスタに 1 つ以上展開する必要があります。これにより、ネットワークメトリックをアプリケーションフローにマッピングできます。
テキストエディタで Kubernetes を使用してアプリケーションの展開設定
yaml
ファイルを開き、APPDYNAMICS_NETVIZ_AGENT_HOST
とAPPDYNAMICS_NETVIZ_AGENT_PORT
の値を次のように設定します。- name: APPDYNAMICS_NETVIZ_AGENT_HOST valueFrom: fieldRef: fieldPath: status.hostIP - name: APPDYNAMICS_NETVIZ_AGENT_PORT value: 3892
CODE4.5.2 以前の Java エージェントバージョンを使用している場合は、
<app-agent-install-dir>/<version-number>/external-services/netviz/netviz-service.properties
ファイルを開いてこれらの値を設定する必要があります。- コントローラ UI では、ネットワークメトリックをアプリケーションフローにマッピングするために、ソケット インストゥルメンテーションを有効にします。「ネットワークエージェントおよびアプリケーション エージェントの設定」を参照してください。