本系列文章演示如何搭建一个mini的云平台和DevOps实践环境。

基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力。

1 系统要求

1.1 硬件和软件要求

  • Linux内核版本3.10或更高
  • Docker EE Engine版本17.06.2-ee-8; 的值n在-ee-*后缀必须是8或更高
  • 静态IP地址

1.2 最低配置

  • 管理节点 8GB RAM
  • 工作节点 4GB RAM
  • 3GB 可用磁盘空间

1.3 推荐配置

  • 管理节点 16GB RAM
  • 管理节点 4个vCPU
  • 25-100GB 可用磁盘空间

1.4 操作系统支持

  • CentOS 7.4 (本文中默认使用的操作系统)
  • Red Hat Enterprise Linux 7.0, 7.1, 7.2, or 7.3
  • Ubuntu 14.04 LTS or 16.04 LTS
  • SUSE Linux Enterprise 12

1.5 其它

  • 同步时区和时间
  • 一致的主机名策略
  • 内部的DNS

1.6 版本适配

  • docker 17.06.2.ee.8+
  • UCP 3.0.2 : DTR 2.5.3
  • UCP 3.0.0 : DTR 2.5.1

注:DDC从UCP 3.0.0开始同时支持swarm和k8s。

1.7 网络要求

安装过程中UCP节点需要能下载docker官网的资源,如果不能访问,可通过其它机器下载软件包,然后执行离线安装。

如何离线安装UCP,请参考这里

1.8 使用的端口

在主机上安装UCP时,需要打开一系列端口以传入流量。这些端口都将接收来自一组主机的流量,根据主机来源的不同,端口可分为三个Scope:

  • External:流量通过终端用户交互从集群外部到达。
  • Internal:流量从同一集群中的其他主机到达。
  • Self:流量只从同一主机上的进程到达。
Hosts Port Scope Purpose
managers, workers TCP 179 Internal Port for BGP peers, used for kubernetes networking
managers TCP 443 (configurable) External, Internal Port for the UCP web UI and API
managers TCP 2376 (configurable) Internal Port for the Docker Swarm manager. Used for backwards compatibility
managers TCP 2377 (configurable) Internal Port for control communication between swarm nodes
managers, workers UDP 4789 Internal Port for overlay networking
managers TCP 6443 (configurable) External, Internal Port for Kubernetes API server
managers, workers TCP 6444 Self Port for Kubernetes API reverse proxy
managers, workers TCP, UDP 7946 Internal Port for gossip-based clustering
managers, workers TCP 10250 Internal Port for Kubelet
managers, workers TCP 12376 Internal Port for a TLS authentication proxy that provides access to the Docker Engine
managers, workers TCP 12378 Self Port for Etcd reverse proxy
managers TCP 12379 Internal Port for Etcd Control API
managers TCP 12380 Internal Port for Etcd Peer API
managers TCP 12381 Internal Port for the UCP cluster certificate authority
managers TCP 12382 Internal Port for the UCP client certificate authority
managers TCP 12383 Internal Port for the authentication storage backend
managers TCP 12384 Internal Port for the authentication storage backend for replication across managers
managers TCP 12385 Internal Port for the authentication service API
managers TCP 12386 Internal Port for the authentication worker
managers TCP 12387 Internal Port for the metrics service
managers TCP 12388 Internal Internal Port for the Kubernetes API Server
a, 如果没有firewalld,先要安装firewalld
$ yum install firewalld
b, 开启防火墙
$ systemctl start firewalld.service
c, 查看端口是否开放
$ firewall-cmd --zone=public --query-port=443/tcp
d, 开放端口
$ firewall-cmd --zone=public --add-port=443/tcp --permanent
e, 重载策略
$ firewall-cmd --reload

2 安装UCP

2.1 验证系统要求

安装UCP的第一步是确保具备UCP安装运行的所有要求。

2.2 安装Docker EE

确保在所有节点上安装相同的Docker EE版本。

如果是创建已安装Docker EE的虚拟机模板,请确保/etc/docker/key.json文件未包含在虚拟机映像中。配置虚拟机时,重新启动Docker守护程序以生成新/etc/docker/key.json文件。

CentOS7 安装 Docker EE,请参考这里

2.3 安装UCP

a, SSH到要安装UCP的主机。
b, 运行如下命令:
# Pull the latest version of UCP
$ docker image pull docker/ucp:3.0.2 # Install UCP
$ docker container run --rm -it --name ucp \
-v /var/run/docker.sock:/var/run/docker.sock \
docker/ucp:3.0.2 install \
--host-address <node-ip-address> \ # 安装UCP的主机IP
--interactive

安装命令会以交互模式运行,安装过程中会提示输入必要的配置值,主要是管理员登录名和密码等。

安装完成后,访问UCP首页https://<node-ip-address>

使用管理员登录名和密码登录,登录成功后会进入默认主页仪表盘

注意:

  • host-address 最好用IP;
  • 安装过程中可能需要登录store.docker.com, 用自己的注册账号登录;
  • 安装过程中的输入值也可以在命令中以参数方式提供,具体请参考官方文档。

2.4 授权

a, 转到Docker Store并购买Docker EE订阅,购买或免费试用许可。
b, 在UCP Web UI中,导航到管理员设置页面,在左侧菜单中,单击许可证

c, 单击上传许可证 ,弹出窗口中选择已经下载好的(.lic)文件,UCP会使用新文件进行更新。

2.5 其它UCP命令

a, 更新UCP
$ docker image pull docker/ucp:3.0.2

$ docker container run --rm -it --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.2 upgrade --interactive
b, 重启UCP
$ docker container run -it --rm --name ucp -v /var/run/docker.sock:/var/run/docker.sock docker/ucp:3.0.2 restart
c, 卸载UCP
$ docker container run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --name ucp docker/ucp:3.0.2 uninstall-ucp --interactive

