在GKE上运行CloudRun时。通过GUI,似乎内存限制为2GB,但是,在执行到CloudRun Pod后,我可以确认内存是GKE节点池的内存。
但是,我不确定超时是否适用。似乎GKE上的CloudRun仍然很有限。首先,我不能从列表中选择“ 900”或“ 800”。它允许我选择“ 600”。
选择600后,我的吊舱似乎跑了大约11-12分钟,然后突然死亡。唯一的解释是CloudRun的请求超时适用于GKE。
我正在尝试实施长期运行的任务,这些任务要安排在GKE集群上并由CloudRun执行。首先,GCP CloudRun的GUI非常令人误解。它使开发人员可以选择未真正实现的内存和超时值。我发现的另一个问题是我的容器在中途在同一“荚”上重新运行了代码。下面将通过代码和示例输出对此进行说明。
用于从cmdline启动CloudRun的POST方法
curl --header "Content-Type: application/json" --request POST --data '{"[requiredData]":"[data]"}' -v -H "Host: testcrlaa.default.example.com" [istio-ingressgateway/80/tasks]
代码在CloudRun上运行以进行测试:
@app.route('/tasks', methods=['POST'])
def create_task():
if not request.json or not '[requiredData]' in request.json:
abort(400)
print("Slept1 @ " + str(datetime.datetime.now()))
time.sleep(120)
print("Slept2 @ " + str(datetime.datetime.now()))
time.sleep(120)
print("Slept3 @ " + str(datetime.datetime.now()))
time.sleep(120)
print("Slept4 @ " + str(datetime.datetime.now()))
time.sleep(120)
print("Slept5 @ " + str(datetime.datetime.now()))
time.sleep(120)
print("The time now is: {}".format(datetime.datetime.now()))
输出:
Slept1 @ 2019-05-29 14:40:47.781966
Slept2 @ 2019-05-29 14:42:47.880512
Slept3 @ 2019-05-29 14:44:47.976342
Slept1 @ 2019-05-29 14:45:47.793551 <-1
Slept4 @ 2019-05-29 14:46:48.069593
Slept2 @ 2019-05-29 14:47:47.892927 <-2
Slept5 @ 2019-05-29 14:48:48.169817
Slept3 @ 2019-05-29 14:49:47.987202 <-3
...
5分钟后,从头开始重新运行代码,同时仍在运行原始代码。当CloudRun的请求超时设置为300时,容器在10分钟内终止。