このページでは、クラスタ エージェント オペレータがインストールされている Kubernetes クラスタにマシンエージェントとネットワークエージェントをインストールする方法について説明します。

クラスタ エージェント オペレータは、InfraViz と呼ばれるカスタムリソース定義を提供します。InfraViz を使用すると、Kubernetes クラスタ内の daemonset としてのマシンエージェントとネットワークエージェントの展開を簡素化できます。さらに、クラスタ エージェント オペレータを必要としない daemonset YAML を作成することで、これらのエージェントを展開できます。詳細については、これらの例を参照してください。 

分析エージェントを Kubernetes クラスタ内の daemonset として展開するには、「Kubernetes でのエージェント側コンポーネントのインストール」を参照してください。

要 件

開始する前に、次のことを確認します。

  • kubectl 1.16 以上がインストールされていること
  • クラスタエージェント 21.3.1 以上
  • クラスタエージェントの要件およびサポート対象環境」の要件を満たしていること
  • サーバの可視性が必要な場合は、クラスタ内のワーカーノードの数に基づいて十分なサーバの可視性ライセンスがあること 
  • AppDynamics コントローラでサーバを表示する権限

設置手順

  1. クラスタエージェントのインストール)。この Alpine Linux の例から次の手順を実行します。

    1. クラスタ エージェント バンドルをダウンロードします。 

    2. クラスタ エージェント バンドルを解凍します。

    3. 適切な Kubernetes および OpenShift バージョンを指定する CLI を使用してクラスタ エージェント オペレータを展開します(該当する場合)。

      unzip appdynamics-cluster-agent-alpine-linux-<version>.zip
      kubectl create namespace appdynamics
      BASH
      kubectl create -f cluster-agent-operator.yaml
      BASH
      kubectl create -f cluster-agent-operator-openshift.yaml
      BASH
      kubectl create -f cluster-agent-operator-openshift-1.15-or-less.yaml
      BASH
  2. コントローラに接続するマシン エージェント アクセス キーを使用して、クラスタ エージェント シークレットを作成します。cluster-agent-secret が存在しない場合は、作成する必要があります。「Kubernetes CLI を使用したクラスタエージェントのインストール」を参照してください。

    kubectl -n appdynamics create secret generic cluster-agent-secret --from-literal=controller-key=<access-key>
    BASH
  3. コントローラの [License] ページの情報に基づいて、controllerUrlaccount、および globalAccount の値を設定するように infraviz.yaml ファイルを更新します。
    サーバの可視性を有効にするには、enableServerViztrue に設定します(infraviz.yaml 設定例に示します)。
    サーバの可視性を有効にしないでマシンエージェントを展開するには、enableServerVizfalse に設定します。

    infraviz.yaml Configuration File with Server Visibility Enabled

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    ---
    apiVersion: cluster.appdynamics.com/v1alpha1
    kind: InfraViz
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    spec:
      controllerUrl: "https://mycontroller.saas.appdynamics.com"
      image: "docker.io/appdynamics/machine-agent:latest"
      account: "<your-account-name>"
      globalAccount: "<your-global-account-name>"
      enableContainerHostId: true
      enableServerViz: true
      resources:
        limits:
          cpu: 500m
          memory: "1G"
        requests:
          cpu: 200m
          memory: "800M"
    YML

    infraviz.yaml 設定ファイルの例では、クラスタ内のノードごとに 1 つのポッドを実行する daemonset を展開します。各ポッドは、マシンエージェント、またはサーバの可視性エージェントが実行される単一のコンテナを実行します。 

  4. ネットワークの可視性エージェントを同じポッド内の 2 番目のコンテナで実行できるようにするには、次の設定ファイルの例に示すように、netVizImage および netVizPort のキーと値を追加します。

    infraviz.yaml Configuration File with Second Container in a Single Pod

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    ---
    apiVersion: cluster.appdynamics.com/v1alpha1
    kind: InfraViz
    metadata:
      name: appdynamics-infraviz
      namespace: appdynamics
    spec:
      controllerUrl: "https://mycontroller.saas.appdynamics.com"
      image: "docker.io/appdynamics/machine-agent:latest"
      account: "<your-account-name>"
      enableContainerHostId: true
      enableServerViz: true
      netVizImage: appdynamics/machine-agent-netviz:latest
      netVizPort: 3892
      resources:
        limits:
          cpu: 500m
          memory: "1G"
        requests:
          cpu: 200m
          memory: "800M"
    YML
  5. kubectl を使用して infraviz.yaml を展開します。

    特権ポッドなど、Kubernetes PodSecurityPolicies が特定のポッド セキュリティ コンテキスト設定をブロックする環境では、infraviz.yaml ファイルを編集する前に infraviz-pod-security-policy.yaml を展開する必要があります。

    特権ポッドなど、OpenShift SecurityContextConstraints が特定のポッド セキュリティ コンテキスト設定をブロックする環境では、infraviz.yaml ファイルを編集する前に infraviz-security-context-constraint-openshift.yaml を展開する必要があります。

    kubectl create -f infraviz.yaml
    BASH
    kubectl create -f infraviz-pod-security-policy.yaml
    kubectl create -f infraviz.yaml
    BASH
    kubectl create -f infraviz-security-context-constraint-openshift.yaml
    kubectl create -f infraviz.yaml
    BASH
  6. appdynamics-infraviz ポッドが実行中で、マシンエージェント、サーバの可視性エージェント、およびネットワークエージェントのコンテナの準備が完了していることを確認します。

    kubectl -n appdynamics get pods
    NAME                                    READY   STATUS    RESTARTS   AGE
    appdynamics-infraviz-shkhj                     2/2     Running   0          18s
    
    BASH
  7. エージェントがコントローラに登録されていることを確認するには、ログを確認し、エージェントがコントローラ管理 UI の [Agents Dashboard] に表示されることを確認します。コントローラでサーバの可視性が有効になっている場合、ノードは [ Controller] > [Servers] の下に表示されます。

    kubectl -n appdynamics logs appdynamics-infraviz-shkhj -c appd-infra-agent
    ...
    Started AppDynamics Machine Agent Successfully
    BASH

