将 IBM Cloud Kubernetes Service 日志数据发送至 IBM Cloud Logs

在本教程中,您将设置IBM Cloud® Kubernetes Service直接向IBM Cloud Logs 发送日志。 这些日志可帮助您排除故障,改善Kubernetes集群和应用程序的健康状况和性能。

目标

在本教程中,您将

准备工作

在开始之前,请确保您具备先决条件。

除了安装 IBM Cloud CLI、kubectl, jqyq 之外,您还可以使用 IBM Cloud Shell

连接到群集

连接到 IBM Cloud Kubernetes Service 集群。 连接到群集后,就可以在群集中运行 kubectl 命令。

  1. 登录到 IBM Cloud 帐户。 如果使用联合 ID,请包含 --sso 选项。

    ibmcloud login
    
  2. 安装 IBM Cloud Kubernetes Service CLI 插件

    ibmcloud plugin install ks
    
  3. 列出可用的群集,并记下要连接的群集。

    ibmcloud ks clusters
    
  4. 连接到集群。 将 <cluster_name> 替换为群集名称。

    ibmcloud ks cluster config --cluster <cluster_name>
    
  5. 通过列出在所有命名空间中运行的所有 pod,验证您是否已连接到群集并可运行 kubectl 命令。

    kubectl get pods --all-namespaces
    

创建应用程序接口密钥

在将 日志记录代理 配置为守护进程之前,您需要一个 IAM API 密钥和一个日志摄取端点。 IBM Cloud CLI 用于获取此信息。

首先,创建服务 ID 并获取 API 密钥。

  1. 运行以下命令创建 服务 ID

    ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS"
    
  2. 运行以下命令,将 Sender 角色授予 IBM Cloud Logs 至已创建的服务 ID。

    ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender
    
  3. 运行以下命令创建 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 文件。

  1. 创建一个名为 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
    
  2. 使用适合您环境的特定值更新 yaml 文件中的字段。

部署守护进程集

使用API密钥、URL 和YAML文件,将代理部署到您的集群中。

  1. 运行 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资源库调用图表

  2. 部署代理。

    如果使用的是服务 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,请执行以下步骤:

  1. 访问 IBM Cloud Logs 用户界面,然后单击 Livetail 图标 Livetail

  2. 单击 Start 实时查看日志。

应该可以看到来自 kube-system 应用程序的连续日志数据流。 这些日志来自您的群集。