bounty将在6天后过期。回答此问题可获得+50的声望奖励。user804401正在寻找规范答案。
我们使用Deployment Config将服务部署到OpenShift,并在yaml文件中指定资源限制。
我们正在使用Azure Devops中的OC Process命令部署我们的服务。
正在寻找一种方法来验证在部署之前请求的内存和cpu是否可用。
有没有一种方法可以从Azure Devops或通过一些我可以包含在任务中的bash脚本来实现这一点。
bounty将在6天后过期。回答此问题可获得+50的声望奖励。user804401正在寻找规范答案。
我们使用Deployment Config将服务部署到OpenShift,并在yaml文件中指定资源限制。
我们正在使用Azure Devops中的OC Process命令部署我们的服务。
正在寻找一种方法来验证在部署之前请求的内存和cpu是否可用。
有没有一种方法可以从Azure Devops或通过一些我可以包含在任务中的bash脚本来实现这一点。
1条答案
按热度按时间holgip5t1#
kube调度器负责调度节点中的pod,其中所需的资源可用。
为Pod中的容器指定资源请求时,kube调度程序将使用此信息来决定将Pod放置在哪个节点上。为容器指定资源限制时,Kubelet强制执行这些限制,从而不允许正在运行的容器使用超过您设置的限制的资源。库单元还至少保留该系统资源的请求量专门供该容器使用。
https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
我认为发明一个脚本来控制节点上的这些参数是一种反模式。
你应该做的是:
1.用提供的n. pod + cpu/ram请求/限制进行预评估
1.确保工作进程有足够的资源来完成预期负载
1.在部署请求/限制的管道中添加控制,以确保释放的资源是您所期望的
1.配置主动监控,以便在节点达到某个资源使用饱和水平时进行拦截(使用Prometheus/Alertmanager监控堆栈,可以非常容易地实现这一点),并最终继续扩展节点/Pod
显然,如果您的资源不必有限制,也许是为了管理资源的异常峰值或这类事情(例如,我认为Jenkins),最好将节点专用于这些部署。
如果集群不是由您支配,而是可能与其他应用程序团队共享,那么将Quota on Namespace和/或专用于您的Project的Workers的Taint/ Tolerations关联起来绝对是一个好主意。
要返回到脚本请求,您可以执行以下操作:
剧本绝对可以改进。
PS:如上所述,我会避免这种做法。