使用 Docker 将 Rancher 安装到单个节点中

Rancher 可以通过运行单个 Docker 容器进行安装。

在这种安装方案中,你需要将 Docker 安装到单个 Linux 主机,然后使用单个 Docker 容器将 Rancher 部署到主机中。

使用 Docker 将 Rancher 安装到单个节点中 - 图1想要使用外部负载均衡器?

请参阅使用外部负载均衡器的 Docker 安装

Rancher 的 Docker 安装仅推荐用于开发和测试环境中。Rancher 版本决定了能否将 Rancher 迁移到高可用集群。

Rancher backup operator 可将 Rancher 从单个 Docker 容器迁移到高可用 Kubernetes 集群上。详情请参见把 Rancher 迁移到新集群

Rancher 特权访问

当 Rancher Server 部署在 Docker 容器中时,容器内会安装一个本地 Kubernetes 集群供 Rancher 使用。为 Rancher 的很多功能都是以 deployment 的方式运行的,而在容器内运行容器是需要特权模式的,因此你需要在安装 Rancher 时添加 --privileged 选项。

操作系统,Docker,硬件和网络要求

请确保你的节点满足常规的安装要求

1. 配置 Linux 主机

按照要求配置一个 Linux 主机,用于运行 Rancher Server。

2. 选择一个 SSL 选项并安装 Rancher

出于安全考虑,使用 Rancher 时请使用 SSL(Secure Sockets Layer)。SSL 保护所有 Rancher 网络通信(如登录和与集群交互)的安全。

使用 Docker 将 Rancher 安装到单个节点中 - 图2你是否需要:

选择以下的选项之一:

选项 A:使用 Rancher 生成的默认自签名证书

如果你在不考虑身份验证的开发或测试环境中安装 Rancher,可以使用 Rancher 生成的自签名证书安装 Rancher。这种安装方式避免了自己生成证书的麻烦。

登录到你的主机,然后运行以下命令:

  1. docker run -d --restart=unless-stopped \
  2. -p 80:80 -p 443:443 \
  3. --privileged \
  4. rancher/rancher:latest

选项 B:使用你自己的证书 - 自签名

在你团队访问 Rancher Server 的开发或测试环境中,创建一个用于你的安装的自签名证书,以便团队验证他们对实例的连接。

使用 Docker 将 Rancher 安装到单个节点中 - 图3先决条件:

使用 OpenSSL 或其他方法创建自签名证书。

  • 证书文件的格式必须是 PEM。
  • 在你的证书文件中,包括链中的所有中间证书。你需要对你的证书进行排序,把你的证书放在最前面,后面跟着中间证书。如需查看示例,请参见证书故障排除

创建证书后,运行以下 Docker 命令以安装 Rancher。使用 -v 标志并提供证书的路径,以将证书挂载到容器中。

占位符描述
<CERT_DIRECTORY>包含证书文件的目录的路径。
<FULL_CHAIN.pem>完整证书链的路径。
<PRIVATE_KEY.pem>证书私钥的路径。
<CA_CERTS.pem>CA 证书的路径。

登录到你的主机,然后运行以下命令:

  1. docker run -d --restart=unless-stopped \
  2. -p 80:80 -p 443:443 \
  3. -v /<CERT_DIRECTORY>/<FULL_CHAIN.pem>:/etc/rancher/ssl/cert.pem \
  4. -v /<CERT_DIRECTORY>/<PRIVATE_KEY.pem>:/etc/rancher/ssl/key.pem \
  5. -v /<CERT_DIRECTORY>/<CA_CERTS.pem>:/etc/rancher/ssl/cacerts.pem \
  6. --privileged \
  7. rancher/rancher:latest

选项 C:使用你自己的证书 - 可信 CA 签名的证书

在公开暴露应用的生产环境中,请使用由可信 CA 签名的证书,以避免用户收到证书安全警告。

不建议将 Docker 安装用于生产环境。这些说明仅适用于测试和开发。

使用 Docker 将 Rancher 安装到单个节点中 - 图4先决条件:

  • 证书文件的格式必须是 PEM。
  • 在你的证书文件中,包括可信 CA 提供的所有中间证书。你需要对你的证书进行排序,把你的证书放在最前面,后面跟着中间证书。如需查看示例,请参见证书故障排除

