容器技術是目前很是流行的技術,尤爲是在以Docker做爲容器引擎的推進下,讓容器的輕量級,可移植,自包含,隔離性等的上了一個新的臺階,目前談及Dev/Ops,CI/CD不多可以繞過Docker的。linux
Azure在去年就推出了容器服務ACS,以其對開源的全面兼容性,開放性,最全面的編排器(DC/OS, Kubernetes,Swarm)支持而廣受好評,但在中國和不少地區,ACS並無上線,如何在這些地區快速大規模部署容器服務一直是個問題。git
而微軟更進一步,在11月初,進一步開源了ACS的核心引擎acs-engine,讓開發人員能夠經過acs-engine快速的生成能夠在全部地區固然包括中國部署的ARM模板,而且並不依賴於ACS Container resource provider,對於廣大開發和維護人員來講是一大喜訊,沒必要像我同樣爲了在Azure中國上部署DC/OS cluster而辛苦調試修改腳本和ARM模板了:)github
新聞:http://www.forbes.com/sites/janakirammsv/2016/11/07/microsoft-open-sources-azure-container-service-adds-support-for-kubernetes/#48e955d270adgolang
Acs-engine官方地址:https://github.com/Azure/acs-enginedocker
不少牛人已經寫了一些很是棒的acs-engine的文章,本文是按照我實際測試整理而成的,將碰到的一些問題,解決辦法等記錄下來,但願對於你們快速部署有所幫助。json
首先簡單瞭解一下本次DC/OS集羣的部署架構圖,咱們有一個master的高可用集,master能夠選擇1,3,5臺虛擬機;有一個public agent的VMSS集合主要部署面向互聯網用戶訪問的應用;一個private agent的VMSS,沒法公網訪問,運行一些默認的計算:bootstrap
wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gzubuntu
官網地址:https://golang.org/dl/api
2.Linux下在你的用戶目錄下創建一個子目錄gopath,而且添加以下行到你的$HOME/.profile文件:瀏覽器
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/gopath
go get github.com/Azure/acs-engine
go get all
從如下地址:
https://dcosio.azureedge.net/dcos/testing/bootstrap
https://az837203.vo.msecnd.net/dcos-deps
下載下面的包到你的中國的鏡像服務器:
5b4aa43610c57ee1d60b4aa0751a1fb75824c083.bootstrap.tar.xz(約551M)
docker-engine_1.11.2-0~xenial_amd64.deb
ipset_6.29-1_amd64.deb
libipset3_6.29-1_amd64.deb
libltdl7_2.4.6-0.1_amd64.deb
unzip_6.0-20ubuntu1_amd64.deb
cd $GOPATH/src/github.com/Azure/acs-engine
go build
./acs-engine
"masterProfile": {
"count": 1,
"dnsPrefix": "dcosmaterdemo",
"vmSize": "Standard_D2"
},
{
"name": "agentpublic",
"count": 3,
"vmSize": "Standard_D2",
"dnsPrefix": "dcosagentdemo",
"ports": [
80,
443,
8080
]
}
"publicKeys": [
{
"keyData": "YOURKEY"
}
]
./acs-engine examples/dcos.json
https://dcosio.azureedge.net/dcos/testing/bootstrap
https://az837203.vo.msecnd.net/dcos-deps
#使用Azure CLI登錄中國的Azure:
azure login -u USERNAME -p PASSWORD -e AzureChinaCloud
#建立resource group:
azure group create --name="stevenacsdcosgp" --location="China East"
#執行部署:
azure group deployment create --name="mydcoschinadeploy" --resource-group="stevenacsdcosgp" --template-file="./_output/DCOS184-10726092/azuredeploy.json" --parameters-file="./_output/DCOS184-10726092/azuredeploy.parameters.json"
Auth配置:
Tunnel配置:
TIPS:若是你碰巧很不幸,配置SSH Tunnel的時候,沒法連接,檢查putty event log,看到Permission Denied錯誤,我已經找到了解決辦法,爲節約你的時間,請按照以下方法執行:
檢查netstat -aon | findstr "80"
你會看到有一些服務會使用ntoskrnl佔用80端口,好比ws-Management致使本地tunnel失敗:
從上述文檔能夠看出,利用acs-engine能夠很是方便的生成適用於中國Azure大規模部署的ARM模板,但其實有了這個模板,簡單修改參數,就能夠重複部署了,不必每次都生成,因此我把生成好的模板已經放到了Github上,想在中國部署的同窗:
https://github.com/kingliantop/azurelabs/tree/master/AzureChinaARMTemplate/mesos-marathon-vmss-china