rancher2.x官网文档

Rancher2.x安装及k8s集群部署

rancher2.0构建kubernetes(K8S)集群

K8S 部署 Rancher 2.X 版本

最近在研究 kubernetes ,发现 rancher 是一个非常好用的容器管理平台,于是搭建这个小demo

Docker的安装

Centos7上安装docker

安装 Rancher

我是用 vagrant 部署了三台虚拟机:

  • 192.168.133.130 --> rancher 主机
  • 192.168.133.131 --> 部署 k8s master 节点
  • 192.168.133.132 --> 部署 k8s node 节点

执行以下命令即可完成 rancher 的搭建

sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v <主机路径>:/var/lib/rancher/ rancher/rancher:stable

之后,打开浏览器,输入https://<安装容器的主机名或IP地址>,您即可以访问Rancher Server的UI了.

331

进到来的主界面如上图所示(我已经成功搭建了一个集群)

注:我用的是 rancher v2.1.7 的版本

环境准备

参考官网的文章:基础环境配置

部署

332

成员角色集群选项 可以按需设置,反正我没有设置

接下来自定义主机运行的命令:

333

由于我是用 vagrant 搭建的几台虚拟机,因此这几台虚拟机的 NAT 地址是相同的,故在部署的时候可能会出现 duplicate node 错误,可以参考下面命令部署:

# master
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.7 --server https://192.168.133.130 --token d6jf698vpjknf77zkl2vd88fgw5pskjzwfmnwbxdwp685x8m662p78 --ca-checksum c25fc614ddd2b18a02bf5963182f8ab7b4db80f546ba00e8262efe0e56ea253f --internal-address 192.168.133.131 --address 192.168.133.131 --etcd --controlplane --worker

# worker 
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.7 --server https://192.168.133.130 --token 487d7vrknflrsk5gd5sbk78pdzfwnn92gz4rmtnmd9p7hnjgh2prxv --ca-checksum c25fc614ddd2b18a02bf5963182f8ab7b4db80f546ba00e8262efe0e56ea253f --internal-address 192.168.133.136 --address 192.168.133.136 --worker

关键的是要在运行命令中加上 --address 虚拟机ip 用来区分不同的虚拟机地址,否则基于我自己的情况,rancher 会用 绑定的 NAT 地址作为区分 node 的唯一标准

duplicate node 错误的解决:解决

您需要将--address 192.168.99.100 --internal-address 192.168.99.100添加到启动该节点的docker run命令中。Rancher 2.0(支持PRD)在用户界面中具有此选项。

重点还是要关注下 master 的节点,看看相关的网络插件是否成功获取。

正常的 master 节点所拉取的镜像如下所示:

346

之前就因为我选择的网络插件(calico) 的相关镜像没有成功获取到,所以报错:Runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized,相关解决的参考思路:kubernetes安装过程中遇到问题及解决
等待一段时间后,发现 4 个节点都部署成功了!

334

部署nginx服务

我之前已经成功部署了 nginx-test 的项目

335

添加项目

填写名称即可,其他按需添加

336

部署服务

选中该项目,部署服务

337

等待一段时间,结果如第一张图所示,非常简单!

部署minio服务

具体可参考这篇文章:通过K8S部署对象存储MinIO

343

从文件读取本地的部署 yaml 文件,点击导入即可

344

结果:

345

部署 Prometheus+Grafana 服务

Rancher 2.x 一键式部署 Prometheus + Grafana 监控 Kubernetes 集群

在项目的应用商店中找到 Prometheus

347

一键部署 prometheus

348

注:这张图的配置比较关键,如果没有配置好的话,后面的结果是看不到的

说明一下:

  • Container ImageUse Default Image 项我选择否,因为默认中有两个镜像,由于墙的问题我本地网络无法获取的到,所以这里需要修改 quay.io/coreos/kube-state-metricshuwanyang168/kube-state-metrics,修改 quay.io/coreos/grafana-watcherhuwanyang168/grafana-watcher,以上两个镜像对应的版本我已经上传到个人 Dockerhub 仓库。
  • Prometheus ServerHostname 我配置 Ingress 负载均衡域名为 my-prometheus.k8s.com,它会自动创建对应 Ingress,方便外部访问。
  • Grafana settingGrafana Admin password 项需要设置一下初始密码,方便登录 UI 页面。Hostname 我配置 Ingress 负载均衡域名为 my-grafana.k8s.com
  • AlertmanagerNodePort Http Port 项我设置为 30005,这样可以直接外部通过 NodePort 方式访问。

一切配置完毕,我们还可以点击预览,选择对应的模板,看下修改配置后的模板文件是怎样的,最后点击 “启动” 就会开始自动部署啦!稍等片刻,拉取镜像会费点时间,如果一切部署正常,在工作负荷、负载均衡、服务发现页面下 prometheus 命令空间下可以看到如下:

349

350

351

这时候发现所有 Prometheus 相关服务都部署成功了。还发现顺带把 grafana 也部署了,所以真省心。

访问 http://192.168.133.132:32116/

352

默认安装的 Grafana 已经配置好了 8 个 Dashboard,涉及到 Deployment、Nodes、Pods、Kubernetes Cluster Status 等监控仪表盘。

353

Kubernetes Capacity Planning

355

访问下 Prometheus 也是没问题的,不过这里要注意下虚拟机的时间和浏览器时间同步的问题,否则会有错误( datapoint not found)

356

354

部署 emqx 服务

EMQ X 消息服务器默认占用的 TCP 端口包括:

端口说明
1883MQTT 协议端口
8883MQTT/SSL 端口
8083MQTT/WebSocket 端口
8080HTTP API 端口
18083Dashboard 管理控制台端口

dockerhub 上找到 emqx , 配置文件如下所示:

357

成功部署后如下所示:

358

之后使用 emq 客户端 mqttx

359

新注册两个用户 testtest1 , 通过订阅相同的主题可以实现类似聊天的功能

360

其实安装和入门还是非常简单的!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