微软容器服务引擎(aks-engine
)用于将一个容器集群描述文件转化成一组ARM(Azure Resource Manager)模板,通过在Azure上部署这些模板,用户可以很方便地在Azure上建立一套基于Docker的容器服务集群。用户可以自由地选择集群编排引擎DC/OS, Kubernetes或者是Swarm/Swarm Mode。集群描述文件使用和ARM模板相同的语法,它们都可以用来部署Azure容器服务。
最简单的开始使用aks-engine
的方式是使用Docker。如果本地计算机安装了Docker或者windows、Mac版本的Docker的话,无需安装任何软件就可以直接使用aks-engine
了。
- Windows (PowerShell):
.\scripts\devenv.ps1
- Linux (bash):
./scripts/devenv.sh
上面的这段脚本在Docker容器中挂载了aks-engine
源目录。你可以在任何熟悉的编辑器上修改这些源代码,所做的修改可以直接在Docker容器中编译和测试(本项目的持续集成系统中也采用了同样的方式)。
make bootstrap
当devenv.{ps1,sh}
执行完毕的时候,你可以在容器中查看对应的日志,最后执行下面的脚本就可以生成aks-engine
工具了:
make build
当项目编译通过后,可以使用如下的命令来验证aks-engine
是否正常运行:
# ./bin/aks-engine
Usage:
aks-engine [flags]
aks-engine [command]
Available Commands:
completion Generates bash completion scripts
deploy Deploy an Azure Resource Manager template
generate Generate an Azure Resource Manager template
get-versions Display info about supported Kubernetes versions
help Help about any command
scale Scale an existing Kubernetes cluster
upgrade Upgrade an existing Kubernetes cluster
version Print the version of aks-engine
Flags:
--debug enable verbose debug logs
-h, --help help for aks-engine
--show-default-model Dump the default API model to stdout
Use "aks-engine [command] --help" for more information about a command.
AKS引擎具有跨平台特性,可以在windows,OS X和Linux上运行。以下是对应不同平台的安装步骤:
安装依赖软件:
编译步骤:
- 设置工作目录。 这里假设使用
c:\gopath
作为工作目录: - 使用Windows + R组合键打开运行窗口
- 执行命令:
rundll32 sysdm.cpl,EditEnvironmentVariables
打开系统环境变量设置对话框 - 添加
c:\go\bin
到PATH环境变量 - 点击“新建”按钮并新建GOPATH环境变量,设置缺省值为
c:\gopath
- 编译AKS引擎:
- 使用Windows + R组合键打开运行窗口
- 运行
cmd
命令打开命令行窗口 - 运行命令mkdir %GOPATH%
- cd %GOPATH%
- 运行
go get github.com/Azure/aks-engine
命令获取AKS引擎在github上的最新代码 - 运行
go get all
命令安装AKS引擎需要的依赖组件 cd %GOPATH%\src\github.com\Azure\aks-engine
- 运行
go build
编译项目 - 运行
aks-engine
命令,如果能看到命令参数提示就说明已经正确编译成功了。
安装依赖软件::
- Go for OS X. 点击这里下载安装
安装步骤:
- 打开命令行窗口并设置GOPATH环境变量:
mkdir $HOME/gopath
- 打开
$HOME/.bash_profile
文件并添加以下内容:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/gopath
source $HOME/.sh_profile
使配置生效。- 编译AKS引擎:
- 运行
go get github.com/Azure/aks-engine
命令获取AKS引擎在github上的最新代码。 - 运行
go get all
命令安装AKS引擎需要的依赖组件 cd $GOPATH/src/github.com/Azure/aks-engine
go build
编译项目- 运行
aks-engine
命令,如果能看到命令参数提示就说明已经正确编译成功了。
安装依赖软件:
- Go for Linux
- 点击这里下载并安装
- 执行命令sudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz解压并替换原有文件。
git
编译步骤:
- 设置GOPATH:
- 运行命令
mkdir $HOME/gopath
新建gopath目录 - 编辑
$HOME/.profile
文件增加如下的配置:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/gopath
- 运行命令
source $HOME/.profile
使配置生效。 - 编译AKS引擎:
- 运行命令
go get github.com/Azure/aks-engine
获取AKS引擎在github上的最新代码。 - 运行
go get all
命令安装AKS引擎需要的依赖组件 cd $GOPATH/src/github.com/Azure/aks-engine
- 运行
go build
命令编译项目 - 运行
aks-engine
命令,如果能看到命令参数提示就说明已经正确编译成功了。
AKS引擎使用json格式的集群定义文件作为输入参数,生成3个或者多个类似如下的模板:
- apimodel.json - 集群配置文件
- azuredeploy.json - 核心的ARM (Azure Resource Model)模板,用来部署Docker集群
- azuredeploy.parameters.json - 部署参数文件,其中的参数可以自定义
- certificate and access config files - 某些编排引擎例如kubernetes需要生成一些证书,这些证书文件和它依赖的kube config配置文件也存放在和ARM模板同级目录下面
需要注意的是,当修改已有的Docker容器集群的时候,应该修改apimodel.json
文件来保证最新的部署不会影响到目前集群中已有的资源。举个例子,如果一个容器集群中的节点数量不够的时候,可以修改apimodel.json
中的集群节点数量,然后重新运行aks-engine
命令并将apimodel.json
作为输入参数来生成新的ARM模板。这样部署以后,集群中的旧的节点就不会有变化,新的节点会自动加入。
这里通过部署一个kubernetes容器集群来演示如何使用aks-engine
。kubernetes集群定义文件使用examples/kubernetes.json。
- 首先需要准备一个SSH 公钥私钥对.
- 编辑examples/kubernetes.json将其需要的参数配置好.
- 运行
./bin/aks-engine generate examples/kubernetes.json
命令在_output/Kubernetes-UNIQUEID目录中生成对应的模板。(UNIQUEID是master节点的FQDN前缀的hash值) - 按照README中指定的方式使用
azuredeploy.json
和azuredeploy.parameters.json
部署容器集群 deployment usage.