Docker 官方出品丨Docker 最佳实践系列指南(二)
本文首发自“Docker公司”公众号(ID:docker-cn)
编译丨小东
每周一、三、五 与您不见不散!
对于 Docker EE 安装的建议
本节详细说明架构的安装过程,并提供一个核对表。它并不能替代有关文档,后者提供了更多详细信息,从各方面来讲都是权威性的。本节的目标是帮助您定义一个可重复的(最好也是自动化的)过程,用以部署、升级和扩展 Docker EE 环境。
Docker EE 标准版或高级版安装的三个主要阶段如下所示:
- 部署和配置基础架构(主机、网络、存储);
- 安装和配置作为应用在主机上运行的 Docker 引擎;
- 安装和配置 UCP 和 DTR,它们作为在引擎上运行的容器而实现;
基础架构注意事项
安装文档详细说明了 Docker EE 标准版和高级版的基础架构要求。建议使用环境中现有的或特定于平台的工具来为基础架构组件提供标准化的可重复配置。
网络
Docker 组件需要通过网络通信,文档列出了为实现内部集群通信需要开放的端口。如果集群的内部网络配置不当,可能引发难以追查原因的问题。最好先从相对简单的环境开始。此参考架构假定所有主机使用同一个子网,而容器使用 Overlay 网络。
防火墙
对 Docker EE 的访问只能使用端口 443 进行(对于 DTR 是端口 443 和 80),无论访问 Web UI 还是远程 API 都不例外。因此外部防火墙配置很简单。在大多数情况下,您只需要开放端口 80、443 和 22。端口 22 用于 SSH 访问,因为 Docker EE 不需要 SSH 访问,所以它是可有可无的。对应用的访问是通过负载均衡器使用 HTTPS 进行的。如果您对外界暴露其他 TCP 服务,请在防火墙上开放这些端口。上一节已经说过,为了在集群内部通信,也需要开放多个端口。如果您在集群中的某些节点之间设有防火墙(例如用于分隔控制器与工作节点),那么也要开放相关端口。
如果在应用内部使用经过加密的 Overlay 网络,则还应该允许 ESP(封装安全有效负载)或 IP 协议 50 流量。ESP 并非基于 TCP 或 UDP 协议,它将用于安全有效负载 / 数据的端到端封装。
负载均衡器
上一节详细说明了负载均衡器。它们必须在安装之前配置完毕,而且必须有合适的主机名。外部(负载均衡器)主机名用于 HA,也用于 TLS 证书。如果在安装期间或安装后不必重新配置它们,就会比较轻松。
请参阅上一节了解 Docker 组件来获取关于负载均衡器配置的详细信息。
共享存储
用于镜像库中镜像的 DTR 共享存储必须就绪,并且必须可从 DTR 节点访问。请使用 S3 或 NFS 命令行客户端来测试其是否工作,以避免调试 DTR 存储配置的麻烦。
主机配置
主机配置根据所使用的 OS 和现有配置标准而定,不过在安装 OS 之后必须执行几个重要步骤:
- 使用 NTP 或类似服务进行时钟同步。时钟偏差可能导致难以排除的错误,特别是在使用 Raft 算法的情况下(UCP 和 DTR)。
- 所有主机的 UCP 都需要静态 IP。
- 主机名用于集群中的节点标识。必须以非临时性的方式设置主机名。
- 主机防火墙必须在安装文档中指定的所有端口上允许集群内流量。
- 如果有需要,还必须配置存储。例如,devicemapper 驱动程序需要一个在 Docker 引擎安装之前配置的逻辑存储卷。
Docker EE 基础版安装注意事项
关于 EE 安装的详细说明由文档提供。要在无法访问互联网的机器上安装,请将这些软件包添加到您自己的私有镜像仓库。安装软件包之后,确保将 docker 服务配置为在系统引导时启动。
更改 Docker EE 基础版的参数的最佳方式是使用 /etc/docker/daemon.json 配置文件。这样可以确保配置能够方便地跨不同系统和 OS 复用。请参见文档了解完整的选项列表。
启动 docker 服务,并使用 docker info 验证参数,从而确保引擎配置正确。
UCP 安装注意事项
UCP 安装程序会从一组运行 Docker EE 基础版的机器创建功能性集群。这包括创建 Swarm 集群和安装 UCP 控制器。在安装指南中描述的默认安装方式是交互式的。
要执行完全自动化的可重复部署,请对安装程序提供更多信息:
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ -v /tmp/docker_subscription.lic:/config/docker_subscription.lic \ -e UCP_ADMIN_PASSWORD=password --name ucp docker/ucp install --host-address IP_or_interface \ --san manager1.example.com --san ucp.example.com
下列各节会说明所有这些选项。
外部证书
默认情况下,UCP 使用自签名的 TLS 证书。对于生产部署,建议使用由可信的 CA 生成的证书。在大多数情况下,该 CA 就是您的组织的内部 CA。
需要的证书和密钥如下所示:
- 根 CA 的公用证书 ca.pem。
- TLS 证书 cert.pem。它还必须包含所有中间 CA 的公用证书,并有用于访问 UCP 的所有地址的 SAN,包括负载均衡器的主机名(例如 ucp.example.com)和各个控制器的主机名(例如 ucp-controller1.example.com),以便直接访问它们。
- TLS 私钥 key.pem。
要在安装期间自动添加这些项目,请在您安装 UCP 的机器上,将这些带有正确名称的文件添加到名为 ucp-controller-server-certs 的存储卷,并使用 --external-server-cert 安装参数。
也可以在安装后通过 Web UI 添加证书。
许可证文件
要为安装提供许可证文件,可以通过命令行,也可以在 /config 中使用绑定式挂载(存储卷)。使用 -v /path/to/docker_subscription.lic:/config/docker_subscription.lic 指定其位置。
管理员密码
要使安装过程成为完全非交互式的,必须使用 --admin-password 安装参数传递管理员密码。默认的管理员用户名是 admin。可以使用 --admin-username 来更改它。
在安装命令文档中提供了安装参数的完整列表。
添加节点
完成第一个控制器节点的安装后,必须再将两个控制器加入集群,从而完成其安装。UCP 会在集群中的管理节点上配置一个完整的控制器从节点,因此在这两个控制器上只需要执行命令 docker swarm join 并使用正确的标记即可。可以通过在第一个控制器上运行 docker swarm join-token manager 来获取确切的命令。
要加入工作节点,可以在任何控制器上通过 docker swarm join-token worker 获取等效的命令:
docker swarm join-token worker
要将工作节点添加到此 swarm,请运行下列命令:
docker swarm join \ --token SWMTKN-1-00gqkzjo07dxcxb53qs4brml51vm6ca2e8fjnd6dds8lyn9ng1-092vhgjxz3jixvjf081sdge3p \ 192.168.65.2:2377
要确保一切都正确运行,请在 https://ucp.example.com 登录到 UCP。
DTR 安装注意事项
DTR 的安装与 UCP 的安装类似。安装并配置一个节点,然后加入从节点来组成完整的高可用性设置。要安装第一个实例以及从节点,请将安装程序指向集群中将要安装该实例的节点。
安装后必须配置证书和镜像存储。配置共享存储之后,可以使用 join 命令添加两个从节点。
验证部署
完成所有项目的安装之后,可以执行测试来验证部署。在 UCP 控制器和运行 DTR 的节点上禁用工作负载的调度。
应该考虑的基本测试:
- 通过 https://ucp.example.com 登录,以及直接登录到管理节点,例如 https://manager1.example.com。 确认集群和所有节点都健康。
- 仿照文档中的示例来测试是否能部署应用。
- 测试用户是否能从 CLI 下载捆绑包并连接到集群。测试他们是否能使用 docker-compose。
- 使用完整的镜像工作流测试 DTR。确保存储没有配置不当,且镜像存储在正确的位置。
考虑构建一套标准的自动化测试来验证新的环境和更新。仅通过测试标准功能应该就可发现大部分配置问题。要确保使用非管理员用户身份运行这些测试,测试用户应该具有与平台用户相似的权限。通过测量每项测试所用的时间,也可以找出底层基础架构配置的问题。在这套测试中,应该包括全面部署您的组织中的实际应用。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Docker系列教程24-Docker Compose网络设置
原文:http://www.itmuch.com/docker/24-docker-compose-network/ ,转载请说明出处。 本节我们来详细探讨Compose的网络设置。本节介绍的网络特性仅适用于Version 2 file format,Version 1 file format不支持该特性。 基本概念 默认情况下,Compose会为我们的应用创建一个网络,服务的每个容器都会加入该网络中。这样,容器就可被该网络中的其他容器访问,不仅如此,该容器还能以服务名称作为hostname被其他容器访问。 默认情况下,应用程序的网络名称基于Compose的工程名称,而项目名称基于docker-compose.yml所在目录的名称。如需修改工程名称,可使用--project-name标识或COMPOSE_PORJECT_NAME环境变量。 举个例子,假如一个应用程序在名为myapp的目录中,并且docker-compose.yml如下所示: version: '2' services: web: build: . ports: - "8000:8000" db: image: post...
- 下一篇
使用 Dashboard - 每天5分钟玩转 Docker 容器技术(174)
上一节我们完成了 Kubernetes Dashboard 的安装,本节就来实践一下。 Dashboard 界面结构 Dashboard 的界面很简洁,分为三个大的区域。 顶部操作区在这里用户可以搜索集群中的资源、创建资源或退出。 左边导航菜单 通过导航菜单可以查看和管理集群中的各种资源。菜单项按照资源的层级分为两类:Cluster 级别的资源Namespace 级别的资源 默认显示的是defaultNamespace,可以进行切换: 中间主体区 在导航菜单中点击了某类资源,中间主体区就会显示该资源所有实例,比如点击Pods。 典型使用场景 接下来我们介绍几个 Dashboard 的典型使用场景。 部署 Deployment 点击顶部操作区的+ CREATE按钮。 用户可以直接输入要部署应用的名字、镜像、副本数等信息;也可以上传 YAML 配置文件。如果是上传配置文件,则可以创建任意类型的资源,不仅仅是 Deployment。 在线操作 对于每种资源,都可以点击按钮执行各种操作。 比如点击View/edit YAML可直接修改资源的配置,保存后立即生效,其效果与kubectl edit...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6