查看原文
其他

在阿里云搭建Rancher2.0和Kubernetes集群

k8w TypeScript全栈开发 2019-12-18

Rancher2.0是Kubernetes集群的管理工具,本文将介绍如何在阿里云安装Rancher2.0和Kubernetes集群,主要包含以下内容


  • 阿里云环境准备

  • 安装Rancher2.0(包括在阿里云上可能遇到的坑)

  • 使用阿里云NAS做StorageClass

  • 安装OpenVPN,以在本地直连POD网络

  • 部署MongoDB、MySQL、Redis集群

环境准备

阿里云基础设施准备

  1. ECS 2台

    1. 至少2核4GB

    2. 使用UBuntu16.04系统

    3. 注意:主机名不能包含大写字母

  2. NAS 1个 (用于PersistenceVolumeStorageClass

  3. SLB 1个

  4. 弹性IP(EIP) 1个

网络设置

  1. ECS使用阿里云VPC网络

  2. IP网段为 10.0.0.0/24

  3. 主机名统一为 vpc01/vpc02/… (vpc01即为10.0.0.1,依次顺延)

安装 Docker

安装 Docker 17.03

curl https://releases.rancher.com/install-docker/17.03.sh | sh

设置阿里云镜像加速器

  1. 去 http://dev.aliyun.com 获取专属加速器地址

  2. 执行下面的命令(记得替换加速器地址)

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["你的专属加速器地址"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

创建自定义系统镜像(可选)

至此,已经创建好了一个纯净的 UBuntu 16.04 + Docker 17.03 的系统。
如果你想为了以后增加机器方便,那么可以将现在的系统盘创建为一个自定义镜像。

准备其它机器

如果你创建了自定义镜像,那么直接用创建好的镜像初始化其它机器。
否则,按上面的步骤,在其它机器上各执行一次。

安装 Rancher

我们计划 Rancher Server 安装在vpc01上,计划2台机器都作为k8s集群的Node节点和Ingress入口。

安装 Rancher Server

vpc01运行以下脚本来安装RancherServer。

sudo docker run -d --restart=unless-stopped \ -p 9999:443 \ -v /var/lib/rancher:/var/lib/rancher \--name rancher-server \ rancher/rancher

此处有坑注意:

  1. Rancher Server 不能使用默认的80/443端口(因为Ingress默认使用这些端口)

  2. Rancher Server 不能使用18080端口(nginx会占用)

阿里云安全组设置

由于我们映射了9999端口,所以需要在阿里云的安全组设置中,开放vpc01机器的9999端口。

初始化 Rancher 设置

至此,我们已经完成Rancher Server的安装。
现在可以通过https://IP:9999进入管理后台,进行初始化的设置。

证书错误问题

由于我们没有使用第三方的权威SSL证书,所以打开时会报证书错误的问题。
点开高级,选择继续前往……即可。

设置登录密码

跟着指示设置即可。

设置 Rancher Server URL

由于我的集群都部署在内网,后续为安全起见,所以此处填写内网IP。

开启Catalog

此处有坑请注意

有可能出现诸如“WebSocket连接失败”之类的问题,其实都是因为证书错误导致的。
按下F12打开Chrome控制台,如果看到红色的报错(ERR_CERT_ERROR之类的),那么就新建一个TAB打开加载失败的文件,重复上面“证书错误问题”的解决方式。
再回到Rancher页面刷新就可以正常访问了。

新建集群

  1. 进入Rancher管理界面,点击右上角的Add Cluster

  2. 新建一个Custom的集群,下面的etcdControllerWorker都勾选。

  3. 接着将上面的目录复制到每台机器都执行一次

  4. 等待集群初始化完毕(全都绿了就完了)。

设置基于NAS的StorageClass

我们打算使用阿里云的NAS做容器的持久化数据存储。
由于Rancher并没有自带基于NFS的StorageClass Provisoner,所以我们要自行安装一个。

安装 nfs-client-provisioner

按照nfs-client-provisioner的说明配置即可,步骤如下:
从左上角进入Project,点击右侧的Import YAML,按以下顺序依次导入即可。

创建RBAC

  1. deploy/auth/serviceaccount.yaml

  2. deploy/auth/clusterrole.yaml

  3. deploy/auth/clusterrolebinding.yaml

记得要修改clusterrolebinding.yaml第8行的namespace

部署Provisioner

  1. deploy/deployment.yaml

记得要修改其中的:PROVISIONER_NAMENFS_SERVERNFS_PATH,以及volumes里的NFS配置信息。

配置StorageClass

  1. 进入 Rancher -> Cluster -> Storage -> Storage Classes

  2. 点击右侧 Add Class

  3. name随便填

  4. Provisioner填写为刚才deploy/deployment.yaml中配置的PROVISIONER_NAME

  5. 点击Save

  6. 最后,点开右边的三个点,Set as Default

部署OpenVPN

  1. 进入Catalog

  2. 安装openvpn

  3. 设置Answer

service.type=NodePort service.nodePort=31888
  1. Execute Shell,初始化Client证书

/etc/openvpn/setup/newClientCert.sh 用户名
  1. Upgrade openvpn,打开priviledge权限

  2. 进入新的Pod的Shell,执行以下命令

echo 1 > /proc/sys/net/ipv4/ip_forward && \ sysctl -p

部署MongoDB集群

  1. 进入Catalog

  2. 安装Mongodb-Replicaset

  3. 配置Answer

auth.enabled=trueauth.adminUser=root auth.adminPassword=password auth.key=key installImage.repository=registry-vpc.cn-beijing.aliyuncs.com/honghegame/k8s.gcr.io-mongodb-install installImage.tag=latest

由于国内gcr.io无法访问,所以需要通过以上Answer修改为阿里云镜像。

安装完成后,mongodb-replicaset-test这个Pod会报错,原因不明。
但由于不影响实际使用,直接删除即可。

部署MySQL集群

  1. 进入Catalog

  2. 安装mysqlha

  3. 配置Answer

xtraBackupImage=registry-vpc.cn-beijing.aliyuncs.com/honghegame/gcr.io-google-samples-xtrabackup:latest

由于国内gcr.io无法访问,所以需要通过以上Answer修改为阿里云镜像。

部署Redis集群

  1. 进入Catalog

  2. 安装redis (Library中的即可)

  3. 按照设置设置即可


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存