NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

如何在多 Kubernetes 集群和多租户环境中使用 Prometheus 监控

  • 2020-04-22
  • 本文字数:4099 字

    阅读完需:约 13 分钟

如何在多Kubernetes集群和多租户环境中使用Prometheus监控

JFrog Artifactory 是一个 artifacts 仓库管理平台,它支持所有的主流打包格式、构建工具和持续集成(CI)服务器。它将所有二进制内容保存在一个单一位置并提供一个接口,这使得用户在整个应用程序开发和交付过程中,能更易于上传、查找和使用二进制文件。


在本文中我们将介绍如何使用 Rancher 在 Kubernetes 集群上部署和管理 JFrog Artifactory。在看完本文后,你将会系统地了解 JFrog Artifactory OSS 的安装设置,并且能够按照同样的步骤在任何 Kubernetes 集群中安装 Artifactory OSS 或者它的商业版本。当然,我们还将向你展示如何在 Artifactory 中创建通用仓库并且向其中上传工件。


除了文章中所展示的之外,Artifactory 还有更多特性,在以后的文章中我们会更详细地介绍它们。


好了,那么我们开始吧!

使用的软件

本文使用了下列的软件工具:


  • Rancher v2.0.8

  • 运行在 Google Kubernetes Engine version 1.10.7-gke.2 上的 Kubernetes 集群

  • Artifactory helm chart version 7.4.2

  • Artifactory OSS version 6.3.2


如果以后本文更新了,请使用到时候的最新版本。


和 Kubernetes 中的其他工具一样,我们有多种方法来安装 Artifactory。这里我们将使用 Helm chart,Helm 提供了一种给应用程序安装命令打包及分享给他人的方式。你可以把它想象成服务于 Kubernetes 的包管理者。在 Rancher Catalog(应用服务目录)中,Rancher 集成了 Helm,在 Catalog 中你只需要点击几下就可以部署任何 Helm 支持的应用程序。除此之外 Rancher 还有其他特点,包括:


  • 一个简单直观的 Web 界面

  • 统一纳管所有云上、所有发行版、所有 Kubernetes 集群

  • 一个单一视图展示所有托管的集群

  • 开箱即用的集群监控

  • 工作负载、基于角色的访问控制(RBAC)、策略和项目管理

  • 所有 Kubernetes 的功能都不需要在本地安装任何软件

安装 Rancher

注意:如果你已经有了 Rancher v2 Server 和 Kubernetes 集群,直接可以跳过这部分,直接进入安装 JFrog Artifactory 的教程部分。


Rancher 非常强大,它能够在任何地方管理 Kubernetes 集群,因此我们将在 GCE 实例上以独立模式启动 Rancher Server,使用它在 GKE 中部署 Kubernetes 集群。


在独立模式下启动 Rancher Server 非常容易——因为它是 Docker 容器,在启动容器之前,我们需要一个计算实例来运行它,那么我们用下面的命令启动:



请你根据自己的部署修改 project 以及 zone 参数。


几分钟之后你应该能看到实例已经准备好了。



记录下来 EXTERNAL_IP 地址,稍后连接 Rancher Server 的时候你可能会用到。


计算节点启动并运行之后,我们通过 GCE 的 CLI(命令行接口)SSH 到它。



同样,注意调整 project 和 zone 参数,在你用不同的 name 或者在不同的 zone 启动节点时它们会变化。


连接之后,运行下面的命令安装一些依赖包并且安装 Docker CE。Rancher Server 是一个 Docker 容器,如果想要继续安装的话我们就需要用到 Docker 了。



有了这些之后,我们就可以部署 Rancher 服务器了。在第一次启动容器时,Docker Engine 会从 Docker Hub 中获取容器镜像,在启动容器之前先将其保存在本地。以后容器要启动时,就直接使用本地的镜像,这样速度会更快。


使用下面的命令控制 Docker 启动 Rancher Server 容器,并监听主机上的 80 和 443 端口



如果一切正常,在返回提示符之前 Docker 会打印出下载的状态,接着是新的容器 ID。



恭喜你!你已经成功启动了一个 Rancher Server 实例。


在浏览器中输入刚刚你记录下来的 EXTERNAL_IP 地址,你需要接受 Rancher 默认安装的 self-signed 证书。这之后,会弹出欢迎界面,设置密码(记住它!)接着继续下一页。



在这一页面上你需要设置 Rancher Server 的 URL。在生产部署中这可能是一个主机名,比如 rancher.yourcompany.com,但是如果你使用的是 demo server,可以直接使用上面的 EXTERNAL_IP 地址。



点击 Save URL 之后,会进入到 Clusters 页面,从这里开始我们就可以开始部署自己的 Kubernetes 集群了。

使用 Rancher 来部署一个 GKE 集群

