在容器的江湖里,如果你没听过 k8s, 那可能你就 out 了,但原生的 k8s 对于程序员来说,是有一定门槛的。本文介绍的 Rancher 则作为一款完全开源的容器管理平台,它极大的降低了我们的使用门槛,那么本文将围绕 安装 + 使用 两个方面作一个入门介绍。
Rancher 介绍
Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher 可以轻松地管理各种环境的 Kubernetes,满足IT需求并为 DevOps 团队提供支持。
环境准备
最好的情况是有三台的服务器, 这样能看到集群的效果
安装 Docker
前面有介绍 Docker Installation 这里就不再赘述了
安装 Kubectl
这里有官方的安装文档, 但需要翻墙, 国内用户可以找下其他方式
Rancher 安装
选择一台机器来安装1
2
3
4
5
6docker run -d --restart=unless-stopped \
-p 8282:80 -p 8443:443 \
-v /home/rancher/data:/var/lib/rancher/ \
-v /home/rancher/log/auditlog:/var/log/auditlog \
-e AUDIT_LEVEL=3 \
rancher/rancher:stable
请按照自己的实际要求, 映射端口和数据卷
Rancher 配置
访问上一步选择安装的服务器 IP:8282
第一次打开, 会要求设置管理员密码
要求设置 Rancher Server URL, 这里要保证其他的 Rancher Agent 机器能够访问到
创建 K8s 集群
注意:
- 在集群注册后, 要耐心等待一段时间(比较长, 笔者预计10min), 这个期间集群节点的状态会出现很多异常, 最终会显示 Active 状态.
安装 Webhooks
注意:
- 邮件的配置可以忽略
- webhook_url 为 webhooks 对外服务的IP:Port
- Jenkins 请使用 自定义webhooks 格式, 提交的 json 中 repository.namespace 为 harbor 项目
- webhooks-conf 的json 配置实际上是一个表达式的验证, Webhooks 中的参数与配置的对应, 即可触发
- APP_NS 对应的 Rancher 的命名空间
- APP_WORKLOAD 对应的是 部署类型
- APP_CONTAINER 对应的是 容器名称
使用心得
- 在传统的 docker-compose 中, 如果我们依赖某个服务, 一般会使用 link, 例如 app 依赖 db, 那么在 rancher 中我们可以将数据库服务命名为 db, app 与 db 在同一个命名空间里的话, 会自动解析 db, 应用内部可以直接使用 db
- 自动化部署集成思路
- Gitlab : Commit 触发 Jenkins Webhooks
- Jenkins : 自动编译及打包镜像 推送到 Harbor, 触发 Rancher Webhooks
- Harbor : 存储及分发镜像
- Rancher : 部署 APP 集群, 接收 Webhooks 自动升级镜像