🎼

AKS で ContainerLogV2 スキーマを試してみた

2022/06/10に公開

AKS にて、ContainerLogV2 スキーマがプレビュー提供されています。

気になったので試してみました。

環境・準備

  • Azure Kubernetes Service (v1.22.6)
  • Windows 10
  • Azure CLI (v2.37.0)

やってみた

まずは V1 での確認

まずは V1 の状態を確認してみます。下記の手順に従い、Container insights を有効にした AKS クラスターを作成します。

AKS 環境に接続できたら、おなじみ azure-vote をデプロイして、出力されたログを確認します。

kubectl apply -f azure-vote.yaml

しばらく後に [Kubernetes サービス] - [監視] - [ログ] を確認すると、ContainerLog というテーブルが作成されているはずです。スキーマは下記のようになっています。

V2 に変更!

続いて、V2 を使用するように変更します。

冒頭の手順にあるように、新しい ConfigMap をダウンロードし、下記の個所を変更 (コメントアウトを外し、v2 に書き換える) します。

container-azm-ms-agentconfig-logv2.yaml
[log_collection_settings.schema]
   # In the absence of this configmap, default value for containerlog_schema_version is "v1"
   # Supported values for this setting are "v1","v2"
   # See documentation at https://aka.ms/ContainerLogv2 for benefits of v2 schema over v1 schema before opting for "v2" schema
   containerlog_schema_version = "v2"

そして、この ConfigMap をデプロイ。

kubectl apply -f container-azm-ms-agentconfig-logv2.yaml

クラスター内の omsagent の Pod が再起動されるとのことで、眺めてみたところ再起動しました。

> kubectl get pods -n kube-system -w
NAME                                 READY   STATUS    RESTARTS   AGE
azure-ip-masq-agent-2plxr            1/1     Running   0          12m
azure-ip-masq-agent-9mfwp            1/1     Running   0          13m
cloud-node-manager-cmb62             1/1     Running   0          12m
cloud-node-manager-zjn68             1/1     Running   0          13m
coredns-autoscaler-7d56cd888-4vwp5   1/1     Running   0          14m
coredns-dc97c5f55-rksj5              1/1     Running   0          11m
coredns-dc97c5f55-th5kg              1/1     Running   0          14m
csi-azuredisk-node-4sgb8             3/3     Running   0          13m
csi-azuredisk-node-kv4sb             3/3     Running   0          12m
csi-azurefile-node-l94sw             3/3     Running   0          13m
csi-azurefile-node-vflsd             3/3     Running   0          12m
kube-proxy-47blq                     1/1     Running   0          13m
kube-proxy-jqzdn                     1/1     Running   0          12m
metrics-server-64b66fbbc8-h7nmg      1/1     Running   0          14m
omsagent-js9z4                       2/2     Running   0          13m
omsagent-nhxvq                       2/2     Running   0          12m
omsagent-rs-7c5994564c-q6qjj         1/1     Running   0          14m
tunnelfront-5c8bd67947-vw5fg         1/1     Running   0          14m
omsagent-js9z4                       2/2     Running   1 (1s ago)   15m
omsagent-js9z4                       2/2     Running   2 (1s ago)   16m
omsagent-rs-7c5994564c-q6qjj         1/1     Running   1 (1s ago)   17m

そのうえで、コンテナのログ出力のため azure-vote を再デプロイ。

kubectl delete -f azure-vote.yaml
kubectl apply -f azure-vote.yaml

しばらく後に [Kubernetes サービス] - [監視] - [ログ] を確認すると、ContainerLogV2 というテーブルが作成されています。スキーマは下記のようになっています。

切り替わりの動作が少し気になっていましたが、新しいテーブルが作成されるということで、古いログも判別しやすく残った状態になっていました。

変わったところ

公式ドキュメントによると、スキーマの項目としては下記が追加になっているとのこと。

  • ContainerName
  • PodName
  • PodNamespace

前述の画像からも分かりますね~。

また、フットプリントも 10% ほど削減されているそうです。

まとめ

ということで、無事動作確認できました!

ログを集約できるのですごく便利な仕組みですが、Log Analytics Workspace の使用量には注意が必要ですね。

Discussion