2017-07-28 135 views
0

我们正在安排Atlassian Bamboo工作至ECS,并正在考虑对kubernetes进行相同操作。我们拥有Bamboo代理容器,它基于工作需要(数据库,docker守护进程,硒,...)提供1-n个服务容器。在ECS中,我们将主代理容器标记为“基本”,当代理完成工作并退出时,整个ECS任务崩溃,退出所有其他容器。AWS ECS基本容器相当于kubernetes

我们如何在Kubernetes中做同样的事情?看起来我们唯一的选择是定期戳集群并用竹代理容器终止并检查吊舱并从外部终止吊舱。有一种方法可以使容器在其中一个容器死亡时自动崩溃/终止?

回答

0

一种方式似乎是从内部用容器的入口点脚本陷阱功能杀死吊舱。 它需要有关serviceaccount的权限以及对kube cluster 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