安装和配置控制器节点¶
本节描述了如何在 Ubuntu 16.04 (LTS) 和 CentOS 7 上安装和配置控制器节点上的容器服务。
先决条件¶
在安装和配置 Zun 之前,您必须创建数据库、服务凭证和 API 端点。
要创建数据库,请完成以下步骤
使用数据库访问客户端以
root用户身份连接到数据库服务器# mysql创建
zun数据库MariaDB [(none)] CREATE DATABASE zun;授予
zun数据库适当的访问权限MariaDB [(none)]> GRANT ALL PRIVILEGES ON zun.* TO 'zun'@'localhost' \ IDENTIFIED BY 'ZUN_DBPASS'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON zun.* TO 'zun'@'%' \ IDENTIFIED BY 'ZUN_DBPASS';
将
ZUN_DBPASS替换为合适的密码。退出数据库访问客户端。
激活
admin凭证以访问仅管理员可用的 CLI 命令$ . admin-openrc
要创建服务凭证,请完成以下步骤
创建
zun用户$ openstack user create --domain default --password-prompt zun User Password: Repeat User Password: +-----------+----------------------------------+ | Field | Value | +-----------+----------------------------------+ | domain_id | e0353a670a9e496da891347c589539e9 | | enabled | True | | id | ca2e175b851943349be29a328cc5e360 | | name | zun | +-----------+----------------------------------+
将
admin角色添加到zun用户$ openstack role add --project service --user zun admin
注意
此命令不会产生任何输出。
创建
zun服务实体$ openstack service create --name zun \ --description "Container Service" container +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Container Service | | enabled | True | | id | 727841c6f5df4773baa4e8a5ae7d72eb | | name | zun | | type | container | +-------------+----------------------------------+
创建容器服务 API 端点
$ openstack endpoint create --region RegionOne \ container public http://controller:9517/v1 +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 3f4dab34624e4be7b000265f25049609 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 727841c6f5df4773baa4e8a5ae7d72eb | | service_name | zun | | service_type | container | | url | http://controller:9517/v1 | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ container internal http://controller:9517/v1 +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 9489f78e958e45cc85570fec7e836d98 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 727841c6f5df4773baa4e8a5ae7d72eb | | service_name | zun | | service_type | container | | url | http://controller:9517/v1 | +--------------+-----------------------------------------+ $ openstack endpoint create --region RegionOne \ container admin http://controller:9517/v1 +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | enabled | True | | id | 76091559514b40c6b7b38dde790efe99 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 727841c6f5df4773baa4e8a5ae7d72eb | | service_name | zun | | service_type | container | | url | http://controller:9517/v1 | +--------------+-----------------------------------------+
安装和配置组件¶
创建 zun 用户和必要的目录
创建用户
# groupadd --system zun # useradd --home-dir "/var/lib/zun" \ --create-home \ --system \ --shell /bin/false \ -g zun \ zun
创建目录
# mkdir -p /etc/zun # chown zun:zun /etc/zun
安装以下依赖项
对于 Ubuntu,运行
# apt-get install python3-pip git
对于 CentOS,运行
# yum install python3-pip git python3-devel libffi-devel gcc openssl-devel
克隆并安装 zun
# cd /var/lib/zun # git clone https://opendev.org/openstack/zun.git # chown -R zun:zun zun # git config --global --add safe.directory /var/lib/zun/zun # cd zun # pip3 install -r requirements.txt # python3 setup.py install
生成示例配置文件
# su -s /bin/sh -c "oslo-config-generator \ --config-file etc/zun/zun-config-generator.conf" zun # su -s /bin/sh -c "cp etc/zun/zun.conf.sample \ /etc/zun/zun.conf" zun
复制 api-paste.ini
# su -s /bin/sh -c "cp etc/zun/api-paste.ini /etc/zun" zun
编辑
/etc/zun/zun.conf在
[DEFAULT]部分中,配置RabbitMQ消息队列访问[DEFAULT] ... transport_url = rabbit://openstack:RABBIT_PASS@controller
将
RABBIT_PASS替换为您为RabbitMQ中的openstack帐户选择的密码。在
[api]部分,配置 Zun API 服务器将要监听的 IP 地址[api] ... host_ip = 10.0.0.11 port = 9517
如果控制器节点的管理接口 IP 地址不同,请将
10.0.0.11替换为该 IP 地址。在
[database]部分,配置数据库访问[database] ... connection = mysql+pymysql://zun:ZUN_DBPASS@controller/zun
将
ZUN_DBPASS替换为您为 zun 数据库选择的密码。在
[keystone_auth]部分,配置身份服务访问[keystone_auth] memcached_servers = controller:11211 www_authenticate_uri = http://controller:5000 project_domain_name = default project_name = service user_domain_name = default password = ZUN_PASS username = zun auth_url = http://controller:5000 auth_type = password auth_version = v3 auth_protocol = http service_token_roles_required = True endpoint_type = internalURL
在
[keystone_authtoken]部分中,配置 Identity 服务访问[keystone_authtoken] ... memcached_servers = controller:11211 www_authenticate_uri = http://controller:5000 project_domain_name = default project_name = service user_domain_name = default password = ZUN_PASS username = zun auth_url = http://controller:5000 auth_type = password auth_version = v3 auth_protocol = http service_token_roles_required = True endpoint_type = internalURL
将 ZUN_PASS 替换为您在身份服务中为 zun 用户选择的密码。
在
[oslo_concurrency]部分,配置lock_path[oslo_concurrency] ... lock_path = /var/lib/zun/tmp
在
[oslo_messaging_notifications]部分,配置driver[oslo_messaging_notifications] ... driver = messaging
在
[websocket_proxy]部分,配置 websocket 代理将要监听的 IP 地址[websocket_proxy] ... wsproxy_host = 10.0.0.11 wsproxy_port = 6784 base_url = ws://controller:6784/
注意
最终用户将使用此
base_url访问其容器的控制台,因此请确保您的预期用户可以访问此 URL,并且防火墙未阻止端口6784。如果控制器节点的管理接口 IP 地址不同,请将
10.0.0.11替换为该 IP 地址。
注意
确保
/etc/zun/zun.conf仍然具有正确的权限。 您可以使用以下命令再次设置权限:# chown zun:zun /etc/zun/zun.conf
填充 Zun 数据库
# su -s /bin/sh -c "zun-db-manage upgrade" zun
完成安装¶
创建一个 upstart 配置文件,可以命名为
/etc/systemd/system/zun-api.service注意
CentOS 可能会将二进制文件安装到
/usr/bin/。 如果是这样,请在以下示例文件中将/usr/local/bin/目录替换为正确的目录。[Unit] Description = OpenStack Container Service API [Service] ExecStart = /usr/local/bin/zun-api User = zun [Install] WantedBy = multi-user.target
创建一个 upstart 配置文件,可以命名为
/etc/systemd/system/zun-wsproxy.service[Unit] Description = OpenStack Container Service Websocket Proxy [Service] ExecStart = /usr/local/bin/zun-wsproxy User = zun [Install] WantedBy = multi-user.target
启用并启动 zun-api 和 zun-wsproxy
# systemctl enable zun-api # systemctl enable zun-wsproxy
# systemctl start zun-api # systemctl start zun-wsproxy
验证 zun-api 和 zun-wsproxy 服务是否正在运行
# systemctl status zun-api # systemctl status zun-wsproxy