繁体   English   中英

Kubernetes 中的水平 pod 自动缩放

[英]Horizontal pod autoscaling in Kubernetes

我有一个集群,可以根据 pod 的 CPU 使用情况进行扩展。 文档指出我应该通过快速缩放来防止颠簸 我想尝试自动缩放速度,但似乎找不到应用以下标志的位置:

  • --horizo​​ntal-pod-autoscaler-downscale-delay
  • --horizo​​ntal-pod-autoscaler-upscale-delay

我的目标是将冷却计时器设置为低于5m3m ,有谁知道这是如何完成的,或者我可以在哪里找到有关如何配置的文档? 此外,如果这必须在 hpa 自动缩放 YAML 文件中进行配置,有没有人知道应该为此使用什么定义,或者我可以在哪里找到有关如何配置 YAML 的文档? 这是我使用的有关扩展冷却时间的 Kubernetes 文档的链接。

HPA 控制器是控制器管理器的一部分,您需要将标志传递给它,另请参阅文档 这不是你会通过 kubectl 做的事情。 它是控制平面(主)的一部分,因此取决于您如何设置 Kubernetes 和/或您正在使用的产品。 例如,在 GKE 中,控制平面是不可访问的,在 Minikube 中,您可以通过 ssh 进入节点等。

根据这里的所有讨论是我的经验,它对我有用,也许它可以帮助某人。

ssh到主节点并编辑/etc/kubernetes/manifests/kube-controller-manager.manifest如下所示

command:
- /hyperkube
- controller-manager
- --kubeconfig=/etc/kubernetes/kube-controller-manager-kubeconfig.yaml
- --leader-elect=true
- --service-account-private-key-file=/etc/kubernetes/ssl/service-account-key.pem
- --root-ca-file=/etc/kubernetes/ssl/ca.pem
- --cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem
- --cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem
- --enable-hostpath-provisioner=false
- --node-monitor-grace-period=40s
- --node-monitor-period=5s
- --pod-eviction-timeout=5m0s
- --profiling=false
- --terminated-pod-gc-threshold=12500
 - --horizontal-pod-autoscaler-downscale-delay=2m0s - --horizontal-pod-autoscaler-upscale-delay=2m0s
- --v=2
- --use-service-account-credentials=true
- --feature-gates=Initializers=False,PersistentLocalVolumes=False,VolumeScheduling=False,MountPropagation=False

引用的部分是我添加的参数。 无需重新启动 kubelet 服务,它已更新。

如果您没有发现此值已更新,您可以重新启动systemctl restart kubelet

注意:我已经使用kubespray创建了 HA 集群

希望这可以成为某人的救星。

谢谢!

如果您使用 kubeadm 设置集群,则将这些参数添加到 controllerManagerExtraArgs 下的 kubeadm 主配置文件中。 示例如下

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
kubernetesVersion: ${k8s_version}
cloudProvider: vsphere
api:
  advertiseAddress: ${k8s_master_ip}
  controlPlaneEndpoint: ${k8s_master_lb_hostname}
apiServerCertSANs:
  - ${k8s_master_lb_ip}
  - ${k8s_master_ip0}
  - ${k8s_master_ip1}
  - ${k8s_master_ip2}
  - ${k8s_master_lb_hostname}
apiServerExtraArgs:
  endpoint-reconciler-type: lease
  requestheader-allowed-names:
  cloud-config: /etc/vsphere/config
  enable-admission-plugins: "NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota,NodeRestriction,Priority"
controllerManagerExtraArgs:
  horizontal-pod-autoscaler-use-rest-clients: true
  horizontal-pod-autoscaler-downscale-delay: 5m0s
  horizontal-pod-autoscaler-upscale-delay: 2m0s
etcd:
  endpoints:
  - https://${k8s_master_ip0}:2379
  - https://${k8s_master_ip1}:2379
  - https://${k8s_master_ip2}:2379
  caFile: /etc/kubernetes/pki/etcd/ca.pem
  certFile: /etc/kubernetes/pki/etcd/client.pem
  keyFile: /etc/kubernetes/pki/etcd/client-key.pem

..
..
..

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM