【问题标题】:AWS ECS essential container equivalent in kubernetesKubernetes 中的 AWS ECS 基本容器等效项
【发布时间】:2018-01-04 03:17:33
【问题描述】:

我们目前正在将 Atlassian Bamboo 作业安排到 ECS 上,并打算在 kubernetes 上做同样的事情。我们有 Bamboo 代理容器和 1-n 个基于作业需要的服务容器(数据库、docker daemon、selenium...)。在 ECS 中,我们将主代理容器标记为“必需”,当代理完成工作并退出时,整个 ECS 任务崩溃,退出所有其他侧容器。

我们如何在 Kubernetes 中做同样的事情?似乎我们唯一的选择是定期戳集群并检查竹代理容器终止的 pod,并从外部终止 pod。有没有办法让 pod 在其中一个容器死亡时自动折叠/终止?

【问题讨论】:

    标签: kubernetes amazon-ecs


    【解决方案1】:

    【讨论】:

    • 你能更详细地解释一下如何在工作中定义重要的容器和不重要的容器吗?我所有 pod 的容器都具有 Never 的重启策略。但是,当一个(重要的)死亡时,这并不能处理这种情况。
    【解决方案2】:

    一种方法似乎是使用容器入口点脚本中的陷阱函数从内部杀死 pod。 它需要服务帐户的权限以及对 kube 集群 API 执行 http 请求的能力。

    function kube_cleanup {
        # if running in kube only.
        # assumes KUBE_POD_NAME is passed to this container.
        if [ -f '/var/run/secrets/kubernetes.io/serviceaccount/namespace' ]; then
            namespace=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)
            token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
            kube_url="https://kubernetes.default/api/v1/namespaces/$namespace/pods/$KUBE_POD_NAME"
            curl -v --tlsv1.2 --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization: Bearer $token" -X "DELETE" $kube_url
        fi
    }
    trap kube_cleanup EXIT
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      相关资源
      最近更新 更多