本文介紹部署在K8s集群上的應(yīng)用如何使用虛擬節(jié)點(diǎn)(Virtual Node)以及彈性容器實(shí)例(ECI)。
前提條件
- 已登錄彈性容器實(shí)例控制臺(tái)開通彈性容器實(shí)例服務(wù)。
- 確認(rèn)集群所在區(qū)域在ECI支持的地域列表內(nèi)。您可以登錄彈性容器實(shí)例控制臺(tái)查看已支持的地域和可用區(qū)。
- ACK集群已安裝虛擬節(jié)點(diǎn)組件。關(guān)于安裝集群組件,請(qǐng)參見通過(guò)部署ACK虛擬節(jié)點(diǎn)組件創(chuàng)建ECI Pod。
使用限制
僅適用于容器服務(wù)ACK托管版或容器服務(wù)ACK專有版集群,且版本大于1.14。
調(diào)度EDAS應(yīng)用到虛擬節(jié)點(diǎn)
方式一:配置Pod標(biāo)簽
在EDAS上創(chuàng)建或部署應(yīng)用時(shí),在應(yīng)用高級(jí)設(shè)置頁(yè)簽,將標(biāo)簽(Label)配置的名稱設(shè)置為alibabacloud.com/eci,值設(shè)置為true,應(yīng)用Pod將會(huì)被調(diào)度到虛擬節(jié)點(diǎn)。
方式二:配置命名空間標(biāo)簽
為K8s集群命名空間增加標(biāo)簽:alibabacloud.com/eci=true
后,新建的Pod將被調(diào)度到虛擬節(jié)點(diǎn)上,不影響已經(jīng)運(yùn)行中的Pod。
方式三:ECI彈性調(diào)度
在EDAS上創(chuàng)建或部署應(yīng)用時(shí),在應(yīng)用高級(jí)設(shè)置頁(yè)簽,將注解(Annotation)配置的名稱設(shè)置為alibabacloud.com/burst-resource,值有如下兩種配置。
- eci:當(dāng)集群普通節(jié)點(diǎn)的資源不足時(shí),使用ECI。
- eci_only:只使用ECI。
方式四:自定義彈性資源優(yōu)先級(jí)調(diào)度
為應(yīng)用ID為933ff653-xxxx-xxxx-xxxx-d127a75cxxxx
的EDAS K8s應(yīng)用配置ECS和ECI混合調(diào)度,當(dāng)普通ECS節(jié)點(diǎn)資源不足時(shí),Pod將被調(diào)度到虛擬節(jié)點(diǎn)上。
apiVersion: scheduling.alibabacloud.com/v1alpha1
kind: ResourcePolicy
metadata:
name: edas-app-name //建議與EDAS應(yīng)用名相同
namespace: edas-app-namespace //與EDAS應(yīng)用保持相同命名空間
spec:
selector:
edas.appid: 933ff653-xxxx-xxxx-xxxx-d127a75cxxxx
strategy: prefer
units:
- resource: ecs
- resource: eci
更多內(nèi)容,請(qǐng)參見自定義彈性資源優(yōu)先級(jí)調(diào)度。
方式五:使用virtual-kubelet-autoscaler組件調(diào)度Pod到ECI
virtual-kubelet-autoscaler是阿里云提供的Kubernetes Autoscaler插件。在Pod進(jìn)行調(diào)度時(shí),如果沒有匹配的Node節(jié)點(diǎn)(例如已有的ECS work節(jié)點(diǎn)資源不足),那么將會(huì)由virtual-kubelet-autoscaler接管,把調(diào)度失敗的Pod重新調(diào)度到ECI(虛擬節(jié)點(diǎn))上。
安裝組件,請(qǐng)參見安裝virtual-kubelet-autoscaler。
方式六:配置ECI Profile
修改K8s集群kube-system命名空間下名為eci-profile的ConfigMap。
為應(yīng)用ID為933ff653-xxxx-xxxx-xxxx-d127a75cxxxx
的EDAS K8s應(yīng)用配置ECI Profile。該配置會(huì)將應(yīng)用的Pod調(diào)度到ECI實(shí)例上,并且自動(dòng)開啟鏡像緩存功能,增加created-by-eci=true
的標(biāo)簽。
apiVersion: v1
kind: ConfigMap
metadata:
name: eci-profile
namespace: kube-system
data:
vpcId: "vpc-xxx"
securityGroupId: "sg-xxx"
vswitchIds: "vsw-111,vsw-222"
enableClusterIp: "true"
enableHybridMode: "false"
enablePrivateZone: "false"
selectors: |
[
{
"name":"for-edas-app-1",
"objectSelector":{
"matchLabels":{
"edas.appid": 933ff653-xxxx-xxxx-xxxx-d127a75cxxxx
}
},
"effect":{ #需要?jiǎng)討B(tài)追加的Annotation和Label
"annotations":{
"k8s.aliyun.com/eci-image-cache": "true"
},
"labels":{
"created-by-eci":"true"
}
}
}
]
更多內(nèi)容,請(qǐng)參見配置ECI Profile。