Nutanix超”容”合之ACS Acropolis Container Service(下)实战篇01

Nutanix超”容”合之ACS <Acropolis Container Service> (下)实战篇由于篇幅的原因,将分为01和02两个部分:

前期准备

服务端
Nutanix Community Edtion (Version 2016.06.30)
该版本是NCE最新的稳定版且支持ABS和ACS。

详细安装教程:
浅尝超融合之Nutanix(下)安装部署篇

客户端
CentOS 7.2 with Docker Machine 0.6.0
客户端主要是用来运行Docker Machine,本例中是跑在NCE上的一台Linux虚拟机,也可以是装有Mac系统或Windows的笔记本。
需要注意的是Docker Machine已经发布到0.8.0,但是与ACS兼容方面有问题,经社区提问和多次测试之后确定0.6.0能够稳定支持ACS。

Nutanix ACS组件下载
ACS组件下载

  • Nutanix Docker Host Image(Docker Host VM Image)
  • Nutanix Docker Machine Driver(Docker Machine Driver – Linux)
  • Nutanix Docker Volume Driver(已经包含在Docker Host VM Image中)

环境准备

下面我们需要登录到Prism控制台Web界面来进行ACS实践前的一些准备。
注:文中提到的Settings按钮均为Prism界面右上角的那个小齿轮。

镜像上传

将下载好的Docker Host VM Image上传到Prism的镜像服务中
Settings–>Image Configuration–>Upload Image

  • NAME:docker(任意)
  • IMAGE TYPE:DISK
  • CONTAINER:默认即可
  • Upload a file:浏览选择镜像文件

集群准备

配置集群信息
Settings–>Cluster Details

  • CLUSTER NAME:Docanix(任意)
  • CLUSTER VIRTUAL IP ADDRESS:192.168.2.22
    (该IP用来提供访问Nutanix环境集群的虚拟IP,由于本实验环境为单节点所以只需指定任意一个空闲的IP即可。)
  • EXTERNAL DATA SERVICES IP ADDRESS:192.168.2.23
    (该IP用来提供ABS的iSCSI存储服务,是使用ACS功能的重要前提。IP地址任意,选一个空闲的IP即可。)

网络准备

创建一个网络
Settings–>Network Configuration–>Create Network

  • NAME:Bridge
  • VLAN ID:0
  • ENABLE IP ADDRESS MANAGEMENT:勾选
  • NETWORK IP ADDRESS/PREFIX LENGTH:192.168.2.0/24
  • GATEWAY IP ADDRESS:192.168.2.1
  • CONFIGURA DOMAIN SETTINGS:勾选
  • DNS:202.103.24.68
  • IP ADDRESS POOLS:192.168.2.150~192.168.2.200
    (以上网络配置根据自己的环境来确定,注意路由器开启DHCP服务。)

网络Bridge创建完成

创建存储容器

此容器为Nutanix中于存储相关的概念,并非Docker容器。
就个人的理解,Container从Storage Pool(存储池)中将存储资源舀一瓢出来,如有需要存储资源的则直接从容器中获取而非直接去存储池获取。Nutanix存储的副本、压缩、去重、分层等功能应该都是基于Container来做的。
Home–>Storage–> + Container

名称任意,其他设置保持默认(主要原因是高级设置我不会)…

容器创建成功

至此整个环境的介质、网络、存储等配置已经完成。内容写得很多,其实操作起来异常简单,基本都是点点点就行。

生成Docker宿主机

快速生成Docker宿主机是ACS的核心功能之一,到这里我们就可以开始尝试在Nutanix的AHV虚拟化环境provision我们的Docker Host虚拟机了。

客户端准备

客户端就是我们先前已经准备好的Linux虚拟机。再次强调,客户端环境可部署到任意地方或者用任意OS都行,只需要安装Docker Machinge和Nutanix Docker Machine的驱动就行。(当然前提是客户端网络跟Nutanix服务端是连通的)

安装Docker Machine 0.6.0

