眾所周知現在容器的技術越來越火,很多企業已經將整個業務架構容器化,利用容器的靈活性、可移植性、輕量等優勢為企業開發和運維帶來很大的優勢,目前整個容器編排服務中最吃香的當然是Kubernetes (簡稱K8S),亞馬遜發現60%以上的k8s用戶都跑在AWS云上,所以去年AWS推出了名為EKS (Elastic Container Service for kubernetes)的托管K8s集群服務,那當然除了K8s還有很多容器編排服務比如 Mesos、Swarm、Amazon ECS等等,今天想和大家分享的是AWS自己的容器編排服務ECS(Elastic Container Service)
Amazon ECS是一種高度可擴展的高性能容器編排服務,支持 Docker 容器,讓您可以在 AWS 上輕松運行和擴展容器化應用程式使用 Amazon ECS,您不需要安裝和操作自己的容器編排軟體,不需要管理和擴展虛擬機集群,也不需要在這些虛擬機上調度容器,
通過各種簡單的 API 呼叫,您可以啟動和停止支持 Docker 的應用程式、查詢應用程式的完整狀態,并使用 IAM 角色、安全組、負載均衡器、Amazon CloudWatch Events、AWS CloudFormation 模板和 AWS CloudTrail 日志等多種常用功能,
而Amazon ECR (Elastic Container Registry) 是AWS 上提供的一個托管的容器鏡像倉庫服務,它和ECS做集成簡化了我們開發運維的作業流程,也不需要我們自己去維護和管理鏡像倉庫,接下來我們簡單來看下ECR和ECS的使用,
ECR 鏡像倉庫的使用:
首先我們來創建屬于自己的容器鏡像倉庫ECR,打開我們的AWS Console,在服務串列中選擇ECR服務,選擇 “創建存盤庫” 
就這么簡單你就可以創建屬于自己的容器鏡像倉庫
接著選中剛剛所創建的鏡像倉庫,點擊查看“推送命令”,你會看到相關的docker 命令,如果用過docker的童鞋肯定比較熟悉,同樣的方法需要我們login一下,然后打tag指向我么剛剛創建的鏡像倉庫, 然后push,當然前提是你已經安裝好了AWS CLI 并且登錄了相關憑證,如果你還沒有AWS CLI 可以參考這里(AWS CLI 安裝)
那么接下來我們試著向我們剛剛創建的ECR倉庫推送鏡像
Get-login 我們的倉庫,顯示“Login Succeeded”
我們可以通過AWS CLI來查看我們的倉庫資訊
目前倉庫里沒有任何鏡像
接下來我們試著推送一個鏡像到倉庫,這里我本地已經有了一個Jenkins的容器鏡像,我們試著將他推送到倉庫,待會正好用它來部署我們的ECS,
回到我們ECR Console 里查看,當然也可以通過剛剛我們的CLI命令來查看
做到這里,我們已經可以向自己的鏡像倉庫中推送容器鏡像了,接下來我們用剛剛推送的Jenkins鏡像快速簡單通過ECS進行部署,
ECS的簡單部署:
在服務串列里選擇ECS服務,首先我們要先創建我們的“集群”,因為容器是基于作業系統的的虛擬化,所以它還是需要運行在我們的實體上,而ECS就是在實體上安裝了相應的Agent,你也可以將現有的實體注冊到集群當中來,這里我們新創建一個集群并選擇一臺較小的實體來演示
啟動的時候你可以看到兩個運行選項,這里我們選擇Linux,而國外還有一個選項Fargate,Fargate是一個不需要管理服務器或群集即可運行容器的無服務器服務,有興趣的可以看下官方關于Fargate的介紹, 國內目前還不支持,這里就先不給大家演示了,
這里需要配置我們“集群名稱” 還有實體型別以及VPC等等一些資訊,我們選擇一個實體(t2.micro),集群數量選擇“1” , 實體啟動除了一個根卷以外還需要一個存盤容器資料的EBS卷,, 然后配置安全組、密鑰(用來登錄容器實體)、VPC 等資訊,然后點擊“創建”
稍等幾秒就可以看到集群啟動成功
查看集群選擇“ECS實體”,你會看到已經有一個實體運行,你也可以通過EC2 服務Console看到正在運行的一臺實體

這樣我們的容器集群就運行起來了(雖然只有一臺實體~~~),接下來我們需要部署我們的容器上去,需要我們創建一個 Task Difinition (任務定義),如果之前用過Docker 的肯定知道Dockerfile, 任務定義就相當于Dockerfile,你可以通過console創建,也可以通過JSON格式的文本來定義,
選擇“任務定義” 創建新的任務定義
這里需要注意的是網路模式,默認以Bridge模式,,不同的網路模式定義了你訪問容器的方式,可以參考這里,我們選擇 “默認”,
接下來需要配置我們的容器資訊,點擊“添加容器”:
這里將配置我們運行容器的一些引數(相當于通過滑鼠寫一個JSON文本),而容器鏡像我們選擇我們自己ECR倉庫中推送的鏡像,然后配置容器記憶體及埠映射,點擊“添加”,
我們可以點擊‘JSON配置’ 來看下json格式下我們剛剛配置的資訊,所以你也可以通過json格式來配置
點擊“創建”,這樣我們的任務就創建好了,接下來需要把它運行起來,
點擊我們剛剛創建的任務,在“操作”中選擇“運行任務”,選擇運行任務的集群及任務數(這里我們只有一臺實體所以選擇一個任務數演示),關于容器置放策略可以參考這里
我們可以運行成功后你就可以看到狀態已經是“RUNNING”,這時候我們的jenkins容器已經運行了起來,
最后我們需要創建一個“服務“,用來定義容器的副本數保持副本數量以及和ELB負載均衡器訪問我們的容器,包括Autoscaling ,
點擊“創建“,
添加ELB到集群,這里我已經提前創建好了ELB,選擇添加到ELB

這里需要設定一個評估順序,用來定義規則的優先級
最后通過ELB的DNS域名我們來訪問我們的Jenkins服務,

做到這里我們已經成功的在AWS 上通過ECR/ECS服務部署了屬于我們自己的Jenkins 容器服務!
Amazon ECS是AWS 自己的容器編排服務,它很好的和AWS其他服務進行了集成,而如果企業當中目前沒有使用過容器編排服務,你可以嘗試使用AWS 的ECS服務,相反,如果你已經使用了其他容器編排服務,例如K8s,你可以選擇使用Amazon EKS,因為它是完全兼容k8s,
————————————————
原文鏈接:https://blog.csdn.net/SinnetCloud/article/details/100231237
遵循 CC 4.0 BY-SA 著作權協議,轉載請附上原文出處鏈接及本宣告,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/60131.html
標籤:其他
