Для примерного расчета:
NumCores = AvgTimePerCore * N / K
NumGcpVcpu = NumCores / K8SPenalty / GcpPenalty
AvgTimePerCore - я бы взял именно среднее время, а не 95%, всётаки считаем что запусков будет много и время усреднится
N - количество задач
K - время, за которое надо уложиться
K8SPenalty - принимаем 1, если лимиты не выставлять, то разницы почти не будет
GcpPenalty - если совсем грубо, то взять из статьи, надеясь что много не изменилось. Если чуть поточнее, то погонять sysbench у тебя и на том типе инстансов на котором будешь запускать, понять разницу. Ну и совсем точно - погонять там твой алгоритм.
И итоговое число домножить на 1.2 :) Все-таки не получится грузить на 100% всё время, должен быть запас