# curl -L https://github.com/docker/machine/releases/download/v0.6.0/docker-machine-`uname -s`-`uname -m` >/usr/local/bin/docker-machine 
# chmod +x /usr/local/bin/docker-machine

安装Nutanix Docker Machine Driver for Linux
将下载好的docker-machine-driver-nutanix.linux上传

[root@dm bin]# pwd
/usr/local/bin  

[root@dm bin]# mv docker-machine-driver-nutanix.linux docker-machine-driver-nutanix  

[root@dm bin]# chmod u+x docker-machine-driver-nutanix  

[root@dm bin]# ls -l
total 46248
-rwxr-xr-x. 1 root root 36228480 Aug  1 14:30 docker-machine
-rwxr--r--. 1 root root 11126592 Aug 16 17:27 docker-machine-driver-nutanix

生成Docker宿主机

生成docanix01虚机

[root@dm ~]# docker-machine -D create -d nutanix \
--nutanix-username admin \
--nutanix-password Admin4NCE \
--nutanix-endpoint 192.168.2.21:9440 \
--nutanix-vm-image docker \
--nutanix-vm-network Bridge \
--nutanix-vm-cores 1 \
--nutanix-vm-mem 2048 \
docanix01

参数解释:

  • -D:docker machine的debug模式,可选
  • -d:指定驱动,这里输入nutanix即可
  • username: Prism的用户名
  • password: Prism的密码
  • endpoint: Prism的IP地址+9440端口(这里写集群的IP地址应该也可以)
  • vm-image: 之前上传的image的名字
  • vm-network: 之前创建网络的名字
  • vm-cores: CPU核心数
  • vm-mem: 内存大小(MB为单位)
  • docanix01:为创建的虚拟机的名字

生成docanix02虚机

[root@dm ~]# docker-machine create -d nutanix \
--nutanix-username admin \
--nutanix-password Admin4NCE \
--nutanix-endpoint 192.168.2.21:9440 \
--nutanix-vm-image docker \
--nutanix-vm-network Bridge \
--nutanix-vm-cores 1 \
--nutanix-vm-mem 2048 \
docanix02
  
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with centos...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env docanix02

查看Docker Host是否创建成功

[root@dm ~]# docker-machine ls
NAME        ACTIVE   DRIVER    STATE     URL                        SWARM   DOCKER    ERRORS
docanix01   -        nutanix   Running   tcp://192.168.2.161:2376           v1.12.0   
docanix02   -        nutanix   Running   tcp://192.168.2.156:2376           v1.12.0

查看Docker Host的基本信息

[root@dm ~]# docker-machine ssh docanix01
Last login: Tue Aug 16 19:03:10 2016 from 192.168.2.151

[root@docanix01 ~]# uname -a
Linux docanix01 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

[root@docanix01 ~]# docker version
Client:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.0
 API version:  1.24
 Go version:   go1.6.3
 Git commit:   8eab29e
 Built:        
 OS/Arch:      linux/amd64

可以看到我们生成的docker host的操作系统为CentOS 7.2,Docker Engine版本为1.12。

好了,名为docanix01docanix02的虚拟机已经创建成功,命令异常简单,整个过程也很快。当然肯定不是秒级,但是比自己创建虚拟机并且手工安装Docker Engine真的要快上太多。

美中不足的是Docker Engine使用默认的device map存储驱动而且为loop-lvm模式,该模式是Docker明文不建议用到生产环境中的,希望Nutanix在后续能够改进。
注:这不是Nutanix的问题,CentOS上默认安装的Docker Engine都是这种情况。

不信你去看…使用docker info:

WARNING: Usage of loopback devices is strongly discouraged for production use.

注:Docker Host虚拟机生成过程涵盖curl的安装,OS的升级(yum update)和最新的Docker Engine安装,所以整个Nutanix环境需要能够连接到互联网才能成功,这也是我们之前为什么要做网络配置的原因。

下篇我们会介绍使用Nutanix ACS的Volume Plugin功能来实现容器数据的持久化功能,敬请期待!

K8S中文社区微信公众号
分享到:更多 ()