获取证书后,运行以下 Docker 命令。

  • 使用 -v 标志并提供证书的路径,以将证书挂载到容器中。因为你的证书是由可信的 CA 签名的,因此你不需要安装额外的 CA 证书文件。
  • 使用 --no-cacerts 作为容器的参数,以禁用 Rancher 生成的默认 CA 证书。
占位符描述
<CERT_DIRECTORY>包含证书文件的目录的路径。
<FULL_CHAIN.pem>完整证书链的路径。
<PRIVATE_KEY.pem>证书私钥的路径。

登录到你的主机,然后运行以下命令:

  1. docker run -d --restart=unless-stopped \
  2. -p 80:80 -p 443:443 \
  3. -v /<CERT_DIRECTORY>/<FULL_CHAIN.pem>:/etc/rancher/ssl/cert.pem \
  4. -v /<CERT_DIRECTORY>/<PRIVATE_KEY.pem>:/etc/rancher/ssl/key.pem \
  5. --privileged \
  6. rancher/rancher:latest \
  7. --no-cacerts

选项 D:Let’s Encrypt 证书

使用 Docker 将 Rancher 安装到单个节点中 - 图5警告

Let’s Encrypt 对新证书请求有频率限制。因此,请限制创建或销毁容器的频率。详情请参见 Let’s Encrypt 官方文档 - 频率限制

你也可以在生产环境中使用 Let’s Encrypt 证书。Let’s Encrypt 使用 HTTP-01 质询来验证你对域名的控制权。如果要确认你对该域名有控制权,你可将用于访问 Rancher 的主机名(例如 rancher.mydomain.com)指向运行的主机的 IP。你可通过在 DNS 中创建 A 记录,以将主机名绑定到 IP 地址。

不建议将 Docker 安装用于生产环境。这些说明仅适用于测试和开发。

使用 Docker 将 Rancher 安装到单个节点中 - 图6先决条件:

  • Let’s Encrypt 是联网服务。因此,在内网和离线环境中不能使用。
  • 在 DNS 中创建一条记录,将 Linux 主机 IP 地址绑定到要用于访问 Rancher 的主机名(例如,rancher.mydomain.com)。
  • 在 Linux 主机上打开 TCP/80 端口。Let’s Encrypt 的 HTTP-01 质询可以来自任何源 IP 地址,因此端口 TCP/80 必须开放开所有 IP 地址。

满足先决条件后,你可以运行以下命令使用 Let’s Encrypt 证书安装 Rancher。

占位符描述
<YOUR.DNS.NAME>你的域名地址

登录到你的主机,然后运行以下命令:

  1. docker run -d --restart=unless-stopped \
  2. -p 80:80 -p 443:443 \
  3. --privileged \
  4. rancher/rancher:latest \
  5. --acme-domain <YOUR.DNS.NAME>

选项 E:Localhost 隧道,不使用证书

如果你在开发或测试环境中安装 Rancher,且环境中有运行的 localhost 隧道解决方案(如 ngrok),不要生成证书。此安装选项不需要证书。

  • 使用 --no-cacerts 作为参数,以禁用 Rancher 生成的默认 CA 证书。

登录到你的主机,然后运行以下命令:

  1. docker run -d --restart=unless-stopped \
  2. -p 80:80 -p 443:443 \
  3. --privileged \
  4. rancher/rancher:latest \
  5. --no-cacerts

高级选项

使用 Docker 将 Rancher 安装到单个节点时,有如下几个可开启的高级选项:

  • 自定义 CA 证书
  • API 审计日志
  • TLS 设置
  • 离线环境
  • 持久化数据
  • 在同一个节点中运行 rancher/rancherrancher/rancher-agent

详情请参见本页

故障排除

如需了解常见问题及故障排除提示,请参见本页

后续操作

  • 推荐:检查单节点备份恢复。你可能暂时没有需要备份的数据,但是我们建议你在常规使用 Rancher 后创建备份。
  • 创建 Kubernetes 集群:配置 Kubernetes 集群