W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本文介紹如何編寫和讀取容器的終止消息。
終止消息為容器提供了一種方法,可以將有關致命事件的信息寫入某個位置, 在該位置可以通過儀表板和監(jiān)控軟件等工具輕松檢索和顯示致命事件。 在大多數(shù)情況下,你放入終止消息中的信息也應該寫入 常規(guī) Kubernetes 日志。
你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構建:
要檢查版本,請輸入 ?kubectl version
?。
在本練習中,你將創(chuàng)建運行一個容器的 Pod。 配置文件指定在容器啟動時要運行的命令。
apiVersion: v1
kind: Pod
metadata:
name: termination-demo
spec:
containers:
- name: termination-demo-container
image: debian
command: ["/bin/sh"]
args: ["-c", "sleep 10 && echo Sleep expired > /dev/termination-log"]
kubectl apply -f https://k8s.io/examples/debug/termination.yaml
YAML 文件中,在 ?command
?和 ?args
?字段,你可以看到容器休眠 10 秒然后將 "Sleep expired" 寫入 ?/dev/termination-log
? 文件。 容器寫完 "Sleep expired" 消息后就終止了。
kubectl get pod termination-demo
重復前面的命令直到 Pod 不再運行。
kubectl get pod termination-demo --output=yaml
輸出結果包含 "Sleep expired" 消息:
apiVersion: v1
kind: Pod
...
lastState:
terminated:
containerID: ...
exitCode: 0
finishedAt: ...
message: |
Sleep expired
...
kubectl get pod termination-demo -o go-template="{{range .status.containerStatuses}}{{.lastState.terminated.message}}{{end}}"
如果你正在運行多容器 Pod,則可以使用 Go 模板來包含容器的名稱。這樣,你可以發(fā)現(xiàn)哪些容器出現(xiàn)故障:
kubectl get pod multi-container-pod -o go-template='{{range .status.containerStatuses}}{{printf "%s:\n%s\n\n" .name .lastState.terminated.message}}{{end}}'
Kubernetes 從容器的 ?terminationMessagePath
?字段中指定的終止消息文件中檢索終止消息, 默認值為 ?/dev/termination-log
?。 通過定制這個字段,你可以告訴 Kubernetes 使用不同的文件。 Kubernetes 使用指定文件中的內容在成功和失敗時填充容器的狀態(tài)消息。
在下例中,容器將終止消息寫入 ?/tmp/my-log
? 給 Kubernetes 來接收:
apiVersion: v1
kind: Pod
metadata:
name: msg-path-demo
spec:
containers:
- name: msg-path-demo-container
image: debian
terminationMessagePath: "/tmp/my-log"
此外,用戶可以設置容器的 ?terminationMessagePolicy
?字段,以便進一步自定義。 此字段默認為 "?File
?",這意味著僅從終止消息文件中檢索終止消息。 通過將 ?terminationMessagePolicy
?設置為 "?FallbackToLogsOnError
?",你就可以告訴 Kubernetes,在容器因錯誤退出時,如果終止消息文件為空,則使用容器日志輸出的最后一塊作為終止消息。 日志輸出限制為 2048 字節(jié)或 80 行,以較小者為準。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: