# 使用 Rancher 在阿里云上部署 Kubenretes 集群

如果您已经购买了阿里云的 ECS，那么您可以使用 Rancher 很方便的构建起一套 Kubernetes 集群用于测试及小规模使用。使用 Rancher 可以自动和可视化的完成 Kubernetes 集群的安装工作，省去的繁琐的人工安装过程，然您快速投入的业务开发中。下文根据 Rancher 2.x 安装 Kubernetes 集群。

**注：阿里云上已支持**[**容器服务 ACK**](https://cn.aliyun.com/product/kubernetes)**，如果您需要高性能、企业级的 Kubernetes 服务不妨考虑一下。**

## 准备

要想使用阿里云 ECS 和 Rancher 直接搭建一套 Kubernetes 集群，需要准备以下条件：

* 开通了公网 IP 的 ECS
* ECS 规格建议至少 4C8G
* ECS 使用的阿里云的经典网络

### 安全组规则

组成 Kubenretes 集群的 ECS 位于阿里云经典网络中，需要为集群配置安全组规则如下：

* UDP/8472 端口：阿里云默认禁止了 UDP，我们使用的 flannel 网络插件的VXLAN 模式，需要将 ECS 的安全组设置 UDP/8472 端口开放
* TCP/6443：Kubernetes API Server
* TCP/2379：etcd
* TCP/2380：etcd
* TCP/80：http
* TCP/443：https

## 步骤

假设现在我们有两个节点 master 和 node，请参考 [Rancher Quick Start Guide](https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/deployment/quickstart-manual-setup/) 安装 Rancher。

![Rancher 界面](https://4227727852-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgrbEKquD93OLsW4hFlF6%2Fuploads%2Fgit-blob-54af2054b1097a8139ebb2792013fcffac5ccb83%2Francher-web.jpg?alt=media)

**Master**

先在 Master 节点安装 Rancher server、control、etcd 和 worker。

选择网络组件为 Flannel，同时在自定义主机运行命令中选择主机角色、填写主机的内网和外网 IP。

![自定义节点信息](https://4227727852-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgrbEKquD93OLsW4hFlF6%2Fuploads%2Fgit-blob-ed2326bad8e761d05bca2235414906c63e99757a%2Francher-customize-node.jpg?alt=media)

```bash
docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
```

Rancher 将自动创建 Kubernetes 集群，并默认在 80 端口运行 web server。

**Node**

添加 Node 节点时只需要在 Rancher 的 web 界面上找到您刚安装的集群并选择【编辑集群】并选择节点角色为 Worker 即可增加一台 Kubenretes 集群节点。

## 集群交互

![Rancher 集群监控页面](https://4227727852-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FgrbEKquD93OLsW4hFlF6%2Fuploads%2Fgit-blob-0db573e3f94db0bec5667e0149e383606b168d51%2Francher-cluster.jpg?alt=media)

如果您习惯使用命令行与集群交互可以 Rancher 的 web 上找到集群首页上的 `Kubeconfig File` 下载按钮，将该文件中的内容保存到您自己电脑的 `~/.kube/config` 文件中。然后现在对应 Kubernetes 版本的 `kubectl` 命令并放到 `PATH` 路径下即可。

如果您没有在本地安装 `kubectl` 工具，也可以通过 Rancher 的集群页面上的 `Launch kubectl` 命令通过 web 来操作集群。

## 参考

* [Rancher - rancher.com](https://rancher.com/products/rancher/)
* [阿里云容器服务 ACK - aliyun.com](https://cn.aliyun.com/product/kubernetes)