混合オペレーティング システム クラスタ

クラスタ エージェント オペレータは、Linux と Windows の両方のノードにマシンエージェント daemonsets を展開できます。混合オペレーティングシステム(OS)クラスタの展開戦略は、nodeOS プロパティの値によって決まります。このプロパティは、次のいずれかのオプションに設定できます。

  • all
  • linux
  • windows

Linux と Windows の両方の daemonsets が、単一の infraviz.yaml ファイルで設定できる同じプロパティを共有する場合、nodeOS: all を設定します。nodeOSall または windows に設定されている場合、imageWin プロパティを Windows マシンエージェントイメージに設定する必要があります。

この例では、単一の infraviz.yaml ファイルを使用して、Windows および Linux ノードで実行されるマシンエージェントを設定します。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: appdynamics-infraviz
  namespace: appdynamics
---
apiVersion: cluster.appdynamics.com/v1alpha1
kind: InfraViz
metadata:
  name: appdynamics-infraviz
  namespace: appdynamics
spec:
  controllerUrl: "https://mycontroller.saas.appdynamics.com"
  image: "docker.io/appdynamics/machine-agent:latest"
  account: "<your-account-name>"
  globalAccount: "<your-global-account-name>"
  enableContainerHostId: true
  enableServerViz: true
  netVizImage: appdynamics/machine-agent-netviz:latest
  netVizPort: 3892 
  resources:
    limits:
      cpu: 500m
      memory: "1G"
    requests:
      cpu: 200m
      memory: "800M"
  imageWin: docker.io/appdynamics/machine-agent-analytics:win-latest  
  nodeOS: all
YML

Windows と Linux の daemonsets プロパティが異なり、別々の infraviz.yaml ファイルで定義する必要がある場合、Set nodeOS: windows  または  nodeOS: linux  を設定します。nodeOS の値に応じて、クラスタ エージェント オペレータはマシンエージェントに nodeSelector 値を割り当て、マシンエージェントの配置を決定します。
nodeOS: windows では、"kubernetes.io/os"windows に設定します。
nodeOS: linux では、kubernetes.io/oslinux に設定します。 

