コンテナ テクノロジーにより、組織には次のようなさまざまなメリットが得られます。
ただし、組織がコンテナ テクノロジーの利用を進めるに伴い、2 つの重要なガバナンスの課題が浮かび上がってきます。
VMware Aria Cost は、サービス別およびチーム別のコンテナ リソースの使用率を、長期的かつ可視化されたトレンドで提供します。このモジュールは、最もリソースを消費しているサービスを特定し、最適化に向けた機会を探る際に役立ちます。
モジュールを利用して次のことが可能になります。
Container Governance Module では、すべてのクラウド環境でコンテナがサポートされます。このモジュールでサポートされるオーケストレーション ソリューションは次のとおりです。
モジュールを使用するには、環境中のクラスタごとにコレクタという軽量コンテナを展開します。個々のノード レベルでのインストールは必要ありません。
環境内の各クラスタにコレクタと呼ばれる軽量コンテナを展開し、コレクタがコンテナ環境からメタデータを収集できるようにします
Amazon ECS をオーケストレーション ソリューションとして使用している場合は、「VMware Aria Cost での Amazon ECS の使用開始」を参照してください。
VMware Aria Cost で Kubernetes の使用を開始するには、次の 2 つの方法があります。1.環境内の各クラスタに VMware Aria Cost コレクタを自動的に展開するように Helm チャートを設定します。2.展開ファイルを使用して、VMware Aria Cost コレクタを各クラスタに展開します。
Helm チャートを使用して、VMware Aria Cost コレクタ エージェントと呼ばれる軽量コンテナを環境内の各 Kubernetes クラスタに展開します。コレクタは、環境からメタデータを収集してレポートを生成します。
VMware Aria Cost は、コレクタを通じて 2 つのカテゴリのデータを収集します。
$ export CHT_API_TOKEN=
の行に一覧表示されます。cloudhealth-collector
を使用して Helm チャートをインストールします。$ helm repo add cloudhealth https://cloudhealth.github.io/helm/
$ helm install cloudhealth-collector --set apiToken=<CloudHealth API Token>,clusterName=<Cluster Name> cloudhealth/cloudhealth-collector
これらのコマンドは、デフォルト構成で Kubernetes クラスタに VMware Aria Cost コレクタを展開します。インストール中に構成可能なパラメータを表示するには、Helm チャート GitHub ページ にアクセスします。
結果:Helm チャートがインストールされ、環境で構成されている新しいクラスタに VMware Aria Cost コレクタが展開されます。
Kubernetes クラスタごとにコレクタを構成します。次に、コレクタを展開して、VMware Aria Cost がコンテナ環境に関するメトリックの収集を開始できるようにします。
変数と値の間に、等号は使用できません。また、変数は %VARIABLENAME%
ではなく $VARIABLENAME
として参照される必要があります。
コレクタの展開の手順にはいつでも戻ることができます。作成されたクラスタは セットアップ > コンテナ > クラスタ のページに表示されます。
結果:VMware Aria Cost コレクタがクラスタに展開されます。
コレクタが展開されると、すぐにクラスタからのメトリックの収集を開始しますが、履歴情報のバックフィルは行われません。VMware Aria Cost がコレクタからのデータの受信を開始すると、クラスタのステータスが [正常] に切り替わります。
コレクタが展開された後、VMware Aria Cost プラットフォーム内に可視化された意味のある情報が表示されるまでに最大 24 時間かかることがあります。
セットアップ > コンテナ > クラスタ ページには、クラスタの次の 3 つの状態が表示されます。
コレクタがメトリックを収集していることを確認するには、メトリック 列を使用します。
VMware Aria Cost プラットフォームを使用し、パースペクティブを使用してコンテナの資産を編成します。この編成の目的は、特定のコンテナ タスクを、実際に実行するコンテナ資産にマッピングすることにあります。
クラスタ コストのグループ化と配分の詳細については、コスト分析のためのコンテナ インフラストラクチャの構成を参照してください。
kubectl get --namespace cloudhealth pods
kubectl get --namespace cloudhealth pods
kubectl logs --namespace cloudhealth <pod-name>
コレクタが最新バージョンで、メトリックを収集できることを確認します。[コンテナ クラスタ] ページで メトリック 列が 正常 であることを確認します。
メトリック 列に 異常 ステータスが表示される場合は、コレクタを手動で、または Helm を使用して更新します。
$ helm upgrade cloudhealth-collector cloudhealth/cloudhealth-collector
kubectl get --namespace cloudhealth pods
kubectl logs --namespace cloudhealth <pod-name>
出力例:
CHT Containers Collector Environment
CHT_API_TOKEN: ****
CHT_CLUSTER_NAME: testCluster
JAVA_OPTS:
-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap
-XX:MaxRAMFraction=1 -XX:+ExitOnOutOfMemoryError -Xms10M -Xmx891M
CHT_INTERVAL: 900
=========================================================================
CHT Containers Collector : version DIRTY starting
I, [2021-02-01T23:19:39.211985 #11] INFO -- : loaded K8S config from with master @ https://kubernetes.default.svc/ with ca certificate /var/run/secrets/kubernetes.io/serviceaccount/ca.crt with client_cert_file with client key file with trust_certs false with trust store file with proxy username
D, [2021-02-01T23:19:39.732649 #11] DEBUG -- : Ensuring cache directory is present: /tmp/cache
D, [2021-02-01T23:19:39.793997 #11] DEBUG -- : Fetching state...
D, [2021-02-01T23:19:39.798196 #11] DEBUG -- : Connecting to URL: https://kubernetes.default.svc/api/v1/nodes
D, [2021-02-01T23:19:40.588497 #11] DEBUG -- : Connecting to URL: https://kubernetes.default.svc/api/v1/pods
D, [2021-02-01T23:19:40.610918 #11] DEBUG -- : Connecting to URL: https://kubernetes.default.svc/api/v1/services
D, [2021-02-01T23:19:40.618938 #11] DEBUG -- : Posting state...
D, [2021-02-01T23:19:40.622422 #11] DEBUG -- : Posting state from 2021-02-01 23:19:39 +0000: /tmp/cache/kubernetes_nodes_1612221579 (size: 1685)
E, [2021-02-01T23:19:40.703980 #11] ERROR -- : Not Found [404]: Failed to post cluster state to http://10.108.1.248:9292/v1/containers/kubernetes/state?auth_token=API_TOKEN_REDACTED&cluster_id=testCluster&sample_time=1612221579.0. Error: Could not find: http://127.0.0.1:8500/v1/kv/customer_container/blobs/
上記のログの例から、次の情報を取得できます。
/tmp/cache
にある 3 つの個別のキャッシュ ファイルに格納されます。/tmp/cache/kubernetes_nodes_1612221579
からノード データを送信しようとします。この値が 0 の場合、Kubernetes からのデータはなく、クラスタの問題を調査する必要があります。Kubernetes クラスタを検証するには、次のコマンドを実行します。
kubectl get pods --all-namespaces -o wide | grep cloudhealth
https://kubernetes.default.svc/api/v1/nodes
。収集エンドポイントへのコレクタ エージェントの接続を検証するには、次のコマンドを実行します。
nmap
または netcat
を使用してポート 443 に ping を送信します。
nmap -p 443 api.cloudhealthtech.com
nc -zv api.cloudhealthtech.com 443
収集エンドポイントに対して CURL コマンドを手動で実行します。
curl -v -X GET https://containers-api.edge.cloudhealthtech.com/api/v1/health
:収集健全性エンドポイントを要求します。{"status":"healthy","time":"Fri, 29 Jan 2021 22:48:10 GMT"}
curl --header "Content-Type: application/json" --request POST --data '{"auth_token":"INSERT_AUTHENTICATION_TOKEN_HERE","cluster_id":"INSERT_CLUSTER_ID_HERE"}' https://containers-api.edge.cloudhealthtech.com/v1/containers/kubernetes/state
:コレクタ エージェントによって行われた正確な要求をモックします(k8s データ キャッシュ ペイロードがない場合を除く)。必要に応じて、auth_token
と cluster_id
を置き換えます。 {"result":null}
クラスタの元のアドレスが次のようになっていることを確認します。
コレクタが次のようになっていることを確認します。