3 配置UCP

3.1 加入新节点

a, 在UCP Web UI中,导航到共享的资源下的节点页面,然后单击添加节点按钮添加新节点。

b, 在“ 添加节点页面中,选择节点类型LINUX。其它都默认。
c, 单击复制图标

复制docker swarm join节点用于加入群集的命令。

d, 对于要加入群集的每个节点,使用ssh登录并运行复制的join命令。join命令完成后,该节点将显示在UCP Web UI中的节点页面上。

3.2 配置自定义TLS安全认证

所有UCP服务都使用HTTPS,以确保客户端和UCP之间的所有通信是加密的。默认情况下,这是使用不受客户端工具(如Web浏览器)信任的自签名TLS证书完成的。

因此,当访问UCP时,浏览器会警告不信任UCP或UCP具有无效证书。

可以将UCP配置为使用自己的TLS证书,以便浏览器和客户端工具自动信任它。

a, 在UCP Web UI中,导航到管理员设置页面。
b, 在左侧菜单中,单击证书

c, 上传证书和密钥
  • cacert.pem:CA证书。
  • server.pem:服务器证书。
  • server.key:私钥。

如何为UCP生成证书和密钥,请参考这里

d, 最后,单击保存使更改生效。

系列文章

Docker Data Center系列(一) - 快速搭建云原生架构的实践环境

Docker Data Center系列(二) - UCP安装指南

Docker Data Center系列(三) - DTR安装指南

Docker Data Center系列(四) - 离线安装UCP和DTR

Docker Data Center系列(五) - 使用自定义的TLS安全认证

Docker Data Center系列(二)- UCP安装指南的更多相关文章

  1. Docker Data Center系列(四)- 离线安装UCP和DTR

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 离线安装UCP 1.1 可用版本 Version ...

  2. Docker Data Center系列(三)- DTR安装指南

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 系统要求 1.1 硬件和软件要求 成为UCP管理的 ...

  3. Docker Data Center系列(一)- 快速搭建云原生架构的实践环境

    本系列文章演示如何快速搭建一个简单的云原生架构的实践环境. 基于这个基础架构,可以持续部署微服务架构的应用栈,演练敏捷开发过程,提升DevOps实践能力. 1 整体规划 1.1 拓扑架构 1.2 基础 ...

  4. Docker Data Center系列(五)- 使用自定义的TLS安全认证

    本系列文章演示如何搭建一个mini的云平台和DevOps实践环境. 基于这套实践环境,可以部署微服务架构的应用栈,演练提升DevOps实践能力. 1 名词说明 CSR: Certificate Sig ...

  5. Ubuntu docker 使用命令 系列二

    1.下载官方远程仓下的镜像:sudo docker pull <docker 镜像> ,sudo docker pull centos (没有指定版本,就是下载的最新的os) 2. 下载某 ...

  6. Docker入坑系列(二)

    Docker入坑系列(二) 上一篇我们为Docker创造了一个良好的生活环境,这一篇我们就开始让Docker活起来. 安装Docker ok,原文地址在这里. 当然,我只是自己翻译了一下而已- -跟着 ...

  7. Docker 系列二(操作镜像).

    一.镜像管理 1.拉取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] -- Docker 镜像仓库地址 :一般是 域名或者IP[:端口号 ...

  8. WPF入门教程系列(二) 深入剖析WPF Binding的使用方法

    WPF入门教程系列(二) 深入剖析WPF Binding的使用方法 同一个对象(特指System.Windows.DependencyObject的子类)的同一种属性(特指DependencyProp ...

  9. 第四章 使用Docker镜像和仓库(二)

    第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...

随机推荐

  1. [Swift]LeetCode214. 最短回文串 | Shortest Palindrome

    Given a string s, you are allowed to convert it to a palindrome by adding characters in front of it. ...

  2. 优化之Joiner组件

    Joiner组件在运行时需要额外的内存空间处理中间结果,因此会影响性能 可通过查看Joiner performance计数器来决定Joiner组件是否需要优化 通过如下方式优化Joiner组件 将Ma ...

  3. Xapian的内存索引

    关键字:xapian.内存索引 xapian除了提供用于生产环境的磁盘索引,也提供了内存索引(InMemoryDatabase).内存索引.我们可以通过观察内存索引的设计,来了解xapian的设计思路 ...

  4. Python内置函数(68)——__import__

    英文文档: __import__(name, globals=None, locals=None, fromlist=(), level=0) This function is invoked by ...

  5. 9.Django form组件

    Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 创建Form类时,主要涉及到 [ ...

  6. Shader 入门笔记(一) 如何学习shader

    本笔记,是根据自己学习shader的笔记,主要是参照冯乐乐的<Shader 入门精要> 和游戏蛮牛shaderLad视频 和网上一些博客. 为啥要学习这个呐? 自己其实之前学过一段时间的s ...

  7. mybatis中resultMap配置细则

    resultMap算是mybatis映射器中最复杂的一个节点了,能够配置的属性较多,我们在mybatis映射器配置细则这篇博客中已经简单介绍过resultMap的配置了,当时我们介绍了resultMa ...

  8. Spring 中 SQL 的存储过程

    SimpleJdbcCall 类可以被用于调用一个包含 IN 和 OUT 参数的存储过程.你可以在处理任何一个 RDBMS 时使用这个方法,就像 Apache Derby, DB2, MySQL, M ...

  9. 【Java基础】【20IO(字节流)】

    20.01_IO流(IO流概述及其分类) 1.概念 IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的类都在IO包中 流按流向分为两种:输入流,输出流. 流按操 ...

  10. C语言实现链队列的初始化&进队&出队

    /*链表实现队列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typed ...