Rancher 可以部署、管理来自任何地方的 Kubernetes 集群。这些集群可以来自 Google、Amazon、Azure、阿里云、华为云、腾讯云等等,可以在云节点上、数据中心里,甚至是运行在你笔记本上的 VM 中。这是 Rancher 最出色的一点。这次我们会使用到 GKE。在点击 Add Cluster 之后,选择 Google Container Engine。


针对本 demo,将 name 设置成 jfrog-artifactory。


要创建集群,Rancher 需要访问 Google Cloud Platform 的权限。这些权限可以通过 Service Account 的私钥 JSON 文件获得。如何产生它呢,首先找到 service account 的 name(根据你的情况修改 project 的 name):



输出的 service account 会代替<SA>。复制整个地址并把它用到下面的命令:



这样会在当前文件夹下创建一个名为 key.json 的文件。这就是 Service Account 私钥,Rancher 将用它来创建集群:



你可以把文件的内容粘贴到文本框中,也可以点击 Read from a file,选择 key.json 文件。Rancher 将使用该信息生成一个页面,在页面中配置你的新集群:



设置你想要的 Zone、Machine Type、Node Count 以及 Root Disk Size。当然你可以参考上图 demo 中使用的默认值。


点击 Create ,集群就会部署到 GKE 上,一切 ok 后你可以在 UI 界面上看到它已经是活跃状态的了。


安装 JFrog Artifactory

接下来我们将通过 JFrog 的 Helm chart 仓库来安装 Artifactory。Helm charts,就像 OS 包管理系统一样,在 Kubernetes 环境中提供给你稳定的部署容器应用程序的方式,并且让你可以更新或者回滚应用程序。chart 保证你给容器安装了特定的版本或者标记,在应用程度有多个组件的情况下,Helm chart 能够确保你的全部组件都安装了正确的版本。

安装 JFrog Helm 仓库

Rancher 在其应用程序目录中附带了一个 Helm charts 库,不过为了满足 Rancher 用户对灵活性的要求,你还可以安装任何第三方的 Helm 仓库来部署这些应用程序到集群中。我们今天将使用 JFrog 仓库。


在 Rancher 的 Global Cluster 视图中,单击 Catalogs,接着点击 Add Catalog,在弹出的窗口中,输入一个名称,比如 jfrog-artifactory,然后输入官方 JFrog 仓库的位置。



点击 Create ,JFrog 仓库就会出现在自定义目录的列表中了。


部署 Artifactory

我们接着部署 Artifactory。在 Global 视图中,选择 jfrog-artifactory 集群下的默认项目:



进入默认项目后,选择 Catalog Apps,点击 Launch。Rancher 将从 Application Catalogs 中显示可用于安装的应用程序。这里你可能发现 artifactory-ha 出现了两次,一次是作为合作伙伴提供的 chart 出现在 Rancher 附带的默认应用程序库中,另一次是来自 JFrog 仓库本身。我们安装 Helm 仓库是因为我们想安装常规的、非 HA 的 Artifactory,我们就喊它 artifactory。所有目录下的应用程序都指明了它们来自哪个库,所有在多个库中都有 chart 的情况下,你仍然可以选择安装哪个库



当你选择 View Details 时,你可以更改有关如何安装应用程序的选项。在默认情况下,此目录项将部署已授权的 Artifactory 商业版本,为此你需要证书。如果你已经拥有证书,那么可以保留默认选项;但是,我们想安装 OSS 版本,所以我们将更改 chart 安装的镜像。


我们在 Configuration Options 界面进行操作,选择 Add Answer,设置好 artifactory.image.repository 的变量名以及 docker.bintray.io/jfrog/artifactory-oss 的值。



现在,当你点击 Launch,Rancher 就会把 Artifactory 部署到你的集群上。



当安装完成后,红色的进度条会变更为绿色。这时如果你点到 artifactory 上,它会展示 Rancher 给你创建好的资源。在本例中,它在 Kubernetes 中创建了三个工作负载,三个服务,一个卷以及一个加密。


选择 Workloads,你可以看到它们都在运行:


解决 Pending Ingress

在本文发布时,出现了一个 bug 导致 Ingress 一直是 Pendding 状态。如果你在单击 Load Balancing 时看到这一点,请你阅读解决方案。



想要解决 pendding Ingress 问题,我们需要创建 Ingress 能发送流量的服务。点击右上角的 Import YAML ,在打开的窗口中,粘贴下面的信息,然后单击 Import


访问 Artifactory

现在在 WordLoads 界面,artifactory-artifactory-nginx 工作负载下会显示出用于查看 443/tcp 和 80/tcp 端口的可点击链接:



当你选择 443/tcp 时,它会在浏览器的新标签页中打开 Artifactory UI。因为默认情况下它使用了 self-signed 证书,你的浏览器可能会弹出一个警告,要求在执行之前接受证书。


