资源用量
项目配额实时用量概览
该页面包含:项目配额当前用量和总量,项目专用资源用量以及推理预留资源用量。
项目概览
这些指标项读取的是项目配额中对应资源的总量和使用量。并计算利用率,为对应资源的使用量除以总量。
通过接口查询项目配额,总量是 spec.hard,使用量是 status.used,利用率 = used / hard * 100%。
下面以 requests.cpu 为例,可以在 spec.hard 中看到总量 100,在 status.used 中看到使用量 22,那么利用率是 22% 。
项目配额返回示例:
{
"spec": {
"hard": {
"requests.cpu": "100",
"requests.memory": "1000Gi"
}
},
"status": {
"used": {
"requests.cpu": "22",
"requests.memory": "30064771072"
}
}
}
项目专用资源
项目管理员可以在集群中为项目预留专用资源池,这里展示项目专用资源的用量。
“总量使用”指的是项目配额中对应资源的使用量除以总量,即是上面的 项目概览 的对应指标项。 “专用使用”指的是项目配额中对应资源的专用使用量除以专用总量,“总量使用”包含“专用使用”,即:项目配额的使用量包含专用资源使用量, 项目配额的总量包含专用资源总量。
平台会将项目的专用资源使用情况上报到监控系统中,总量的指标为 volcano_queue_private_pool_total,使用量的指标为 volcano_queue_private_pool_used。
以 CPU 为例,专用总量为 volcano_queue_private_pool_total{namespace=”ns-c6a11aa90966404bb1e27162aeb2ff53”, resource=”cpu”}, 专用用量为 volcano_queue_private_pool_used{namespace=”ns-c6a11aa90966404bb1e27162aeb2ff53”, resource=”cpu”}。
推理预留
推理预留参见 预留的推理资源 ,这里展示推理预留资源的用量。
通过接口查询项目配额,总量是 spec.hard,推理预留总量是 spec.reserved,使用量是 status.used。
常规资源总量 = 总量(spec.hard) - 推理预留总量(spec.reserved),常规资源用量 = min(使用量(status.used), 常规资源总量), 推理预留用量 = max(使用量(status.used) - 常规资源用量, 0)。
下面以 requests.cambricon.com/mlu370 为例,可以看到推理预留总量为 100,常规资源总量 = 100 - 100 = 0, 常规资源用量 = min(1, 0) = 0,推理预留用量 = max(1 - 0, 0) = 1 。
项目配额返回示例:
{
"spec": {
"hard": {
"requests.cambricon.com/mlu370": "100",
"requests.cpu": "100"
},
"reserved": {
"requests.cambricon.com/mlu370": "100",
"requests.cpu": "0"
},
},
"status": {
"hard": {
"requests.cambricon.com/mlu370": "100",
"requests.cpu": "100"
},
"reserved": {
"requests.cambricon.com/mlu370": "100",
"requests.cpu": "0"
},
"used": {
"requests.cambricon.com/mlu370": "1",
"requests.cpu": "13"
}
}
}
应用类型用量历史曲线
每种应用类型的资源使用情况。以曲线图形式展示,横轴为时间,纵轴为该时刻的资源用量。
备注
当选择的时间范围比较大时,查询监控时会自动降采样,参见 监控降采样。
以“开发环境”应用,时间为最近 1 小时为例,说明各个监控指标的表达式。
CPU 利用率
sum(rate(container_cpu_usage_seconds_total{namespace="default",container!=""}[5m]) * on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""})
/ (sum (kube_pod_container_resource_limits{namespace="default",container!="",resource="cpu"} * on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""})) * 100
内存利用率
sum(container_memory_working_set_bytes{namespace="default",container!=""} * on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""})
/ (sum (kube_pod_container_resource_limits{namespace="default",container!="",resource="memory"} * on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""})) * 100
MLU 算力利用率
avg by (type) ((mlu_utilization{namespace="default"} * on(uuid, vf) group_right mlu_container) * on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""})
GPU 算力利用率
avg by(type) (dcgm_gpu_utilization{namespace="default"} *on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""})
存储集群利用率
sum by (storageclass) (kube_persistentvolumeclaim_info{namespace="default"}
* on(persistentvolumeclaim) group_left() avg by (persistentvolumeclaim) (kube_pod_spec_volumes_persistentvolumeclaims_info{namespace="default"}
* on(persistentvolumeclaim) group_left() (kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace="default"}
* on(persistentvolumeclaim) group_left() (kube_persistentvolumeclaim_status_phase{phase="Bound", namespace="default"} == 1))
* on(pod) group_left() (kube_pod_status_phase{namespace="default",phase=~"Pending|Running"} == 1)
* on(pod) group_left kube_pod_labels{namespace="default",label_type="notebook",label_owner_type=""}))
应用实例平均用量报表
每个应用实例在 选择时间范围内 的资源用量,以表格形式展示。
以“开发环境”应用,时间为最近 1 小时为例,说明各个监控指标的表达式 。
1 小时内 CPU 利用率平均值
// avg_over_time:在一小时内所有采集到的瞬时 CPU 利用率的平均值
// application_cpu_utilization:当前时刻应用所有实例(Pod)的所有容器(Container)的 CPU 时间总数(单位是秒)除以 CPU limits 总数
avg_over_time(application_cpu_utilization{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内内存用量平均值
// avg_over_time:在一小时内所有采集到的瞬时内存用量的平均值
// application_memory_usage_bytes:当前时刻应用所有实例(Pod)的所有容器(Container)的内存用量的总数
avg_over_time(application_memory_usage_bytes{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内内存缓存用量平均值
// avg_over_time:在一小时内所有采集到的瞬时内存缓存用量的平均值
// application_memory_cache_usage_bytes:当前时刻应用所有实例(Pod)的所有容器(Container)的内存缓存用量的总数
avg_over_time(application_memory_cache_usage_bytes{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内进程数平均值
// avg_over_time:在一小时内所有采集到的瞬时进程数的平均值
// application_processes:当前时刻应用所有实例(Pod)的所有容器(Container)的进程数的总数
avg_over_time(application_processes{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 GPU 算力利用率平均值
// avg_over_time:在一小时内所有采集到的瞬时 GPU 算力利用率的平均值
// application_gpu_utilization:当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 算力利用率的平均值
avg_over_time(application_gpu_utilization{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 GPU 内存利用率平均值
// avg_over_time:在一小时内所有采集到的瞬时 GPU 内存利用率的平均值
// application_gpu_memory_utilization:当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 内存利用率的平均值
avg_over_time(application_gpu_memory_utilization{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 GPU 功耗平均值
// avg_over_time:在一小时内所有采集到的瞬时 GPU 功耗的平均值
// application_gpu_power_consumption:当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 功耗的平均值
avg_over_time(application_gpu_power_consumption{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 GPU 卡时总数
// sum_over_time:在一小时内所有采集到的瞬时 GPU 卡时的总数
// application_gpu_hour:当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 卡时的总数,卡时的定义为在采样周期内使用 GPU 的卡数乘以使用时长(单位小时)
sum_over_time(application_gpu_hour{namespace="default",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 MLU 算力利用率平均值
// avg_over_time:在一小时内所有采集到的瞬时 MLU 算力利用率的平均值
// application_mlu_utilization:当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 算力利用率的平均值
avg_over_time(application_mlu_utilization{namespace="default",type!="",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 MLU 内存利用率平均值
// avg_over_time:在一小时内所有采集到的瞬时 MLU 内存利用率的平均值
// application_mlu_memory_utilization:当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 功耗的平均值
avg_over_time(application_mlu_memory_utilization{namespace="default",type!="",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 MLU 功耗平均值
// avg_over_time:在一小时内所有采集到的瞬时 MLU 功耗的平均值
// application_mlu_power_consumption:应用一小时内的瞬时 MLU 功耗
avg_over_time(application_mlu_power_consumption{namespace="default",type!="",label_type="notebook",label_owner_type=""}[3600s])
1 小时内 MLU 卡时平均值
// sum_over_time:在一小时内所有采集到的瞬时 MLU 卡时的总数
// application_mlu_hour:当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 卡时的总数,卡时的定义为在采样周期内使用 MLU 的卡数乘以使用时长(单位小时)
sum_over_time(application_mlu_hour{namespace="default",type!="",label_type="notebook",label_owner_type=""}[3600s])
项目成员用量历史曲线
可选择多个成员和多种应用类型,显示在一段时间内(最长 1 年)的资源使用情况。以曲线图形式展示,横轴为时间,纵轴为 每天 的资源用量。
这里的监控数据是在后端进行计算的,将一天内的指标查询到后根据成员和应用类型进行分类存储,查询时根据成员和应用类型进行过滤。
每个指标有两种查询方式,分别代表应用本身和应用属于哪些应用(比如 0 代码训练 、AI 工作流 等)。
一天内 CPU 利用率平均值
// 在一天内所有采集到的瞬时 CPU 利用率的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 CPU 利用率的平均值
(
sum by(namespace, label_type, label_user_id) (
rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m]) *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
) /
sum by(namespace, label_type, label_user_id) (
kube_pod_container_resource_limits{resource="cpu"} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
) * 100
)[1d:30s]
)
// 在一天内所有采集到的瞬时 CPU 利用率的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 CPU 利用率的平均值
(
sum by(namespace, label_user_id, label_owner_type) (
rate(container_cpu_usage_seconds_total{container!="POD",container!=""}[5m]) *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
) /
sum by(namespace, label_user_id, label_owner_type) (
kube_pod_container_resource_limits{resource="cpu"} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
) * 100
)[1d:30s]
)
一天内内存用量平均值
// 在一天内所有采集到的瞬时内存用量的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的内存用量的总数
(
sum by (namespace, label_type, label_user_id) (
container_memory_working_set_bytes{container!="POD",container!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时内存用量的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的内存用量的总数
(
sum by (namespace, label_user_id, label_owner_type) (
container_memory_working_set_bytes{container!="POD",container!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内内存缓存用量平均值
// 在一天内所有采集到的瞬时内存缓存用量的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的内存缓存用量的总数
(
sum by (namespace, label_type, label_user_id) (
container_memory_cache{container!="POD",container!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时内存缓存用量的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的内存缓存用量的总数
(
sum by (namespace, label_user_id, label_owner_type) (
container_memory_cache{container!="POD",container!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 MLU 卡时总数
// 在一天内所有采集到的瞬时 MLU 卡时的总数
sum_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 卡时的总数
(
sum by (namespace, label_type, label_user_id) (
(
kube_pod_container_resource_limits{resource=~".*mlu.*"} *
on(pod)
group_right mlu_container{namespace!="",pod!=""} *
on()
group_left scrape_interval_seconds
) / 3600 *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 MLU 卡时的平均值
sum_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 MLU 卡时的总数
(
sum by (namespace, label_user_id, label_owner_type) (
(
kube_pod_container_resource_limits{resource=~".*mlu.*"} *
on(pod)
group_right mlu_container{namespace!="",pod!=""} *
on()
group_left scrape_interval_seconds
) / 3600 *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 MLU 算力利用率平均值
// 在一天内所有采集到的瞬时 MLU 算力利用率的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 算力利用率的平均值
(
avg by (namespace, label_type, label_user_id) (
mlu_utilization *
on(uuid, vf)
group_left (namespace, pod) mlu_container{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 MLU 算力利用率的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 MLU 算力利用率的平均值
(
avg by (namespace, label_user_id, label_owner_type) (
mlu_utilization *
on(uuid, vf)
group_left (namespace, pod) mlu_container{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 MLU 内存利用率平均值
// 在一天内所有采集到的瞬时 MLU 内存利用率的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 内存利用率的平均值
(
avg by (namespace, label_type, label_user_id) (
mlu_memory_utilization *
on(uuid, vf)
group_left (namespace, pod) mlu_container{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 MLU 内存利用率的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 MLU 内存利用率的平均值
(
avg by (namespace, label_user_id, label_owner_type) (
mlu_memory_utilization *
on(uuid, vf)
group_left (namespace, pod) mlu_container{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 MLU 功耗平均值
// 在一天内所有采集到的瞬时 MLU 功耗的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 MLU 功耗的平均值
(
avg by (namespace, label_type, label_user_id) (
mlu_power_usage *
on(uuid, vf)
group_left (namespace, pod) mlu_container{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 MLU 功耗的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 MLU 功耗的平均值
(
avg by (namespace, label_user_id, label_owner_type) (
mlu_power_usage *
on(uuid, vf)
group_left (namespace, pod) mlu_container{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 GPU 卡时总数
// 在一天内所有采集到的瞬时 GPU 卡时的总数
sum_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 卡时的总数
(
sum by (namespace, label_type, label_user_id) (
(
dcgm_gpu_health{namespace!="",pod!=""} *
on()
group_left scrape_interval_seconds
) / 3600 *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 GPU 卡时的总数
sum_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 GPU 卡时的总数
(
sum by (namespace, label_user_id, label_owner_type) (
(
dcgm_gpu_health{namespace!="",pod!=""} *
on()
group_left scrape_interval_seconds
) / 3600 *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 GPU 算力利用率平均值
// 在一天内所有采集到的瞬时 GPU 算力利用率的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 算力利用率的平均值
(
avg by (namespace, label_type, label_user_id) (
dcgm_gpu_utilization{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s])
// 在一天内所有采集到的瞬时 GPU 算力利用率的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 GPU 算力利用率的平均值
(
avg by (namespace, label_user_id, label_owner_type) (
dcgm_gpu_utilization{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s])
一天内 GPU 内存利用率平均值
// 在一天内所有采集到的瞬时 GPU 内存利用率的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 内存利用率的平均值
(
avg by (namespace, label_type, label_user_id) (
dcgm_gpu_memory_utilization{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 GPU 内存利用率的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 GPU 内存利用率的平均值
(
avg by (namespace, label_user_id, label_owner_type) (
dcgm_gpu_memory_utilization{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内 GPU 功耗平均值
// 在一天内所有采集到的瞬时 GPU 功耗的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的 GPU 功耗的平均值
(
avg by (namespace, label_type, label_user_id) (
dcgm_power_usage{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的瞬时 GPU 功耗的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的 GPU 功耗的平均值
(
avg by (namespace, label_user_id, label_owner_type) (
dcgm_power_usage{namespace!="",pod!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
一天内进程数平均值
// 在一天内所有采集到的进程数的平均值
avg_over_time(
// 当前时刻应用所有实例(Pod)的所有容器(Container)的进程数的总数
(
sum by (namespace,label_type, label_user_id) (
container_processes{container!="POD",container!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id) kube_pod_labels{label_type!="", label_owner_type=""}
)
)[1d:30s]
)
// 在一天内所有采集到的进程数的平均值
avg_over_time(
// 当前时刻 0 代码训练或 AI 工作流等所有实例(Pod)的所有容器(Container)的进程数的总数
(
sum by (namespace, label_user_id, label_owner_type) (
container_processes{container!="POD",container!=""} *
on(pod)
group_left (label_id, label_type, label_version, label_user_id, label_owner_id, label_owner_type) kube_pod_labels{label_type!="", label_owner_type!=""}
)
)[1d:30s]
)
项目可用资源
项目可以调度的所有节点信息,包括节点名称、状态、OS 和内核版本、内存、CPU 信息、AI 资源信息、驱动版本、适用算力规格和目前使用情况,以表格形式展示。
搜索节点
支持在表头上方根据节点名称、AI 板卡类型、状态和适用的算力规格搜索节点;
列表展示了符合条件的节点信息。
节点状态说明
节点有三种状态:
就绪:表示当前节点状态正常,可供应用调度使用;
就绪,不可调度:表示节点状态正常,但是节点上有污点或者被标记为不可调度;污点说明请参考:https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration, 不可调度请参考:https://kubernetes.io/docs/concepts/architecture/nodes/#manual-node-administration;
未就绪:节点异常。