常見(jiàn)問(wèn)題
本文匯總了通過(guò)阿里云容器服務(wù)Kubernetes版使用ECI時(shí)的常見(jiàn)問(wèn)題,包括ECI Pod、網(wǎng)絡(luò)等問(wèn)題。
ECI Pod
調(diào)度
網(wǎng)絡(luò)
日志
監(jiān)控
如何創(chuàng)建GPU實(shí)例?
ECI支持指定ECS GPU規(guī)格來(lái)創(chuàng)建GPU實(shí)例,具體操作,請(qǐng)參見(jiàn)創(chuàng)建GPU實(shí)例。
如何查看ECI實(shí)例ID?
Kubernetes場(chǎng)景下,一個(gè)Pod對(duì)應(yīng)一個(gè)ECI實(shí)例。您可以通過(guò)以下兩種方式查看ECI實(shí)例ID:
方式一:通過(guò)kubectl命令
通過(guò)
kubectl describe pod
命令查看Pod詳情,在Pod詳情的Annotation中可以查看對(duì)應(yīng)的ECI實(shí)例ID。k8s.aliyun.com/eci-instance-id
字段對(duì)應(yīng)的值即為ECI實(shí)例ID,格式為eci-xxxx
,示例如下:方式二:通過(guò)彈性容器實(shí)例控制臺(tái)
在彈性容器實(shí)例控制臺(tái)的容器組頁(yè)面,根據(jù)Pod名稱(chēng)可以查詢(xún)對(duì)應(yīng)的ECI實(shí)例,然后查看ECI實(shí)例ID。
容器組ID即ECI實(shí)例ID,格式為
eci-xxxx
,示例如下:
使用了鏡像緩存,為什么創(chuàng)建ECI Pod的速度還是很慢?
問(wèn)題描述
在標(biāo)準(zhǔn)節(jié)點(diǎn)上創(chuàng)建一個(gè)Pod只需要兩到三秒,而創(chuàng)建ECI實(shí)例時(shí)使用了鏡像緩存,Pod卻用了十幾秒才啟動(dòng)。
問(wèn)題說(shuō)明
這種情況是正常的。因?yàn)樵跇?biāo)準(zhǔn)節(jié)點(diǎn)上創(chuàng)建Pod時(shí),不需要單獨(dú)申請(qǐng)資源,可以直接在節(jié)點(diǎn)上創(chuàng)建容器,因此時(shí)間比較快。而在創(chuàng)建ECI實(shí)例時(shí),系統(tǒng)需要申請(qǐng)資源,如果指定了多可用區(qū),還需要在庫(kù)存不足時(shí)逐個(gè)嘗試各個(gè)可用區(qū)是否有庫(kù)存,因此時(shí)間相對(duì)會(huì)慢一些。
如果您指定了多可用區(qū)創(chuàng)建ECI實(shí)例,建議您把庫(kù)存比較多的可用區(qū)ID放在第一個(gè),這樣可以避免由重試導(dǎo)致的啟動(dòng)延遲。
創(chuàng)建ECI Pod后,Pod一直處于Pending狀態(tài)怎么辦?
問(wèn)題描述
創(chuàng)建Pod后幾個(gè)小時(shí)內(nèi),Pod一直處于為Pending狀態(tài)。查看Pod事件列表,顯示在掛載Volume時(shí),由于連接API Server超時(shí)導(dǎo)致失敗。
解決方法
該問(wèn)題通常是由于實(shí)例與API Server網(wǎng)絡(luò)不通導(dǎo)致,您可以按以下思路進(jìn)行排查:
檢查Pod與集群的API Server是否在同一個(gè)專(zhuān)有網(wǎng)絡(luò)VPC中。
如果為集群SLB添加了訪問(wèn)控制,請(qǐng)確保已將Pod所處網(wǎng)段加入到訪問(wèn)控制列表中。
Pod顯示已調(diào)度至virtual-kubelet,但一直未成功,怎么辦?
問(wèn)題描述
在ACK+Virtual Node的場(chǎng)景下,可能會(huì)出現(xiàn)Pod顯示已經(jīng)調(diào)度到virtual-kubelet節(jié)點(diǎn),但是一直沒(méi)有新的事件更新的現(xiàn)象。 這種情況下,您需要獲取對(duì)應(yīng)的virtual-kubelet日志,根據(jù)報(bào)錯(cuò)信息進(jìn)行問(wèn)題排查。
如果有新的事件產(chǎn)生,您可以先根據(jù)產(chǎn)生的事件進(jìn)行報(bào)錯(cuò)分析和處理。
解決方法
在容器服務(wù)控制臺(tái)的集群頁(yè)面,單擊目錄集群操作列下的更多>通過(guò) Cloud Shell 管理集群。
運(yùn)行以下命令獲取virtual-kubelet Pod名稱(chēng)。
kubectl -n kube-system get pods
運(yùn)行以下命令獲取對(duì)應(yīng)Pod的日志信息。其中ack-virtual-node-controller-xxxxxxxxxx請(qǐng)?zhí)鎿Q為步驟2獲取的Pod名稱(chēng)。
kubectl -n kube-system logs ack-virtual-node-controller-xxxxxxxxxx
根據(jù)最新的日志報(bào)錯(cuò)進(jìn)行處理,或者提供RequestID和報(bào)錯(cuò)信息,發(fā)起工單處理流程。
ACK+Virtual Node的場(chǎng)景下,kube-proxy、coredns被調(diào)度到了虛擬節(jié)點(diǎn),啟動(dòng)失敗怎么辦?
kube-proxy、coredns調(diào)度的時(shí)候是忽略taints的,所以有可能被調(diào)度到虛擬節(jié)點(diǎn)上。此時(shí),您可以編輯kube-proxy、coredns的YAML解決問(wèn)題,需要增加的YAML如下:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: type
operator: NotIn
values:
- virtual-kubelet
如何修改ECI Pod的ClusterDomain?
您可以修改VK對(duì)應(yīng)的deployment,為容器增加環(huán)境變量CLUSTER_DOMAIN,從而修改VK創(chuàng)建的ECI Pod的ClusterDomain。建議您提交工單,聯(lián)系阿里云技術(shù)支持進(jìn)行操作。
在ACK Serverless集群的Ingress中設(shè)置了鑒權(quán),但不生效是什么原因?
問(wèn)題描述
在 nginx-ingress
中設(shè)置了注解 nginx.ingress.kubernetes.io/auth-url
,但不生效。
問(wèn)題解釋
ACK Serverless集群中基于SLB的Ingress Controller,不支持設(shè)置鑒權(quán)URL。
ACK集群是支持的。
集群升級(jí)后,服務(wù)IP地址ping不通怎么辦?
在2020年10月之前,每個(gè)Service IP會(huì)對(duì)應(yīng)一張?zhí)摂M網(wǎng)卡,所以能ping通。但在2020年10月份之后,為了優(yōu)化高并發(fā),Service IP只存在ipvs的規(guī)則中,所以無(wú)法ping通(ipvs是基于IP+Port做數(shù)據(jù)轉(zhuǎn)發(fā)的,所以ping包無(wú)法做轉(zhuǎn)發(fā))。
為什么采集不到ECI實(shí)例日志?
如果您在Pod中設(shè)置了日志服務(wù)的環(huán)境變量aliyun_logs_{Logstore名稱(chēng)}
,但在日志服務(wù)中卻沒(méi)有找到ECI實(shí)例的日志,可能是以下原因?qū)е拢?/p>
ECI實(shí)例運(yùn)行時(shí)間太短
ECI實(shí)例啟動(dòng)后,如果業(yè)務(wù)容器在20秒內(nèi)執(zhí)行完畢,這種情況下,日志服務(wù)可能還沒(méi)有來(lái)得及收集日志,容器就已經(jīng)退出且日志相關(guān)的Volume已經(jīng)被卸載,因此日志服務(wù)無(wú)法收集到日志。
收集路徑(Path)錯(cuò)誤
首次在Pod中指定環(huán)境變量收集日志時(shí),ECI會(huì)自動(dòng)在日志服務(wù)中創(chuàng)建Logstore和Path,后續(xù)再次創(chuàng)建Pod時(shí)也只能使用該P(yáng)ath。如果使用了其他Path,則會(huì)導(dǎo)致日志服務(wù)收集不到日志。如果您想要更換Path,可以將Logstore一起更換,此時(shí)ECI會(huì)自動(dòng)在日志服務(wù)中創(chuàng)建新的Logstore。
ACK+Virtual Node的場(chǎng)景下,Prometheus如何獲取ECI Pod的監(jiān)控指標(biāo)?
Virtual Node和普通節(jié)點(diǎn)保持兼容,Prometheus(ARMS Prometheus或自建開(kāi)源Prometheus)會(huì)自動(dòng)獲取Virtual Node管理的ECI Pod的基礎(chǔ)監(jiān)控指標(biāo),您無(wú)需做額外配置。
關(guān)于ACK集群如何部署Prometheus,請(qǐng)參見(jiàn)阿里云Prometheus監(jiān)控或開(kāi)源Prometheus監(jiān)控。