本頁面說明如何解決 Google Kubernetes Engine (GKE) 中與 TPU 相關的問題。
配額不足,無法滿足 TPU 要求
類似 Insufficient quota to satisfy the request
的錯誤表示Google Cloud 專案的可用配額不足,無法滿足要求。
如要解決這個問題,請檢查專案的配額上限和目前用量。如有需要,請申請提高 TPU 配額。
查看配額限制和目前用量
下列各節說明如何確保在 GKE 中使用 TPU 時有足夠的配額。
如要查看 TPU 的 Compute Engine API 配額上限和目前用量,請按照下列步驟操作:
前往 Google Cloud 控制台的「配額」頁面:
在「篩選器」
方塊中,執行下列操作:請根據 TPU 版本和 . 選擇並複製配額的屬性。舉例來說,如果您打算建立隨選 TPU v5e 節點,請輸入
Name: TPU v5 Lite PodSlice chips
。TPU 版本、 隨選執行個體配額的屬性和名稱 Spot 2 執行個體的配額屬性和名稱 TPU v3,
Dimensions (e.g. location):
tpu_family:CT3不適用 TPU v3,
Dimensions (e.g. location):
tpu_family:CT3P不適用 TPU v4、
Name:
TPU v4 PodSlice chipsName:
Preemptible TPU v4 PodSlice chipsTPU v5e、
Name:
TPU v5 Lite PodSlice chipsName:
Preemptible TPU v5 Lite Podslice
chipsTPU v5p、
Name:
TPU v5p chipsName:
Preemptible TPU v5p chipsTPU Trillium、
Dimensions (e.g. location):
tpu_family:CT6EName:
Preemptible TPU slices v6e選取「Dimensions (e.g. locations)」(維度,例如位置) 屬性,然後輸入
region:
,接著輸入您打算在 GKE 中建立 TPU 的區域名稱。舉例來說,如果您打算在us-west4-a
區域建立 TPU 節點,請輸入region:us-west4
。TPU 配額屬於區域性配額,因此同一區域內的所有可用區都會消耗相同的 TPU 配額。
如果沒有任何配額符合您輸入的篩選條件,表示專案在您需要的區域中未獲得任何指定配額,因此您必須申請調整 TPU 配額。
建立 TPU 預訂時,對應配額的上限和目前用量值都會增加,增幅為 TPU 預訂中的晶片數量。舉例來說,如果為 16 個 TPU v5e 晶片建立保留項目,則相關區域中 TPU v5 Lite PodSlice chips
配額的「限制」和「目前用量」都會增加 16。
其他 GKE 資源的配額
您可能需要在 GKE 建立資源的區域中,增加下列 GKE 相關配額。
- SSD 永久磁碟 (GB) 配額:每個 Kubernetes 節點的開機磁碟預設需要 100 GB。因此,這項配額至少應設為您預計建立的 GKE 節點數量上限與 100 GB 的乘積 (節點 * 100 GB)。
- 使用中 IP 位址配額:每個 Kubernetes 節點會占用一個 IP 位址。 因此,這項配額至少應設為您預期建立的 GKE 節點數量上限。
- 確認
max-pods-per-node
與子網路範圍一致:每個 Kubernetes 節點都會使用次要 IP 範圍做為 Pod。舉例來說,32 個 Podmax-pods-per-node
需要 64 個 IP 位址,因此每個節點需要 /26 子網路。 請注意,這個範圍不得與任何其他叢集共用。為避免 IP 位址範圍用盡,請使用--max-pods-per-node
旗標,限制可在節點上排程的 Pod 數量。max-pods-per-node
的配額應至少設為您預計建立的 GKE 節點數量上限。
如要申請提高配額,請參閱「申請調整配額」一文。
TPU 資源不足,無法滿足 TPU 要求
如果錯誤訊息包含 GCE_STOCKOUT
,表示 TPU 資源暫時無法滿足要求。當 TPU 資源可用時,GKE 會滿足佈建要求。
如要解決這個問題,請使用 TPU 預訂。
在 TPU 節點集區中啟用節點自動佈建功能時發生錯誤
在不支援 TPU 的 GKE 叢集中啟用節點自動佈建功能時,會發生下列錯誤。
錯誤訊息類似於下列內容:
ERROR: (gcloud.container.clusters.create) ResponseError: code=400,
message=Invalid resource: tpu-v4-podslice.
如要解決這個問題,請將 GKE 叢集升級至 1.27.6 以上版本。
GKE 不會自動佈建 TPU 配量節點
下列各節說明 GKE 不會自動佈建 TPU 節點的情況,以及如何修正這些問題。
減少設定錯誤
如果叢集的自動佈建限制遺失或過低,GKE 就不會自動佈建 TPU 節點。在這種情況下,您可能會看到下列錯誤:
當 GKE 嘗試自動佈建未定義限制的 TPU 節點集區時,叢集自動配置器可見度記錄會顯示下列錯誤訊息:
messageId: "no.scale.up.nap.pod.tpu.no.limit.defined"
如果 TPU 配量節點集區存在,但 GKE 無法擴大節點規模,因為違反資源限制,執行
kubectl get events
指令時會看到下列錯誤訊息:11s Normal NotTriggerScaleUp pod/tpu-workload-65b69f6c95-ccxwz pod didn't trigger scale-up: 1 node(s) didn't match Pod's node affinity/selector, 1 max cluster cpu, memory limit reached
此外,在這種情況下,您可以在 Google Cloud 控制台中看到類似下列的警告訊息:
"Your cluster has one or more unschedulable Pods"
當 GKE 嘗試自動佈建超出資源限制的 TPU 配量節點集區時,叢集自動配置器可見度記錄會顯示下列錯誤訊息:
messageId: "no.scale.up.nap.pod.zonal.resources.exceeded"
此外,在這種情況下,您可以在 Google Cloud 控制台中看到類似下列的警告訊息:
"Can't scale up because node auto-provisioning can't provision a node pool for the Pod if it would exceed resource limits"
如要解決這些問題,請增加叢集中的 TPU 晶片、CPU 核心和記憶體數量上限。
如要完成這些步驟,請按照下列說明操作:
- 計算特定 TPU 機器類型和數量所需的資源。請注意,您需要為非 TPU 節點集區新增資源,例如系統工作負載。
取得特定機器類型和區域的可用 TPU、CPU 和記憶體說明。使用 gcloud CLI:
gcloud compute machine-types describe MACHINE_TYPE \ --zone COMPUTE_ZONE
更改下列內容:
MACHINE_TYPE
:要搜尋的機器類型。COMPUTE_ZONE
:運算可用區的名稱。
輸出內容會包含類似下列內容的說明行:
description: 240 vCPUs, 407 GB RAM, 4 Google TPUs ```
將這些數量乘以所需的節點數,即可計算 CPU 和記憶體總數。舉例來說,
ct4p-hightpu-4t
機器類型使用 240 個 CPU 核心和 407 GB RAM,並搭配 4 個 TPU 晶片。假設您需要 20 個 TPU 晶片 (相當於五個節點),則必須定義下列值:--max-accelerator=type=tpu-v4-podslice,count=20
。CPU = 1200
(240 次 5 )memory = 2035
(407 次 5)
您應定義限制,並預留一些空間,以容納非 TPU 切片節點,例如系統工作負載。
更新叢集限制:
gcloud container clusters update CLUSTER_NAME \ --max-accelerator type=TPU_ACCELERATOR \ count=MAXIMUM_ACCELERATOR \ --max-cpu=MAXIMUM_CPU \ --max-memory=MAXIMUM_MEMORY
更改下列內容:
CLUSTER_NAME
:叢集名稱。TPU_ACCELERATOR
:TPU 加速器的名稱。MAXIMUM_ACCELERATOR
:叢集中的 TPU 晶片數量上限。MAXIMUM_CPU
:叢集中的核心數量上限。MAXIMUM_MEMORY
:叢集中記憶體的 GB 數上限。
並非所有執行個體都在執行中
ERROR: nodes cannot be created due to lack of capacity. The missing nodes
will be created asynchronously once capacity is available. You can either
wait for the nodes to be up, or delete the node pool and try re-creating it
again later.
如果 GKE 作業逾時,或無法滿足要求並將要求排入佇列,以佈建單一主機或多主機 TPU 節點集區,就可能會出現這項錯誤。如要解決容量問題,您可以預留容量,或考慮使用 Spot VM。
工作負載設定錯誤
發生這項錯誤的原因是工作負載設定錯誤。以下是造成這項錯誤的常見原因:
- Pod 規格中的
cloud.google.com/gke-tpu-accelerator
和cloud.google.com/gke-tpu-topology
標籤不正確或缺漏。GKE 不會佈建 TPU 配量節點集區,節點自動佈建功能也無法擴充叢集。 - Pod 規格未在資源需求中指定
google.com/tpu
。
如要解決這個問題,請採取下列任一做法:
- 確認工作負載節點選取器中沒有不支援的標籤。
舉例來說,
cloud.google.com/gke-nodepool
標籤的節點選取器會阻止 GKE 為 Pod 建立其他節點集區。 - 請確認 Pod 範本規格 (TPU 工作負載的執行位置) 包含下列值:
cloud.google.com/gke-tpu-accelerator
和cloud.google.com/gke-tpu-topology
標籤。nodeSelector
google.com/tpu
。
如要瞭解如何在 GKE 中部署 TPU 工作負載,請參閱「在 TPU 配量節點集區中執行工作負載,顯示可用的 TPU 晶片數量」。
在 GKE 中部署使用 TPU 的 Pod 時發生排程錯誤
如果 GKE 無法在 TPU 節點上排定要求 TPU 的 Pod,就會發生下列問題。舉例來說,如果某些非 TPU 切片已排定在 TPU 節點上,就可能會發生這種情況。
在 Pod 上以 FailedScheduling
事件形式發出的錯誤訊息類似於以下內容:
Cannot schedule pods: Preemption is not helpful for scheduling.
Error message: 0/2 nodes are available: 2 node(s) had untolerated taint
{google.com/tpu: present}. preemption: 0/2 nodes are available: 2 Preemption is
not helpful for scheduling
如要解決這個問題,請按照下列步驟操作:
請確認叢集中至少有一個 CPU 節點集區,這樣系統重要 Pod 才能在非 TPU 節點中執行。詳情請參閱「將 Pod 部署至特定節點集區」。
排解 GKE 中 JobSet 的常見問題
如要瞭解 JobSet 的常見問題和疑難排解建議,請參閱 JobSet 疑難排解頁面。 本頁面涵蓋常見問題,例如「Webhook not available」錯誤、子項作業或未建立的 Pod,以及使用 JobSet 和 Kueue 恢復遭搶占工作負載的問題。
TPU 初始化失敗
如果沒有存取 TPU 裝置的權限,GKE 就無法佈建新的 TPU 工作負載,並發生下列問題。
錯誤訊息類似於下列內容:
TPU platform initialization failed: FAILED_PRECONDITION: Couldn't mmap: Resource
temporarily unavailable.; Unable to create Node RegisterInterface for node 0,
config: device_path: "/dev/accel0" mode: KERNEL debug_data_directory: ""
dump_anomalies_only: true crash_in_debug_dump: false allow_core_dump: true;
could not create driver instance
如要解決這個問題,請確認您是以具備權限的模式執行 TPU 容器,或是增加容器內的 ulimit
。
排程死結
如果發生死結,兩項以上的工作排程可能會失敗。舉例來說,在下列情況中:
- 您有兩個工作 (工作 A 和工作 B),並設有 Pod 親和性規則。GKE 會為 TPU 拓撲為
v4-32
的作業排定 TPU 配量。 - 叢集中有兩個
v4-32
TPU 配量。 - 叢集有足夠的容量可排定工作時間,理論上,每個工作都可以在每個 TPU 節點上快速排定時間。
- Kubernetes 排程器會從 Job A 在一個切片上排定「一個」Pod,然後在同一個切片上排定 Job B 的「一個」Pod。
在本例中,由於 Job A 的 Pod 親和性規則,排程器會嘗試在每個 TPU 配量上,排程 Job A 和 Job B 的所有剩餘 Pod。因此,GKE 無法完整排定工作 A 或工作 B 的時間。因此,這兩項工作的狀態會維持「待處理」。
如要解決這個問題,請使用 Pod 反相依性,並將 cloud.google.com/gke-nodepool
設為 topologyKey
,如下方範例所示:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
parallelism: 2
template:
metadata:
labels:
job: pi
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: job
operator: In
values:
- pi
topologyKey: cloud.google.com/gke-nodepool
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: job
operator: NotIn
values:
- pi
topologyKey: cloud.google.com/gke-nodepool
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- kube-system
containers:
- name: pi
image: perl:5.34.0
command: ["sleep", "60"]
restartPolicy: Never
backoffLimit: 4
在 us-central2 建立叢集時遭拒
如果您嘗試在 us-central2
(唯一提供 TPU v4 的地區) 建立叢集,可能會收到類似以下的錯誤訊息:
ERROR: (gcloud.container.clusters.create) ResponseError: code=403,
message=Permission denied on 'locations/us-central2' (or it may not exist).
發生這項錯誤是因為區域 us-central2
是私人區域。
如要解決這個問題,請提交支援案件,或與帳戶團隊聯絡,要求在Google Cloud 專案中顯示 us-central2
。
在 us-central2 建立 TPU 節點集區時配額不足
如果您嘗試在 us-central2
(唯一提供 TPU v4 的地區) 中建立 TPU 配量節點集區,首次建立 TPU v4 節點集區時,可能需要增加下列 GKE 相關配額:
- us-central2 的 Persistent Disk SSD (GB) 配額:每個 Kubernetes 節點的開機磁碟預設需要 100 GB。因此,這項配額至少應設為您預期在
us-central2
中建立的 GKE 節點數量上限與 100 GB 的乘積 (maximum_nodes
X100 GB
)。 - us-central2 中使用中的 IP 位址配額:每個 Kubernetes 節點會耗用一個 IP 位址。因此,這項配額至少應設為您預計在「
us-central2
」中建立的 GKE 節點數量上限。
建立 GKE 叢集時缺少子網路
如果您嘗試在 us-central2
(唯一提供 TPU v4 的地區) 建立叢集,可能會收到類似以下的錯誤訊息:
ERROR: (gcloud.container.clusters.create) ResponseError: code=404,
message=Not found: project <PROJECT> does not have an auto-mode subnetwork
for network "default" in region <REGION>.
虛擬私有雲網路中必須有子網路,才能為 GKE 節點提供連線。不過,在us-central2
等特定區域,即使您在自動模式下使用預設虛擬私有雲網路 (用於建立子網路),系統可能也不會建立預設子網路。
如要解決這個問題,請確保您已在建立 GKE 叢集前,於該區域建立自訂子網路。這個子網路不得與相同虛擬私有雲網路中其他區域建立的子網路重疊。
啟用唯讀 kubelet 連接埠
如果您使用的 GKE 叢集版本低於 1.32,請務必檢查 insecureKubeletReadonlyPortEnabled
欄位是否設為 true
。
您可以描述節點集區,查看 insecureKubeletReadonlyPortEnabled
欄位的值:
gcloud container node-pools describe NODEPOOL_NAME --cluster=CLUSTER_NAME
如果輸出內容包含 insecureKubeletReadonlyPortEnabled: false
,請執行下列指令來啟用通訊埠:
gcloud container node-pools update NODEPOOL_NAME --cluster CLUSTER_NAME --enable-insecure-kubelet-readonly-port
下列錯誤範例提到通訊埠 10255 的 TCP 連線錯誤,表示您可能需要啟用該通訊埠。
error sending request: Get "http://gke-tpu-d32e5ca6-f4gp:10255/pods": GET http://gke-tpu-d32e5ca6-f4gp:10255/pods giving up after 5 attempt(s): Get "http://gke-tpu-d32e5ca6-f4gp:10255/pods": dial tcp [2600:1901:8130:662:0:19c::]:10255: connect: connection refused
failed to get TPU container Info: failed to call kubelet: Get "http://gke-tpu-d32e5ca6-f4gp:10255/pods": GET http://gke-tpu-d32e5ca6-f4gp:10255/pods giving up after 5 attempt(s): Get "http://gke-tpu-d32e5ca6-f4gp:10255/pods": dial tcp [2600:1901:8130:662:0:19c::]:10255: connect: connection refused
使用 JAX 執行訓練工作負載時發生連線錯誤
如果您嘗試初始化 JAX 架構,在 TPU 電腦上執行訓練工作負載,可能會看到類似以下的錯誤訊息:
E0115 19:06:10.727412 340 master.cc:246] Initialization of slice failed with
error status: INVALID_ARGUMENT: When linking node TPU_ID:pe0:0
to TPU_ID:pe0:3</code> with link TPU_ID:pe0:0:p5:x couldn't find opposite link in destination node.; Failed to create the mesh (xW, xW, xW); Please make sure the topology is correct.;
Failed to discover ICI network topology
如果 GKE 無法在大型 TPU 切片中建立高速晶片間互連 (ICI) 網路拓撲,就會發生這個錯誤。
如要解決這個問題,請完成下列步驟:
找出發生連線錯誤的 TPU 節點。如要查看事件記錄,請使用下列查詢:
resource.type="k8s_container" resource.labels.project_id=PROJECT_ID severity>=DEFAULT SEARCH("`[/dev/vfio/0` `TPU_ID` Driver `opened.`")
更改下列內容:
PROJECT_ID
:您的專案 ID。TPU_ID
:發生錯誤的 TPU ID。您可以在錯誤訊息中查看 TPU ID。
汙染節點集區或錯誤訊息中列出的其中一個節點。詳情請參閱「為工作負載的節點集區設定 Taint 和標籤」。
在另一個節點集區中重新執行 Job。
如果問題仍未解決,請提出支援案件,或與帳戶團隊聯絡。
查看 GKE TPU 記錄
如要查看特定工作負載的所有 TPU 相關記錄,只要啟用 GKE 系統和工作負載記錄,即可在 Cloud Logging 的集中位置查詢這些記錄。在 Cloud Logging 中,記錄會整理成記錄項目,每個記錄項目都有結構化格式。以下是 TPU 訓練工作記錄項目的範例。
{
insertId: "gvqk7r5qc5hvogif"
labels: {
compute.googleapis.com/resource_name: "gke-tpu-9243ec28-wwf5"
k8s-pod/batch_kubernetes_io/controller-uid: "443a3128-64f3-4f48-a4d3-69199f82b090"
k8s-pod/batch_kubernetes_io/job-name: "mnist-training-job"
k8s-pod/controller-uid: "443a3128-64f3-4f48-a4d3-69199f82b090"
k8s-pod/job-name: "mnist-training-job"
}
logName: "projects/gke-tpu-demo-project/logs/stdout"
receiveTimestamp: "2024-06-26T05:52:39.652122589Z"
resource: {
labels: {
cluster_name: "tpu-test"
container_name: "tensorflow"
location: "us-central2-b"
namespace_name: "default"
pod_name: "mnist-training-job-l74l8"
project_id: "gke-tpu-demo-project"
}
type: "k8s_container"
}
severity: "INFO"
textPayload: "
1/938 [..............................] - ETA: 13:36 - loss: 2.3238 - accuracy: 0.0469
6/938 [..............................] - ETA: 9s - loss: 2.1227 - accuracy: 0.2995
13/938 [..............................] - ETA: 8s - loss: 1.7952 - accuracy: 0.4760
20/938 [..............................] - ETA: 7s - loss: 1.5536 - accuracy: 0.5539
27/938 [..............................] - ETA: 7s - loss: 1.3590 - accuracy: 0.6071
36/938 [>.............................] - ETA: 6s - loss: 1.1622 - accuracy: 0.6606
44/938 [>.............................] - ETA: 6s - loss: 1.0395 - accuracy: 0.6935
51/938 [>.............................] - ETA: 6s - loss: 0.9590 - accuracy: 0.7160
……
937/938 [============================>.] - ETA: 0s - loss: 0.2184 - accuracy: 0.9349"
timestamp: "2024-06-26T05:52:38.962950115Z"
}
TPU 節點的每個記錄項目都有 compute.googleapis.com/resource_name
標籤,且值設為節點名稱。如要查看特定節點的記錄,且您知道節點名稱,可以在查詢中依該節點篩選記錄。舉例來說,下列查詢會顯示 TPU 節點 gke-tpu-9243ec28-wwf5
的記錄:
resource.type="k8s_container"
labels."compute.googleapis.com/resource_name" = "gke-tpu-9243ec28-wwf5"
GKE 會將標籤 cloud.google.com/gke-tpu-accelerator
和 cloud.google.com/gke-tpu-topology
附加至所有含有 TPU 的節點。因此,如果您不確定節點名稱,或想列出所有 TPU 節點,可以執行下列指令:
kubectl get nodes -l cloud.google.com/gke-tpu-accelerator
輸出內容範例:
NAME STATUS ROLES AGE VERSION
gke-tpu-9243ec28-f2f1 Ready <none> 25m v1.30.1-gke.1156000
gke-tpu-9243ec28-wwf5 Ready <none> 7d22h v1.30.1-gke.1156000
您可以根據節點標籤及其值進行額外篩選。 舉例來說,下列指令會列出特定類型和拓撲的 TPU 節點:
kubectl get nodes -l cloud.google.com/gke-tpu-accelerator=tpu-v5-lite-podslice,cloud.google.com/gke-tpu-topology=1x1
如要查看 TPU 配量節點的所有記錄,可以使用與 TPU 配量節點尾碼相符的標籤查詢。舉例來說,請使用下列查詢:
resource.type="k8s_container"
labels."compute.googleapis.com/resource_name" =~ "gke-tpu-9243ec28.*"
log_id("stdout")
如要使用 Kubernetes Job 查看與特定 TPU 工作負載相關的記錄,請使用 batch.kubernetes.io/job-name
標籤篩選記錄。舉例來說,如要取得 mnist-training-job
作業的 STDOUT 記錄,可以執行下列查詢:
resource.type="k8s_container"
labels."k8s-pod/batch_kubernetes_io/job-name" = "mnist-training-job"
log_id("stdout")
如要使用 Kubernetes JobSet 查看 TPU 工作負載的記錄,請使用 k8s-pod/jobset_sigs_k8s_io/jobset-name
標籤篩選記錄。例如:
resource.type="k8s_container"
labels."k8s-pod/jobset_sigs_k8s_io/jobset-name"="multislice-job"
如要進一步深入瞭解,可以根據其他工作負載標籤進行篩選。
舉例來說,如要查看來自工作站 0 和切片 1 的多切片工作負載記錄,可以根據 job-complete-index
和 job-index
標籤進行篩選:
resource.type="k8s_container"
labels."k8s-pod/jobset_sigs_k8s_io/jobset-name"="multislice-job"
labels."k8s-pod/batch_kubernetes_io/job-completion-index"="0"
labels."k8s-pod/jobset_sigs_k8s_io/job-index"="1"
您也可以使用 Pod 名稱模式進行篩選:
resource.labels.pod_name:<jobSetName>-<replicateJobName>-<job-index>-<worker-index>
舉例來說,在下列查詢中,jobSetName
是 multislice-job,而 replicateJobName
是 slice。job-index
和 worker-index
皆為 0:
resource.type="k8s_container"
labels."k8s-pod/jobset_sigs_k8s_io/jobset-name"="multislice-job"
resource.labels.pod_name:"multislice-job-slice-0-0"
如果是其他 TPU 工作負載 (例如單一 GKE Pod 工作負載),您可以依 Pod 名稱篩選記錄。例如:
resource.type="k8s_container"
resource.labels.pod_name="tpu-job-jax-demo"
如要檢查 TPU 裝置外掛程式是否正常運作,可以使用下列查詢檢查容器記錄:
resource.type="k8s_container"
labels.k8s-pod/k8s-app="tpu-device-plugin"
resource.labels.namespace_name="kube-system"
執行下列查詢來檢查相關事件:
jsonPayload.involvedObject.name=~"tpu-device-plugin.*"
log_id("events")
您可以在所有查詢中新增其他篩選器,例如叢集名稱、位置和專案 ID。您也可以合併條件,縮小搜尋結果範圍。 例如:
resource.type="k8s_container" AND
resource.labels.project_id="gke-tpu-demo-project" AND
resource.labels.location="us-west1" AND
resource.labels.cluster_name="tpu-demo" AND
resource.labels.namespace_name="default" AND
labels."compute.googleapis.com/resource_name" =~ "gke-tpu-9243ec28.*" AND
labels."k8s-pod/batch_kubernetes_io/job-name" = "mnist-training-job" AND
log_id("stdout")
比較之間可以選擇是否要使用 AND
運算子。如要進一步瞭解查詢語言,請參閱 Logging 查詢語言規格。您也可以參閱 Kubernetes 相關記錄查詢,瞭解更多查詢範例。
如果您偏好使用 Log Analytics 的 SQL,請參閱使用 Log Analytics 的 SQL 查詢,瞭解查詢範例。 此外,您也可以使用 Google Cloud CLI 執行查詢,而不必透過記錄檔探索工具。例如:
gcloud logging read 'resource.type="k8s_container" labels."compute.googleapis.com/resource_name" =~ "gke-tpu-9243ec28.*" log_id("stdout")' --limit 10 --format json
後續步驟
如果無法在說明文件中找到問題的解決方法,請參閱「取得支援」一文,尋求進一步的協助, 包括下列主題的建議:
- 與 Cloud 客戶服務聯絡,建立支援案件。
- 在 StackOverflow 上提問,並使用
google-kubernetes-engine
標記搜尋類似問題,向社群尋求支援。你也可以加入#kubernetes-engine
Slack 頻道,取得更多社群支援。 - 使用公開問題追蹤工具回報錯誤或提出功能要求。