让 Artifactory 工作起来

现在你已经有了一个功能齐全的二进制工件仓库可供差遣。过程不是很复杂不是吗!接下来在开始使用它之前,还需要进行一些配置。


首先,需要设置管理密码。当它询问有关代理服务器的信息时,除非你已经将它部署到需要代理配置的位置上了,否则就选择 skip。创建一个通用仓库,选择 Finish。


现在,我们来快速过一下一些基本用法。


首先,我们上传之前用于创建 Artifactory 安装的 helm chart。


在左侧菜单中选择 Artifacts ,可以看到刚刚创建的通用仓库。选择它,然后在右上角选择 Deploy ,将 Helm chart 的 zipfile(或任何其他文件)上传到仓库中。



等部署完毕之后,你就能在仓库中的 Tree 选项下看到它了。



虽然这只是对 Artifactory 的一个简单测试,但它已经是完全能使用的了。


你可以将 Artifactory 用于二进制工件存储和分发,并使用 Rancher 轻松地管理工作负载、集群以及与部署本身相关的内容。

清理

如果你已经完成了本文中的 demo,那么就可以从 Rancher 的 Global Cluster 视图中删除 Kubernetes 集群。这步操作将会从 GKE 中把它移除掉。这之后,你就可以直接从 GCE 中删除 Rancher Server 的实例了。

关闭

JFrog Artifactory 非常的强大。每天都有大量的组织使用它,掌握快速且安全地将它部署到 Kubernetes 集群中的能力是非常有用的。


根据他们的文献所述,Artifactory 让用户可以“快速发布或快速清除”。同样的,Rancher 让你能快速部署,同时控制资源和周围环境的安全性。你可以在世界任何地方构建、部署、拆卸、加密、监控 Kubernetes 集群以及与之交互,而所有的这些都只来自于一个简单的、方便的、安全的接口。


没什么比这更容易的了!


2020-04-22 18:32665

评论

发布
暂无评论
发现更多内容

校招前端二面常考react面试题(边面边更)

beifeng1996

React

如何通过C#/VB.NET将格式应用于 Word 中的字符

在下毛毛雨

C# .net word文档 字符格式

深圳大数据培训机构怎么选

小谷哥

web前端技术应该怎么规划学习?

小谷哥

OpenHarmony系统使用gdb调试init

OpenHarmony开发者

openha

功能上新|一键归因分析,快速洞察指标波动原因

Kyligence

指标中台 归因分析

腾讯前端二面高频手写面试题总结

helloworld1024fd

JavaScript

前端培训机构如何学习开发技术

小谷哥

2023我的前端面试小结

loveX001

JavaScript

ARM 算子性能优化上手指南

MegEngineBot

深度学习 开源 性能优化 MegEngine

React循环DOM时为什么需要添加key

beifeng1996

React

前端高频vue面试题总结

bb_xiaxia1998

Vue

经常会采坑的javascript原型应试题

loveX001

JavaScript

前端一面常考react面试题

beifeng1996

React

如何在Java程序中合并和拆分Excel文档

Geek_249eec

Java Excel 工作表

校招前端一面必会vue面试题指南

bb_xiaxia1998

Vue

ZooKeeper 避坑实践:SnapCount 设置不合理导致磁盘爆满,服务不可用

阿里巴巴云原生

zookeeper 阿里云 云原生

阿里云前端专家冯军:前端用户体验该如何优化

云布道师

阿里云

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

Rancher RFO 正式 GA

openEuler

Linux 开源 Kubernetes 操作系统 rancher

一种多维数据库的数据事务专利解读

元年技术洞察

数据中台 数字化转型 专利解析 多维数据库

海量数据同步首选 SeaTunnel Zeta 引擎正式发布!

Apache SeaTunnel

大数据 开源 apache 社区 Apache SeaTunnel 数据集成平台

js函数柯里化-面试手写版

helloworld1024fd

JavaScript

2022年是最烂的一年吗?我的2022年终总结

Zhendong

总结 年终总结 2022年终总结

深入理解JS作用域链与执行上下文

loveX001

JavaScript

假如问:你是怎样优化Vue项目的,该怎么回答

bb_xiaxia1998

Vue

2023我的前端面试小结

loveX001

JavaScript

尚硅谷&腾讯云EMR实时数仓教程发布

小谷哥

React的useLayoutEffect和useEffect执行时机有什么不同

beifeng1996

React

注意这八个容易损坏LED显示屏的情况

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

基于ERNIELayout&pdfplumber-UIE的多方案学术论文信息抽取

汀丶人工智能

nlp 信息抽取 2022年终总结 2023新展望

如何在多Kubernetes集群和多租户环境中使用Prometheus监控_文化 & 方法_Rancher_InfoQ精选文章