用于部署服务单元的容器语义不明确

用于部署服务单元的容器语义不明确

如果我们查看 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

相关内容