在阿里云搭建Rancher2.0和Kubernetes集群
Posted TypeScript全栈开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在阿里云搭建Rancher2.0和Kubernetes集群相关的知识,希望对你有一定的参考价值。
Rancher2.0是Kubernetes集群的管理工具,本文将介绍如何在阿里云安装Rancher2.0和Kubernetes集群,主要包含以下内容
阿里云环境准备
安装Rancher2.0(包括在阿里云上可能遇到的坑)
使用阿里云NAS做StorageClass
安装OpenVPN,以在本地直连POD网络
部署MongoDB、mysql、Redis集群
环境准备
阿里云基础设施准备
ECS 2台
至少2核4GB
使用UBuntu16.04系统
注意:主机名不能包含大写字母
NAS 1个 (用于
PersistenceVolume
和StorageClass
)SLB 1个
弹性IP(EIP) 1个
网络设置
ECS使用阿里云VPC网络
IP网段为 10.0.0.0/24
主机名统一为 vpc01/vpc02/… (vpc01即为10.0.0.1,依次顺延)
安装 Docker
安装 Docker 17.03
curl https://releases.rancher.com/install-docker/17.03.sh | sh
设置阿里云镜像加速器
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
此处有坑注意:
Rancher Server 不能使用默认的80/443端口(因为Ingress默认使用这些端口)
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页面刷新就可以正常访问了。
新建集群
进入Rancher管理界面,点击右上角的
Add Cluster
。新建一个
Custom
的集群,下面的etcd
、Controller
、Worker
都勾选。接着将上面的目录复制到每台机器都执行一次
等待集群初始化完毕(全都绿了就完了)。
设置基于NAS的StorageClass
我们打算使用阿里云的NAS做容器的持久化数据存储。
由于Rancher并没有自带基于NFS的StorageClass Provisoner,所以我们要自行安装一个。
安装 nfs-client-provisioner
按照nfs-client-provisioner的说明配置即可,步骤如下:
从左上角进入Project,点击右侧的Import YAML
,按以下顺序依次导入即可。
创建RBAC
deploy/auth/serviceaccount.yaml
deploy/auth/clusterrole.yaml
deploy/auth/clusterrolebinding.yaml
记得要修改clusterrolebinding.yaml
第8行的namespace
。
部署Provisioner
deploy/deployment.yaml
记得要修改其中的:PROVISIONER_NAME
、NFS_SERVER
、NFS_PATH
,以及volumes
里的NFS配置信息。
配置StorageClass
进入
Rancher
->Cluster
->Storage
->Storage Classes
。点击右侧
Add Class
name随便填
Provisioner填写为刚才
deploy/deployment.yaml
中配置的PROVISIONER_NAME
点击
Save
最后,点开右边的三个点,
Set as Default
。
部署OpenVPN
进入
Catalog
安装
openvpn
设置Answer
service.type=NodePort service.nodePort=31888
Execute Shell,初始化Client证书
/etc/openvpn/setup/newClientCert.sh 用户名
Upgrade
openvpn
,打开priviledge
权限进入新的Pod的Shell,执行以下命令
echo 1 > /proc/sys/net/ipv4/ip_forward && sysctl -p
部署MongoDB集群
进入Catalog
安装Mongodb-Replicaset
配置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集群
进入
Catalog
安装
mysqlha
配置Answer
xtraBackupImage=registry-vpc.cn-beijing.aliyuncs.com/honghegame/gcr.io-google-samples-xtrabackup:latest
由于国内gcr.io
无法访问,所以需要通过以上Answer修改为阿里云镜像。
部署Redis集群
进入
Catalog
安装
redis
(Library中的即可)按照设置设置即可
以上是关于在阿里云搭建Rancher2.0和Kubernetes集群的主要内容,如果未能解决你的问题,请参考以下文章
2020-06-09【阿里云ECS搭建minikube和Istio1.6】(2)
本人在阿里云购买了一个域名和服务器,域名和服务器要如何搭建才能运行呢?