如果我们查看 Juju 环境的状态,我们可以看到一组机器和服务。在服务中,我们可以看到一组服务单元。
environment: local
machines:
"0":
agent-state: started
agent-version: 1.18.1.1
dns-name: localhost
instance-id: localhost
series: trusty
"1":
agent-state: started
agent-version: 1.18.1.1
dns-name: 10.0.3.154
instance-id: atech-local-machine-1
series: trusty
hardware: arch=i386
services:
juju-gui:
charm: cs:trusty/juju-gui-3
exposed: true
units:
juju-gui/0:
agent-state: started
agent-version: 1.18.1.1
machine: "1"
open-ports:
- 80/tcp
- 443/tcp
public-address: 10.0.3.154
mysql:
charm: cs:precise/mysql-46
exposed: true
relations:
cluster:
- mysql
units:
mysql/0:
agent-state: pending
machine: "4"
但https://jujucharms.com/docs/stable/charms-constraints据说,有一个名为“容器”的约束,它指定服务单元必须在其中运行的容器类型。但上述状态日志未显示任何与容器相关的详细信息。
另一方面,在https://jujucharms.com/docs/stable/authors-subordinate-services其中指出“服务单元通常在机器上的隔离容器中运行,并且无法了解或访问部署在同一台机器上的其他服务”。
这是否意味着,当我们创建新的服务单元时,Juju 运行时是否会在现有机器中创建一个新容器并部署服务单元? 或者在新机器中创建一个新容器并部署服务单元? 或者使用单个容器来部署所有服务单元?
答案1
Juju 可以通过多种不同的方式将单元部署到机器上,但默认情况下,它会将单元部署到新实例的裸机上。根据您指定部署命令的方式,Juju 可以部署它:
- 到机器的裸露金属上。
- 进入机器上的 lxc 容器。
- 进入机器上的 kvm 容器。
- 等等等等……
具体来说,如果您正在寻找有关将服务部署到容器中的更多信息,您应该查看此处的文档:https://jujucharms.com/docs/stable/charms-deploying#deploying-to-specific-machines-and-containers寻找以下线条:
juju deploy mysql --to 24/lxc/3
juju deploy mysql --to lxc:25