このデフォルトの動作を上書きするには、infraviz.yamlnodeSelector を指定します。 {{2}}は特定の属性を識別し、 {{3}} はこの属性に割り当てる新規の値を指定します。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: appdynamics-infraviz
  namespace: appdynamics
---
apiVersion: cluster.appdynamics.com/v1alpha1
kind: InfraViz
metadata:
  name: appdynamics-infraviz
  namespace: appdynamics
spec:
  # ... content removed for brevity  
  nodeOS: windows
  imageWin: docker.io/appdynamics/machine-agent-analytics:win-latest  
  nodeSelector:
    kubernetes.io/os: my-windows-node-selector
YML

InfraViz 設定

インフラストラクチャの可視性を設定するには、ダウンロードパッケージに含まれている infraviz.yaml ファイルの次のパラメータを変更します。ファイルを変更したら、InfraViz 展開を削除して再作成し、変更を適用します。

パラメータ説明必須/任意デフォルト
accountAppDynamics のアカウント名Required該当なし
argsコマンド引数のリストオプション該当なし
controllerUrlAppDynamics コントローラの URLRequired該当なし
enableContainerHostIdコンテナ名の導出方法を決定するフラグ。pod name または container id を指定します。必須false
enableMastersデフォルトでは、ワーカーノードのみがモニタされます。true に設定すると、マスターノードに対してサーバの可視性が提供されます。管理対象の Kubernetes プロバイダーの場合、マスタープレーンにアクセスできないため、フラグは無効です。オプションfalse
enableServerVizサーバの可視性の有効化必須
false
enableDockerVizDocker の可視性の有効化必須false
env環境変数のリストオプション該当なし
eventServiceUrlイベント サービス エンドポイントオプション該当なし
globalAccountグローバルアカウント名Required該当なし
imageマシンエージェントイメージの最新バージョンを取得します。オプションappdynamics/machine-agent:latest
imagePullSecretプルシークレットイメージの名前オプション該当なし
imageWinWindows ノードのマシンエージェントイメージnodeOSall または windows に設定されている場合は必須appdynamics/machine-agent-analytics:win-latest
logLevelロギングの冗長性のレベル。有効なオプションは、info または debug です。オプションinfo
metricsLimitマシンエージェントがコントローラに送信するメトリックの最大数。オプション該当なし
netVizImageネットワーク エージェント イメージの最新バージョンを取得します。オプションappdynamics/machine-agent-netviz:latest
netVizPort0 より大きい場合、ネットワークエージェントはマシンエージェントとともにサイドカーに展開されます。デフォルトでは、ネットワークの可視性エージェントはポート 3892 で動作します。オプション3892
nodeSelectordaemonset ポッドのスケジューリング用のノードを識別する OS 固有のラベル。オプションall

overrideVolumeMounts

volumeMounts のリスト。オプション

overrideVolumeMounts:

- proc
- sys
- etc

priorityClassName

ポッドを削除する必要がある場合の優先順位を決定するプライオリティクラスの名前。オプション該当なし
propertyBagその他のマシン エージェント パラメータを含む文字列オプション該当なし
proxyUrlプロキシサーバの URL(protocol://domain:portオプション該当なし
proxyUserプロキシユーザのログイン情報(user@passwordオプション該当なし
resourcesマシンエージェントのリソースと制限の定義

オプション

該当なし
resourcesNetVizネットワークの可視性(NetViz)コンテナのリソースを設定オプション

Request

  • CPU:100m
  • メモリ:150Mi

Limit

  • CPU:200m
  • メモリ:300Mi
stdoutLoggingログをファイルに保存するか、コンソールにリダイレクトするかを決定します。オプションfalse
tolerationsノードに関連付けられている taint に基づく許容値のリスト。オプション該当なし
uniqueHostIdAppDynamics の一意のホスト ID。有効なオプションは、spec.nodeNamestatus.hostIP です。オプションspec.nodeName