將IBM Cloud Kubernetes Service日誌資料傳送到IBM Cloud Logs

在本教學中,您設定IBM Cloud® Kubernetes Service將日誌直接傳送到IBM Cloud Logs。 這些日誌可協助您解決問題並改善Kubernetes叢集和應用程式的運作狀況和效能。

目標

在本教程中,您將

開始之前

在開始之前,請確保您具備先決條件。

安裝IBM Cloud CLI、kubectljqyq 的替代方法是使用 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
    

建立您的 API 金鑰

在將記載代理程式配置為守護程式集之前,您需要一個 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. 透過執行下列指令將IBM Cloud Logs的 Sender 角色授予已建立的服務 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 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 Chart 的版本。 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 UI 並點選Livetail 圖示 Livetail

  2. 按一下 Start 可即時查看日誌。

應該可以看到來自 kube-system 程式的連續日誌資料流。 這些日誌來自您的叢集。