小编esb*_*ych的帖子

AWS Fargate 启动时间

目前我正在研究如何在 AWS 上编排我们的 dockerised 微服务。ECS 的 Fargate 选项看起来很有希望消除管理 EC2 实例的需要。

尽管在 Fargate 中启动“任务”所需的时间出奇地长,即使是简单的单容器设置也是如此。60 秒到 90 秒对于我们的 Docker 应用程序镜像来说是典型的。我听说这可能需要更多的时间,比如几分钟左右。

所以问题是:虽然 Docker 容器通常可能会在几秒钟内启动,但在 Fargate 情况下,这种开销的确切原因是什么?

PS 相关问题的搜索返回这样的选项:

  1. Docker 镜像加载/提取时间
  2. 负载均衡器的影响 - 注册、健康检查宽限期等

但即使在没有部署负载均衡器的最简单的配置中并假设 Docker 镜像未缓存在 ECS 中,在 Fargate 中使用单个 Docker 镜像启动任务(约 60 秒)仍然比启动相同的 Docker 慢至少约 2 倍裸 EC2 实例上的映像(25 秒)

amazon-ecs docker aws-fargate

20
推荐指数
1
解决办法
9062
查看次数

即时编辑 Kubernetes Pod

出于调试和测试目的,我希望找到一种最方便的方法来启动 Kubernetes Pod 并即时更改其规范。

使用命令式命令启动部分非常简单。跑步

kubectl run nginx-test --image nginx --restart=Never
Run Code Online (Sandbox Code Playgroud)

给了我我想要的东西:不受 Deployment 或 ReplicaSet 等任何控制器管理的单个 Pod。易于玩耍和需要时清理。

但是,当我尝试使用以下命令编辑规范时

kubectl edit po nginx-test
Run Code Online (Sandbox Code Playgroud)

我收到以下警告:

pods "nginx-test" was not valid:
 * spec: Forbidden: pod updates may not change fields other than spec.containers[*].image, spec.initContainers[*].image, spec.activeDeadlineSeconds or spec.tolerations (only additions to existing tolerations)
Run Code Online (Sandbox Code Playgroud)

即只有有限的 Pod 规范集在运行时是可编辑的。

到目前为止找到的选项:

  1. 将 Pod 规范保存到文件中:

    kubectl get po nginx-test -oyaml > nginx-test.yaml
    
    Run Code Online (Sandbox Code Playgroud)

    编辑并重新创建

    kubectl apply -f
    
    Run Code Online (Sandbox Code Playgroud)

    不过,只改变一个字段有点重。

  2. 创建部署而不是单个 Pod,然后编辑spec部署本身的部分。

    缺点是:

    • 需要额外的 API 对象(部署),完成后不要忘记清理它
    • Pod 名称以 的形式自动生成nginx-test-xxxxxxxxx-xxxx …

kubernetes kubectl kubernetes-pod

10
推荐指数
1
解决办法
2万
查看次数