日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)kubernetes教程:Kubernetes調(diào)試Pod

調(diào)試 Pod 

調(diào)試 Pod 的第一步是查看 Pod 信息。用如下命令查看 Pod 的當(dāng)前狀態(tài)和最近的事件:

10年的秭歸網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整秭歸建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“秭歸網(wǎng)站設(shè)計(jì)”,“秭歸網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

kubectl describe pods ${POD_NAME}

查看一下 Pod 中的容器所處的狀態(tài)。這些容器的狀態(tài)都是 ?Running ?嗎?最近有沒有重啟過?

后面的調(diào)試都是要依靠 Pod 的狀態(tài)的。

Pod 停滯在 Pending 狀態(tài)

如果一個(gè) Pod 停滯在 ?Pending ?狀態(tài),表示 Pod 沒有被調(diào)度到節(jié)點(diǎn)上。通常這是因?yàn)?nbsp;某種類型的資源不足導(dǎo)致無法調(diào)度。 查看上面的 ?kubectl describe ...? 命令的輸出,其中應(yīng)該顯示了為什么沒被調(diào)度的原因。 常見原因如下:

  • 資源不足: 你可能耗盡了集群上所有的 CPU 或內(nèi)存。此時(shí),你需要?jiǎng)h除 Pod、調(diào)整資源請(qǐng)求或者為集群添加節(jié)點(diǎn)。
  • 使用了 ?hostPort?: 如果綁定 Pod 到 ?hostPort?,那么能夠運(yùn)行該 Pod 的節(jié)點(diǎn)就有限了。 多數(shù)情況下,?hostPort ?是非必要的,而應(yīng)該采用 Service 對(duì)象來暴露 Pod。 如果確實(shí)需要使用 ?hostPort?,那么集群中節(jié)點(diǎn)的個(gè)數(shù)就是所能創(chuàng)建的 Pod 的數(shù)量上限。

Pod 停滯在 Waiting 狀態(tài)

如果 Pod 停滯在 ?Waiting ?狀態(tài),則表示 Pod 已經(jīng)被調(diào)度到某工作節(jié)點(diǎn),但是無法在該節(jié)點(diǎn)上運(yùn)行。 同樣,?kubectl describe ...? 命令的輸出可能很有用。 ?Waiting ?狀態(tài)的最常見原因是拉取鏡像失敗。要檢查的有三個(gè)方面:

  • 確保鏡像名字拼寫正確
  • 確保鏡像已被推送到鏡像倉(cāng)庫(kù)
  • 嘗試手動(dòng)是否能拉取鏡像。例如,如果你在你的 PC 上使用 Docker,請(qǐng)運(yùn)行 ?docker pull <鏡像>?。

Pod 處于 Crashing 或別的不健康狀態(tài)

一旦 Pod 被調(diào)度,就可以采用 調(diào)試運(yùn)行中的 Pod 中的方法來進(jìn)一步調(diào)試。

Pod 處于 Running 態(tài)但是沒有正常工作

如果 Pod 行為不符合預(yù)期,很可能 Pod 描述(例如你本地機(jī)器上的 ?mypod.yaml?)中有問題, 并且該錯(cuò)誤在創(chuàng)建 Pod 時(shí)被忽略掉,沒有報(bào)錯(cuò)。 通常,Pod 的定義中節(jié)區(qū)嵌套關(guān)系錯(cuò)誤、字段名字拼錯(cuò)的情況都會(huì)引起對(duì)應(yīng)內(nèi)容被忽略掉。 例如,如果你誤將 ?command ?寫成 ?commnd?,Pod 雖然可以創(chuàng)建,但它不會(huì)執(zhí)行 你期望它執(zhí)行的命令行。

可以做的第一件事是刪除你的 Pod,并嘗試帶有 ?--validate? 選項(xiàng)重新創(chuàng)建。 例如,運(yùn)行 ?kubectl apply --validate -f mypod.yaml?。 如果 ?command ?被誤拼成 ?commnd?,你將會(huì)看到下面的錯(cuò)誤信息:

I0805 10:43:25.129850   46757 schema.go:126] unknown field: commnd
I0805 10:43:25.129973   46757 schema.go:129] this may be a false alarm, see https://github.com/Kubernetes/kubernetes/issues/6842
pods/mypod

接下來就要檢查的是 API 服務(wù)器上的 Pod 與你所期望創(chuàng)建的是否匹配 (例如,你原本使用本機(jī)上的一個(gè) YAML 文件來創(chuàng)建 Pod)。 例如,運(yùn)行 ?kubectl get pods/mypod -o yaml > mypod-on-apiserver.yaml?,之后 手動(dòng)比較 ?mypod.yaml? 與從 API 服務(wù)器取回的 Pod 描述。 從 API 服務(wù)器處獲得的 YAML 通常包含一些創(chuàng)建 Pod 所用的 YAML 中不存在的行,這是正常的。 不過,如果如果源文件中有些行在 API 服務(wù)器版本中不存在,則意味著 Pod 規(guī)約是有問題的。

調(diào)試副本控制器 

副本控制器相對(duì)比較簡(jiǎn)單直接。它們要么能創(chuàng)建 Pod,要么不能。 如果不能創(chuàng)建 Pod,請(qǐng)參閱上述說明調(diào)試 Pod。

你也可以使用 ?kubectl describe rc ${CONTROLLER_NAME}? 命令來檢視副本控制器相關(guān)的事件。

調(diào)試 Service 

服務(wù)支持在多個(gè) Pod 間負(fù)載均衡。 有一些常見的問題可以造成服務(wù)無法正常工作。 以下說明將有助于調(diào)試服務(wù)的問題。

首先,驗(yàn)證服務(wù)是否有端點(diǎn)。對(duì)于每一個(gè) Service 對(duì)象,API 服務(wù)器為其提供 對(duì)應(yīng)的 ?endpoints ?資源。

通過如下命令可以查看 endpoints 資源:

kubectl get endpoints ${SERVICE_NAME}

確保 Endpoints 與服務(wù)成員 Pod 個(gè)數(shù)一致。 例如,如果你的 Service 用來運(yùn)行 3 個(gè)副本的 nginx 容器,你應(yīng)該會(huì)在 Service 的 Endpoints 中看到 3 個(gè)不同的 IP 地址。

服務(wù)缺少 Endpoints

如果沒有 Endpoints,請(qǐng)嘗試使用 Service 所使用的標(biāo)簽列出 Pod。 假定你的服務(wù)包含如下標(biāo)簽選擇算符:

...
spec:
  - selector:
     name: nginx
     type: frontend

你可以使用如下命令列出與選擇算符相匹配的 Pod,并驗(yàn)證這些 Pod 是否歸屬于創(chuàng)建的服務(wù):

kubectl get pods --selector=name=nginx,type=frontend

驗(yàn)證 Pod 的 ?containerPort ?與服務(wù)的 ?targetPort ?是否匹配。


當(dāng)前文章:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes調(diào)試Pod
URL網(wǎng)址:http://www.5511xx.com/article/cddcpej.html