微服务下的容器部署和管理平台Rancher
Rancher是什么
Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
通俗的将它就是为了更方便的管理docker。
为什么需要Rancher
在原来, 如果我们需要做一个分布式集群我们需要学习一全套的框架并编码实现如 服务发现, 负载均衡等逻辑, 给开发者造成很大的负担, 不过好在现在有Docker以及他周边的一些技术能在上层解决这些问题, 而应用该怎么开发就怎么开发.
当你选择使用Docker技术栈的时候, 会发现在生产环境中不光光是 docker run
就能解决的. 还需要考虑比如docker之间的组网, 缩扩容等问题, 于是你去学习kubernetes, 发现好像有点复杂啊, 有没有更傻瓜化一点的? 那就是rancher了.
使用Rancher
rancher-server
rancher-server 主要负责图形化管理主机容器, 并且储存用户的数据(账号, 主机信息, 应用(task)等).
他是一个管理者, 管理工作机应该启动什么容器.
启动
启动一个单节点server, 并将数据库数据挂载到宿主机, 保证容器删除后数据还在.
sudo docker run -d -v /workspace/rancher/mysql:/var/lib/mysql --restart=unless-stopped -p 8081:8080 rancher/server
稍等片刻就能通过访问8081端口进入到Rancher UI
因为rancher前端使用ws和后端通讯, 所以如果使用nginx作为代理访问这个服务器需要这样设置:
server {listen 80;server_name rancher.bysir.store;location / {proxy_set_header Host $http_host;proxy_pass http://127.0.0.1:8081;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade"; } }
配置
添加登陆账号
在"ADMIN->Access Contor"添加一个管理员用于登陆, 我使用的是本地认证方式, 没遇到什么问题就不赘述了.
添加新环境
在rancher-server中默认内置了一个Cattle Template的环境, 我也不知道Cattle是个啥, 我们还是用Kubernetes吧, 眼熟.
点击Add Environment按钮
![](http://upload-images.jianshu.io/upload_images/3447621-31b9ea3cb23768ab.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
这段话我们用中文版本来看:
Rancher 支持将资源分组归属到多个环境。 每个环境具有自己独立的基础架构资源及服务,并由一个或多个用户、团队或组织所管理。
例如,您可以创建独立的“开发”、“测试”及“生产”环境以确保环境之间的安全隔离,将“开发”环境的访问权限赋予全部人员,但限制“生产”环境的访问权限给一个小的团队。
先建一个Test试一试
![](http://upload-images.jianshu.io/upload_images/3447621-9c34494085a4b60d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
在这个页面点击添加一个主机
![](http://upload-images.jianshu.io/upload_images/3447621-a8a56538af1fe3fe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp)
rancher-agent
rancher-agent 也就是主机, 是用来执行具体工作的机器
按照提示来添加主机:
![](http://upload-images.jianshu.io/upload_images/3447621-c3052fc74fbebd53.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/923/format/webp)
在第四步的输入框中填写上主机的ip地址, 在这里我填写的是10.117.195.190
, 这个ip使用来给ipsec组网的, 所以需要暴露UDP的500和4500端口.
rancher在这里叫你添加的是公网ip, 但在实际生产环境中, 不可能每个主机都有公网ip并且也不应该使用公网建立网络, 所以我们在这里填写内网(私网)ip地址, 只要保证当你添加多个主机的时候他们之间的UDP500和4500能互相访问.
PS: 可以通过以下代码测试端口连通性:
$ nc -u -z -v 10.25.170.125 4500
Connection to 10.25.170.125 4500 port [udp/ipsec-nat-t] succeeded!
PPS: 阿里的只需要主机在同一个安全组就能实现内网所有端口互通
复制第五步的代码到主机上执行, 执行之后可以通过以下代码看它的运行情况:
docker logs rancher-agent
稍等片刻你就能在rancher的web页面"INFRASTRUCTURE->Hosts"下找到你刚刚添加的主机.
这时候能看到这个主机的很多服务(容器)正在启动, 不出意外的话能看到这个样子的主机:
![](http://upload-images.jianshu.io/upload_images/3447621-d1ea13af3618e040.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/258/format/webp)
疑难杂症
如果遇到红色无法启动的容器, 首先查看日志, 找找有用信息, 然后尝试以下操作:
- 按照错误日志排错, 通过: 经验(玄学), google, issue
- 手动点击重启这个错误容器
- 看一下列出的我遇到的错误(特别是 重新部署某个主机)
重新部署某个主机
当我们在测试或者某个主机出现某些难以解决的错误的时候, 会经常使用重启大法
, 注意在重新将这个主机加入到rancher集群之前需要清理到原来运行的container以及挂载出来的volume, 否则的话, 当再次启动rancher/agent之后你会发现很多服务启动不了, 如etcd, kubernetes; 一般来说, 只需要清理 kubernetes留下来的东西就好了.
一般如下操作
docker volume rm etcd
, 如果提示它被某个容器使用了就停止掉这个容器后再操作rm -rf /var/etcd/backups
, 删除etcd挂载出来的数据
参考这篇官方文章: 清理主机
ipsec unhealthy
ipsec会将所有主机组网, 当其中有某个主机连接不上的时候其他ipsec节点也会unhealthy, 这时候就需要检查是那个主机的问题, 看其UDP的500和4500端口是否能与其他主机互相访问.
ipsec 无法启动
ipsec会向rancher-server机器请求得到其他主机的ip地址以实现组网.
但我通过查看ipsec的错误日志发现这个ipsec容器访问不到rancher-server机器的外网地址, 登陆容器执行命令发现curl http://www.baidu.com
都报错, 这种情况下... 我选择重启docker(没办法了啊, 如果读者有解决方案感谢告诉我哦).
但请谨慎操作呀 service docker restart
会重启所有的容器, 这将导致所有服务不可用.
etcd无法启动
好像etcd无法启动和ipsec没有正常运行有关, 所以先解决ipsec的问题
在上面说了记得删除volume etcd
更多的可以参考这篇官方文章: 灾难恢复
etcd节点无限重启
如果你在"INFRASTRUCTURE->Containers"中看到红色的etcd容器并且在不断重启, 不要惊讶.
作者:bysir
链接:https://www.jianshu.com/p/3a492440c89b
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
转载于:https://www.cnblogs.com/fengli9998/p/10384194.html
微服务下的容器部署和管理平台Rancher相关推荐
- 微服务下蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...
更多内容关注微信公众号:fullstack888 在有关微服务.DevOps.Cloud-native的迭代过程中,不可避免的需要"上线",上线就需要部署,需要部署就意味着有修改, ...
- 微服务网关,安全的API管理平台
API网关是指在系统与系统之间或者客户端与服务端之间需要进行通信时需要去协调API的调用的一个中间介质. API的作用 任何一个应用系统如果需要被其它系统调用,就会暴露API,而API代表的是一个一个 ...
- 微服务下的APM全链路监控
https://opentalk.upyun.com/333.html 2017 年 10 月 29 日,又拍云 Open Talk 联合 Spring Cloud 中国社区成功举办了"进击 ...
- re.containerbase.startinternal 子容器启动失败_微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)...
走过路过不要错过 点击蓝字关注我们 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件 ...
- docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南
迁移到微服务与DevOps,改变软件开发效能! 一如既往,技术行业正处于巨大的转变之中,物联网.软件定义网络以及软件即服务(SaaS)仅为其中几例.由于这些创新,对能够改进应用开发和部署过程的平台和架 ...
- 基于微服务和Docker容器技术的PaaS云平台架构设计
本文讲的是基于微服务和Docker容器技术的PaaS云平台架构设计[编者的话]在系统架构上,PaaS云平台主要分为微服务架构.Docker容器技术.DveOps三部分,这篇文章重点介绍微服务架构的实施 ...
- Spring Boot与Docker(一):微服务架构和容器化概述
本文讲的是Spring Boot与Docker(一):微服务架构和容器化概述,[编者的话]本篇是<使用Spring Boot和Docker构建微服务架构>系列四部曲的第一篇,本篇将会对我们 ...
- 基于微服务下的持续交付环境
背景 随着互联网行业的兴起,敏捷开发.Devops被越来越多的公司提及或实施,力求有效地降低交付过程所耗费的成本并提高交付的效率. 持续交付通过建立自动化的构建.测试.部署机制,实现业务快速上线的过程 ...
- 【微服务架构】 8 部署与配置
8 从开发环境到生产环境 本节讨论如何构建微服务.部署微服务.通过这节内容,促进开发环境到生产环境的平滑移动: 一个微服务必须独立部署 一个新版本的微服务应该在一分钟内部署完毕,而不是一个小时 一个微 ...
最新文章
- 快速android app开发,快速學會開發 Android App
- iOS应用模块化的思考及落地方案(一)模块的划分及模块化工作流程
- LeetCode 140. 单词拆分 II
- 从《爱莉克斯》说起,聊聊当前 VR 游戏设计的“困境”与“尝试”
- linux centos安装git,centos下两种方法安装git–转载
- ASP.NET 网页之间传递值
- sql更改完整模式报错_SQL的完整形式是什么?
- Python operator.not_()函数与示例
- matlab求根的原程序,MATLAB求根程序求帮助
- Apache Common-cli简单使用
- classification、part segmentation、semantic segmentation、instance segmentation
- RedMonk最新编程语言排行榜出炉:JS霸榜,C++下降至第7
- kubernetes视频教程笔记 (35)-使用Helm部署metrics-server
- 肯辛通VeriMark指纹识别器 驱动下载 与 安装指南(含视频教程) 型号:K67977 K64704 K62330
- web项目的中英文切换功
- 16年6月查询四六级的成绩页面问题
- 计算机装机拆机教程,DIY装机教程-电脑拆机图文教程详解
- 其实我(微笑哥)是个正经男人!
- 计算机类sci期刊影响因子排名,【科研】全球最新SCI期刊影响因子排名:第一名187.040!...
- java微信公众号支付开发平台_微信公众号支付demo,微信公众号支付Java DEMO
热门文章
- DSP5509项目之用FFT识别钢琴音调(1)
- 颜色字符串转换(正则)
- Python 3 利用机器学习模型 进行手写体数字检测
- 问题和任务包003.使用报告.数据可视化.PowerBI.微软的新武器
- 15.用PHP写出显示客户端IP与服务器IP的代码,如何防止用户使用代理的情况?[添加更多详情]...
- 模块化编程AMDCommonJS
- Mysql Federated Server 示例
- Server Application Unavailable
- JVM启动的时候,默认加入的属性
- Apache HBase快照介绍