将 IBM Cloud Kubernetes Service 日志数据发送至 IBM Cloud Logs
在本教程中,您将设置IBM Cloud® Kubernetes Service直接向IBM Cloud Logs 发送日志。 这些日志可帮助您排除故障,改善Kubernetes集群和应用程序的健康状况和性能。
目标
在本教程中,您将
-
在现有 IBM Cloud Kubernetes Service 集群中部署 日志记录代理。
-
验证日志数据是否流向 IBM Cloud Logs 实例。
准备工作
在开始之前,请确保您具备先决条件。
-
创建 IBM Cloud® Kubernetes Service 并配置 IBM Cloud Logs 实例。
-
安装 Kubernetes 命令行工具 kubectl.
-
安装 JSON CLI 处理器 (
jq). -
安装 YAML CLI 处理器 (
yq).
除了安装 IBM Cloud CLI、kubectl, jq 和 yq 之外,您还可以使用 IBM Cloud Shell
连接到群集
连接到 IBM Cloud Kubernetes Service 集群。 连接到群集后,就可以在群集中运行 kubectl 命令。
-
登录到 IBM Cloud 帐户。 如果使用联合 ID,请包含
--sso选项。ibmcloud login -
安装 IBM Cloud Kubernetes Service CLI 插件
ibmcloud plugin install ks -
列出可用的群集,并记下要连接的群集。
ibmcloud ks clusters -
连接到集群。 将
<cluster_name>替换为群集名称。ibmcloud ks cluster config --cluster <cluster_name> -
通过列出在所有命名空间中运行的所有 pod,验证您是否已连接到群集并可运行
kubectl命令。kubectl get pods --all-namespaces
创建应用程序接口密钥
在将 日志记录代理 配置为守护进程之前,您需要一个 IAM API 密钥和一个日志摄取端点。 IBM Cloud CLI 用于获取此信息。
首先,创建服务 ID 并获取 API 密钥。
-
运行以下命令创建 服务 ID。
ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS" -
运行以下命令,将
Sender角色授予 IBM Cloud Logs 至已创建的服务 ID。ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender -
运行以下命令创建 IAM API 密钥。 如有需要,您可以自定义键名(
kubernetes-logs-agent-apikey)和描述(--d)。ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"API 密钥将在
API Key之后的输出中返回:ID ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6 Name kubernetes-logs-agent-apikey Description API key for sending logs to the IBM Cloud Logs service Created At 2024-09-18T17:17+0000 API Key <apikey is displayed here> Locked false
注:
-
每次创建 API 密钥时,都会生成一个新的 IAM 秘密。
-
确保安全存储 API 密钥,因为它包含敏感信息。
确定日志记录端点
第二个需要的信息是 IBM Cloud Logs 实例的摄取端点。 使用此命令可检索 URL:
ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'
终点类似于
ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com
创建代理 YAML 文件
在此步骤中,创建用于配置代理守护进程的 YAML 文件。
-
创建一个名为
logs-values.yaml的文件,内容如下:此文件包含针对您的部署的特定配置。
metadata: name: "logs-agent" image: version: "1.4.0" # required clusterName: "" # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering. env: # ingestionHost is a required field. For example: # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com" ingestionHost: "" # required # If you are using private CSE proxy, then use port number "3443" # If you are using private VPE Gateway, then use port number "443" # If you are using the public endpoint, then use port number "443" ingestionPort: "" # required iamMode: "TrustedProfile" # trustedProfileID - trusted profile id - required for iam trusted profile mode trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile -
使用适合您环境的特定值更新 yaml 文件中的字段。
部署守护进程集
使用API密钥、URL 和YAML文件,将代理部署到您的集群中。
-
运行
helm registry login命令,登录 Helm 注册表:helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.io视窗 Windows PowerShell 用户应改用此命令:
helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.io有关详细信息,请参阅 在Container Registry中使用Helm图表:从其他注册表或Helm资源库调用图表。
-
部署代理。
如果使用的是服务 ID API 密钥(
iamMode=IAMAPIKey),请运行以下命令:helm install <install-name> oci://icr.io/ibm/observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>其中:
<install-name>是 安装( )的名称。Helmlogs-agent<chart-version>是舵手图的版本。 Helm图表版本应与代理映像版本一致。 更多信息,请参阅 Helm图表版本。<PATH>是 "logs-values.yaml文件所在的目录路径。<APIKey-value>是与 步骤 1 中设置的 ServiceID相关联的 IAM apikey
您还可以使用受信任配置文件部署代理。 更多信息,请参阅 使用Helm图表为Kubernetes群集部署日志代理。
验证日志是否已发送
要确保 IBM Cloud® Kubernetes Service 日志成功流向 IBM Cloud Logs,请执行以下步骤:
-
访问 IBM Cloud Logs 用户界面,然后单击
Livetail。
-
单击
Start实时查看日志。
应该可以看到来自 kube-system 应用程序的连续日志数据流。 这些日志来自您的群集。