このトピックでは、自己管理型KubernetesクラスターにLogtailコンポーネントをインストールおよびアップグレードする方法について説明します。
Logtailのインストール
プロジェクトを作成します。 詳細については、「プロジェクトの作成」をご参照ください。
名前が
k8s-log-custom-
で始まるプロジェクトを作成することを推奨します。 例: k8s-log-custom-sd89ehdq。Kubernetesクラスターにログインします。
次のコマンドを実行して、Logtailおよび依存コンポーネントをインストールします。
重要コマンドを実行するマシンにkubectlコマンドラインツールがインストールされていることを確認します。
alibaba-log-controllerはKubernetes 1.6以降でのみ使用できます。
カスタムリソース定義 (CRD) を使用する必要がなくなった場合は、
alibaba-cloud-log/templates/alicloud-log-config.yaml
ファイルを削除し、次のコマンドを再実行できます。
インストールパッケージをダウンロードして解凍します。
中国のリージョン
wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/kubernetes/0.5.3/alibaba-cloud-log-all.tgz; tar xvf alibaba-cloud-log-all.tgz; chmod 744 ./alibaba-cloud-log-all/k8s-custom-install.sh
中国以外のリージョン
wget https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/kubernetes/0.5.3/alibaba-cloud-log-all.tgz; tar xvf alibaba-cloud-log-all.tgz; chmod 744 ./alibaba-cloud-log-all/k8s-custom-install.sh
. /alibaba-cloud-log-all/values.yaml
設定ファイルを設定します。# ===================== Required settings ===================== # The name of the project. SlsProjectName: # The region where the project resides. Region: # The ID of the Alibaba Cloud account to which the project belongs. You must enclose the ID in double quotation marks (""). AliUid: "11**99" # The AccessKey ID and AccessKey secret of the Alibaba Cloud account or a RAM user. The RAM user must have the AliyunLogFullAccess permission. AccessKeyID: AccessKeySercret: # The custom ID of the cluster. The ID can contain only letters, digits, and hyphens (-). ClusterID: # ========================================================== # Specifies whether to enable metric collection for the related components. Valid values: true and false. Default value: true. SlsMonitoring: true # The network type. Valid values: Internet and Intranet. Default value: Internet. Net: Internet # Specifies whether containerd is used as the container runtime. Valid values: true and false. Default value: false. SLS_CONTAINERD_USED: true
次の表に、上記のコマンドに含まれるパラメーターを示します。 ビジネスシナリオに基づいてパラメーターを設定できます。
パラメーター
説明
SlsProjectName
ステップ2で作成したプロジェクトの名前。
リージョン
プロジェクトが配置されているリージョンの ID です。 たとえば、中国 (杭州) リージョンのIDは
cn-Hangzhou
です。 詳細については、「サポートされているリージョン」をご参照ください。AliUid
Alibaba CloudアカウントのID。 IDは二重引用符 ("") で囲む必要があります。 例:
AliUid: "11** 99 "
Alibaba CloudアカウントのIDを取得する方法については、「Simple Log Serviceが有効化されているAlibaba CloudアカウントのIDの取得」をご参照ください。AccessKeyID
Alibaba CloudアカウントのAccessKey ID。 RAMユーザーのAccessKeyペアを使用し、AliyunLogFullAccessポリシーをRAMユーザーにアタッチすることを推奨します。 詳細については、「RAMユーザーを作成し、RAMユーザーにSimple Log Serviceへのアクセスを許可する」をご参照ください。
AccessKeySercret
Alibaba CloudアカウントのAccessKeyシークレット。 RAMユーザーのAccessKeyペアを使用し、AliyunLogFullAccessポリシーをRAMユーザーにアタッチすることを推奨します。 詳細については、「RAMユーザーを作成し、RAMユーザーにSimple Log Serviceへのアクセスを許可する」をご参照ください。
ClusterID
クラスターのカスタムID。 IDには、英数字、およびハイフン (-) のみを使用できます。 このパラメーターは、次の操作の
${your_k8s_cluster_id}
変数に対応します。重要異なるKubernetesクラスターに対して同じクラスターIDを指定しないでください。
SlsMonitoring
関連コンポーネントのメトリック収集を有効にするかどうかを指定します。 有効な値:
true (デフォルト)
false
ネット
ネットワークタイプ。 有効な値:
インターネット (デフォルト)
イントラネット
SLS_CONTAINERD_使用済み
containerdをコンテナランタイムとして使用するかどうかを指定します。 有効な値:
true: containerdが使用されます。
false (デフォルト) : containerdは使用されません。
重要containerdをコンテナランタイムとして使用する自己管理Kubernetesクラスターでは、このパラメーターをtrueに設定する必要があります。 そうしないと、Logtailはログの収集に失敗する可能性があります。
Logtailと依存コンポーネントをインストールします。
bash k8s-custom-install.sh; kubectl apply -R -f result
次の表に、Logtailと依存コンポーネントのインストール後に自動的に作成されるSimple Log Serviceリソースを示します。
リソースタイプ | リソース名 | 説明 | 例 |
マシングループ | k8s-group-${your_k8s_cluster_id} | ログ収集シナリオで使用されるlogtail-daemonsetのマシングループ。 | k8s-group-my-cluster-123 |
k8s-group-${your_k8s_cluster_id}-statefulset | メトリック収集シナリオで使用されるlogtail-statefulsetのマシングループ。 | k8s-group-my-cluster-123-statefulset | |
k8s-group-${your_k8s_cluster_id}-singleton | 単一インスタンスのマシングループ。単一インスタンスのLogtail設定に適用できます。 | k8s-group-my-cluster-123-singleton | |
ログストア | config-operation-log | Logstoreは、ログコントローラーログの収集と保存に使用されます。 | なし |
Logtailのステータス、バージョン番号、IPアドレスの表示
Logtailのステータスの表示
次のコマンドを実行して、Logtailのステータスを表示します。
kubectl get po -n kube-system | grep logtail
次の出力が返されます。
NAME READY STATUS RESTARTS AGE
logtail-ds-gb92k 1/1 Running 0 2h
logtail-ds-wm7lw 1/1 Running 0 4d
Logtailのバージョン番号とIPアドレスの表示
次のコマンドを実行して、Logtailのバージョン番号とIPアドレスを表示します。
kubectl exec logtail-ds-gb92k -n kube-system cat /usr/local/ilogtail/app_info.json
次の出力が返されます。
{
"UUID" : "",
"hostname" : "logtail-ds-gb92k",
"instance_id" : "0EBB2B0E-0A3B-11E8-B0CE-0A58AC140402_172.20.4.2_1517810940",
"ip" : "192.0.2.0",
"logtail_version" : "0.16.2",
"os" : "Linux; 3.10.0-693.2.2.el7.x86_64; #1 SMP Tue Sep 12 22:26:13 UTC 2017; x86_64",
"update_time" : "2021-02-05 06:09:01"
}
Logtailのアップグレード
コンポーネントのアップグレード
最新バージョンのLogtailをインストールしてコンポーネントをアップグレードします。 logtail-dsやalibaba-log-controllerなどの特定のコンポーネントのイメージバージョンのみをアップグレードすると、アップグレードが失敗することがあります。
Logtailコンポーネントに関連する説明ファイルをバックアップします。
重要アップグレードの完了には数秒かかります。 アップグレード中にLogtailコンテナーが再起動されます。これにより、少量のデータが再度収集されたり、収集中に失われたりする可能性があります。 Logtailコンポーネントをアップグレードする前に、Logtailコンポーネントに関連する説明ファイルをバックアップすることを推奨します。
サンプルコマンド:
kubectl get ds -n kube-system logtail-ds -o yaml > logtail-ds.yaml kubectl get deployment -n kube-system alibaba-log-controller -o yaml > alibaba-log-controller.yaml kubectl get crd aliyunlogconfigs.log.alibabacloud.com -o yaml > aliyunlogconfigs-crd.yaml kubectl get cm -n kube-system alibaba-log-configuration -o yaml > alibaba-log-configuration.yaml kubectl get aliyunlogconfigs --all-namespaces -o yaml > aliyunlogconfigs-cr.yaml
Logtailコンポーネントを再インストールして、自動アップグレードを完了します。 詳細については、「Logtailのインストール」をご参照ください。
Logtailをロールバック
次の手順は、バージョンにロールバックする方法を示しています。
アップグレード前にバックアップされたYAMLファイルには、冗長な情報が含まれています。 Logtailの設定を復元する前に、冗長な情報を手動で削除する必要があります。 kubectl-neatツールを使用して、冗長な情報を削除できます。 次のフィールドを削除する必要があります: metadata.creationTimestamp、metadata.generation、metadata.resourceVersion、metadata.uid、およびstatus。
ビジネス要件に基づいて、アップグレード後にLogtailの新しい設定を保持するかどうかを確認します。
バックアップファイルから冗長情報を削除します。
cat logtail-ds.yaml | kubectl-neat > neat-logtail-ds.yaml cat alibaba-log-controller.yaml | kubectl-neat > neat-alibaba-log-controller.yaml cat aliyunlogconfigs-crd.yaml | kubectl-neat > neat-aliyunlogconfigs-crd.yaml cat alibaba-log-configuration.yaml | kubectl-neat > neat-alibaba-log-configuration.yaml cat aliyunlogconfigs-cr.yaml | kubectl-neat > neat-aliyunlogconfigs-cr.yaml
削除後のバックアップファイルを使用して、Logtailの設定を復元します。
kubectl apply -f neat-logtail-ds.yaml kubectl apply -f neat-alibaba-log-controller.yaml kubectl apply -f neat-aliyunlogconfigs-crd.yaml kubectl apply -f neat-alibaba-log-configuration.yaml kubectl apply -f neat-aliyunlogconfigs-cr.yaml
次のステップ
コンテナログを収集するためのLogtail設定を作成します。
DaemonSetモード
CRDを使用してコンテナログを収集する方法の詳細については、「CRDを使用してDaemonSetモードでコンテナログを収集する」をご参照ください。
Simple Log Serviceコンソールでコンテナの標準出力 (stdout) と標準エラー (stderr) を収集する方法については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナのstdoutとstderrを収集する」をご参照ください。
Simple Log Serviceコンソールでコンテナテキストログを収集する方法については、「Simple log Serviceを使用したコンテナーからのログデータの収集」をご参照ください。
サイドカーモード
CRDを使用してコンテナログを収集する方法の詳細については、「CRDを使用してSidecarモードでコンテナテキストログを収集する」をご参照ください。
Simple Log Serviceコンソールでコンテナログを収集する方法については、「Simple Log Serviceコンソールを使用してSidecarモードでコンテナテキストログを収集する」をご参照ください。
よくある質問
コンテナイメージのバージョンを表示するにはどうすればよいですか?
次のいずれかのイメージリポジトリにアクセスして、コンテナイメージのバージョンを表示できます。
複数の自己管理Kubernetesクラスターを同じSimple Log Serviceプロジェクトに関連付けるにはどうすればよいですか。
複数のセルフマネージドKubernetesクラスターから同じSimple Log Serviceプロジェクトにコンテナログを収集する場合は、Simple Log Serviceコンポーネントをインストールするときに、各セルフマネージドKubernetesクラスターに対してSlsProjectNameパラメーターを同じ値に設定できます。
Logtailのログを表示する方法は?
Logtailのログは、Logtailコンテナの /usr/local/ilogtail/
ディレクトリにあるilogtail.LOG
およびlogtail_plugin.LOG
という名前のファイルに保存されます。
コンテナのstdoutはこの場合とは無関係です。 次のstdoutを無視します。
start umount useless mount points, /shm$|/merged$|/mqueue$
umount: /logtail_host/var/lib/docker/overlay2/3fd0043af174cb0273c3c7869500fbe2bdb95d13b1e110172ef57fe840c82155/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/d5b10aa19399992755de1f85d25009528daa749c1bf8c16edff44beab6e69718/merged: must be superuser to unmount
umount: /logtail_host/var/lib/docker/overlay2/5c3125daddacedec29df72ad0c52fac800cd56c6e880dc4e8a640b1e16c22dbe/merged: must be superuser to unmount
......
xargs: umount: exited with status 255; aborting
umount done
start logtail
ilogtail is running
logtail status:
ilogtail is running
KubernetesクラスターのSimple Log Serviceコンポーネントのステータスを表示するにはどうすればよいですか。
以下のコマンドを実行します。
kubectl get deploy alibaba-log-controller -n kube-system
kubectl get ds logtail-ds -n kube-system
alibaba-log-controllerの起動に失敗した場合はどうすればよいですか?
次の方法でalibaba-log-controllerがインストールされているかどうかを確認します。
Kubernetesクラスターのマスターノードでインストールコマンドを実行します。
インストールコマンドでKubernetesクラスターのIDを指定します。
上記の方法でalibaba-log-controllerがインストールされていない場合は、kubectl delete -f deploy
コマンドを実行して、生成されたインストールテンプレートを削除します。 次に、インストールコマンドを再実行します。
KubernetesクラスターでLogtail DaemonSetのステータスを表示するにはどうすればよいですか。
kubectl get ds -n kube-system
コマンドを実行し、Logtail DaemonSetのステータスを表示します。
Logtailコンテナが属するデフォルトの名前空間はkube-systemです。
Logtailのoeprationalログを表示するにはどうすればよいですか?
Logtailの操作ログは、/usr/local/ilogtail/
ディレクトリのilogtail.LOG
ファイルに保存されます。 ログファイルがローテーションされると、生成されたファイルは圧縮され、ilogtail.LOG.x.gz
として保存されます。 次のコマンドを実行してログを表示します。
kubectl exec logtail-ds-gb92k -n kube-system tail /usr/local/ilogtail/ilogtail.LOG
次の出力が返されます。
[2018-02-05 06:09:02.168693] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:104] logtail plugin Resume:start
[2018-02-05 06:09:02.168807] [INFO] [9] [build/release64/sls/ilogtail/LogtailPlugin.cpp:106] logtail plugin Resume:success
[2018-02-05 06:09:02.168822] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:369] start add existed check point events, size:0
[2018-02-05 06:09:02.168827] [INFO] [9] [build/release64/sls/ilogtail/EventDispatcher.cpp:511] add existed check point events, size:0 cache size:0 event size:0 success count:0
ポッドのLogtailを再起動するにはどうすればよいですか?
Logtailを停止します。
次のコマンドでは、
logtail-ds-gb92k
がコンテナーを指定し、kube-system
が名前空間を指定します。 ビジネスシナリオに基づいてパラメーターを設定します。kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild stop
次の出力が返された場合、Logtailは停止します。
kill process Name: ilogtail pid: 7 kill process Name: ilogtail pid: 9 stop success
Logtailを起動します。
次のコマンドでは、
logtail-ds-gb92k
がコンテナーを指定し、kube-system
が名前空間を指定します。 ビジネスシナリオに基づいてパラメーターを設定します。kubectl exec logtail-ds-gb92k -n kube-system /etc/init.d/ilogtaild start
次の出力が返されると、Logtailが起動されます。
ilogtail is running
制御プレーンコンポーネントのログを収集するにはどうすればよいですか?
セルフマネージドKubernetesクラスターまたはContainer Service For Kubernetes (ACK) 専用クラスターから制御プレーンコンポーネントのログを収集する方法については、「Simple Log Serviceコンソールを使用してDaemonSetモードでコンテナーのstdoutとstderrを収集する」をご参照ください。
logtail-dsやalibaba-log-controllerなどのコンポーネントをアンインストールするにはどうすればよいですか?
kubectl delete -R -f result
コマンドを実行して、これらのコンポーネントをアンインストールします。