HPC(HorizontalPodCronscaler)是一种可以对 K8S workload 副本数进行定时修改的自研组件,配合 HPC CRD 使用,最小支持秒级的定时任务。
在集群内部署 HPC , 将在集群内部署以下 Kubernetes 对象:
Kubernetes 对象名称 | 类型 | 默认占用资源 | 所属Namespaces |
---|---|---|---|
horizontalpodcronscalers.autoscaling.cloud.tencent.com | CustomResourceDefinition | - | - |
hpc-leader-election-role | Role | - | kube-system |
hpc-leader-election-rolebinding | RoleBinding | - | kube-system |
hpc-manager-role | ClusterRole | - | - |
hpc-manager-rolebinding | ClusterRoleBinding | - | - |
cronhpa-controller-manager-metrics-service | Service | - | kube-system |
hpc-manager | ServiceAccount | - | kube-system |
tke-hpc-controller | Deployment | 100mCPU/pod、100Mi/pod | kube-system |
说明您在创建集群时选择1.12.4以上版本集群,无需修改任何参数,开箱可用。
--feature-gates=CustomResourceSubresources=true
/etc/localtime
文件。在创建 HPC 资源时,被控制的 workload(K8S 资源)需要存在于集群中。
示例如下:
apiVersion: autoscaling.cloud.tencent.com/v1
kind: HorizontalPodCronscaler
metadata:
name: hpc-deployment
namespace: default
spec:
scaleTarget:
apiVersion: apps/v1
kind: Deployment
name: nginx-deployment
namespace: default
crons:
- name: "scale-down"
excludeDates:
- "* * * 15 11 *"
- "* * * * * 5"
schedule: "30 */1 * * * *"
targetSize: 1
- name: "scale-up"
excludeDates:
- "* * * 15 11 *"
- "* * * * * 5"
schedule: "0 */1 * * * *"
targetSize: 3
示例如下:
apiVersion: autoscaling.cloud.tencent.com/v1
kind: HorizontalPodCronscaler
metadata:
name: hpc-statefulset
namespace: default
spec:
scaleTarget:
apiVersion: apps/v1
kind: Statefulset
name: nginx-statefulset
namespace: default
crons:
- name: "scale-down"
excludeDates:
- "* * * 15 11 *"
schedule: "0 */2 * * * *"
targetSize: 1
- name: "scale-up"
excludeDates:
- "* * * 15 11 *"
schedule: "30 */2 * * * *"
targetSize: 4
示例如下:
apiVersion: autoscaling.cloud.tencent.com/v1
kind: HorizontalPodCronscaler
metadata:
labels:
controller-tools.k8s.io: "1.0"
name: hpc-hpa
spec:
scaleTarget:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
name: nginx-hpa
namespace: default
crons:
- name: "scale-up"
schedule: "30 */1 * * * *"
minSize: 2
maxSize: 6
- name: "scale-down"
schedule: "0 */1 * * * *"
minSize: 1
maxSize: 5
字段名称 | 是否必选 | 允许值范围 | 允许的特殊字符 |
---|---|---|---|
Seconds | 是 | 0 - 59 | * / , - |
Minutes | 是 | 0 - 59 | * / , - |
Hours | 是 | 0 - 23 | * / , - |
Day of month | 是 | 1 - 31 | * / , - ? |
Month | 是 | 1 - 12 或 JAN - DEC | * / , - |
Day of week | 是 | 0 - 6 或 SUN - SAT | * / , - ? |
本页内容是否解决了您的问题?