大数据&云计算JFrog如何在生产环境玩转Kubernetes?( 二 )


在过去两年中 , JFrog着手在Kubernetes的三个大型公有云(AWS , GCP和Azure)上部署和管理JFrog SaaS应用程序 。 这个过程 , JFrog收获了很多有益和重要的经验教训 。
为了轻松管理Kubernetes上的应用程序部署 , JFrog使用了Helm 。 Helm是用于管理Kubernetes软件包的工具 , Helm图表有助于定义 , 安装和升级Kubernetes应用程序 。 JFrog在Helm中心发布并维护其所有产品的官方Helm图表 , 以供其客户 , 社区和其SaaS解决方案使用 。
JFrog如何在其内部环境中使用Kubernetes?
出于开发目的 , JFrog具有CI/CD流程 , 可在Kubernetes上安装JFrog产品 。 根据需要 , 开发人员可以启动此过程并指定要安装的分支版本 , 而无需应用程序主版本或分支版本 。 部署过程使用JFrog官方Helm图表 , 结果是一个隔离的Kubernetes命名空间 , 上面安装了所有应用程序 。
大数据&云计算JFrog如何在生产环境玩转Kubernetes?
本文插图
为了进行登陆和试生产 , 他们拥有多个托管集群 , 每个云供应商至少一个集群 , 并且它们正在运行JFrog产品安装的完整CI/CD流程 , 以及Kubernetes基础架构和工具 , 以便在运行之前测试并发布错误 。 升级他们的生产环境 。
【大数据&云计算JFrog如何在生产环境玩转Kubernetes?】
JFrog研究了在AWS , GCP和Azure上自我管理Kubernetes集群的各种选项 。 JFrog发现 , 最简单、直接的方法是使用由云供应商EKS , GKE和AKS提供的托管Kubernetes解决方案 。
JFrog了解到 , 独自管理集群需要大量JFrog没有的资源和技能 , 并且JFrog需要更好地专注于自身真正擅长的事情 。 JFrog使用相同的API在不同地区的EKS , GKE和AKS上运行生产环境 。
如今 , JFrog的新客户部署是自助服务和完全自动化的流程 , 无需DevOps工程师的干预 。 可以在几分钟之内在任何受支持的云区域上使用这个环境 。
在生产中使用Kubernetes , JFrog仅使用一个或两个命令 , 一切都在其按部就班的运行 , 并且具有应用程序的自动修复和自动缩放功能 , 这充分释放了开发人员的生产效率 。
但是 , JFrog也认识到 , 这个过程并不是想象的那么平滑 。 在生产中使用Kubernetes时 , 这是必须经历的过程 。 JFrog团队在使用Kubernetes之后吸取了哪些经验教训?
1.可见性
由于Kubernetes的复杂性 , 了解系统中正在发生的事情很重要 。 不再需要SSH到服务器并“获取日志” 。 开发人员不需要kubectl访问权限即可调试其应用程序 。
2.开发=分期=生产
开发和生产环境 , 功能和性能问题之间的差异仅在生产中发现 。 为了最大程度地减少环境之间的差异 , 最好创建类似于生产的环境以减少生产中断的风险 。 确保在所有环境中使用相同的Helm图表也很重要 。
3.知道极限
需要学习和了解应用程序在资源使用 , 内存、CPU、数据库等方面的工作方式 , 以及应用程序所需的一切 , 以便以最小的力量有效地执行和运行 。
4.容器优先级和容器服务质量
Kubernetes在调度和清除集群上的工作负载时会使用几条数据 。 当无法正确设置这些参数 , 工作负载停机以及重大的总体群集运行状况问题时 , 可能会出现性能问题 。 资源请求和限制是需要考虑的最明显的设置 。 同样 , 必须全面考虑Pod的生命周期 。
JFrog总结的注意事项
你的应用是CPU还是内存密集型?
你的应用程序出现在另一个节点上有多容易?
选项:
对重要的应用程序有更高的pod优先级
Pod QoS(服务质量)
Guaranteed(requests = limits)
Burstable(已设置一些资源)
Best effort(未设置资源)