2017-07-28 85 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