首页 > 其他分享 >应用上容器云的准入条件和最佳实践

应用上容器云的准入条件和最佳实践

时间:2022-10-23 11:34:58浏览次数:60  
标签:容器 应用程序 最佳 构建 运行 应用 镜像 准入条件

随着Kubernetes的发展,现在有一个新的技术趋势:在容器云中以Pod的方式运行虚拟机,这样容器云平台就能够提供普通容器无法实现的功能。相信通过类似的技术,越来越多的应用会向容器云迁移。整体而言,应用上容器云的准入条件包含如下几个方面。

  • 已建立了清晰的可自动化的编译及构建流程:应用使用如Maven、Gradle、Make或Shell等工具实现了构建编译步骤的自动化,以便在容器平台上实现自动化的编译及构建流程。
  • 已实现应用配置参数外部化:应用已将配置参数外部化于配置文件或环境变量中,以便应用容器能适配不同的运行环境。包含特定环境的配置的容器镜像不能在整个环境(Dev、QA、Prod)中升级。为了实现可靠的发布过程,应将在较低环境中测试过的相同镜像部署到生产中。将特定环境的配置保留在容器镜像之外,例如,使用ConfigMap和Secret存储应用程序配置。
  • 已提供合理可靠的健康检查接口:容器平台将通过健康检查接口判断容器状态,对应用服务进行状态保持。
  • 已实现状态外部化,以及应用实例无状态化:应用状态信息存储于数据库或缓存等外部系统,应用实例本身实现无状态化。
  • 不涉及底层的操作系统依赖及复杂的网络通信机制:应用以处理业务为主,不强依赖于底层操作系统及组播等网络通信机制,提高可移植性。
  • 部署交付件及运行平台的大小在2GB以内:轻量级的应用便于在大规模集群中快速传输分发,更符合容器敏捷的理念。
  • 启动时间在5分钟以内:过长的启动时间将不能发挥容器敏捷的特性。

如果应用明显不符合上述条件,则其暂时不适合运行在容器上。在应用上容器云时,除了需要遵循以上准入条件,还需要尽量符合以下最佳实践。

  • 在Pod定义中指定资源请求和资源限制。如果请求资源的配置不正确的话,那么应用程序可能会耗尽内存或导致CPU资源不足。指定请求的内存和CPU资源可以使集群做出适当的调度决策,以确保应用程序具有足够的可用资源。
  • 使用Pod中断预算保护应用程序。在某些情况下,需要将应用程序容器从集群节点中逐出。例如,在管理员可以执行节点维护之前或在缩减规模时集群自动缩放器可以从集群中删除节点之前,需要驱逐Pod。为确保驱逐Pod时应用程序仍然可用,你必须定义各自的PodDistruptionBudget对象。PodDisruptionBudget是一个API对象,用于指定保证应用可用的最小副本数或最小百分比。
  • 每个容器运行一个进程。避免在单个容器中运行多个进程。每个容器中运行一个进程可以更好地隔离进程,避免信号路由出现问题。
  • 应用程序监视和警报。应用程序监视和警报对保持应用程序在生产中良好运行并满足业务目的至关重要。可以使用Prometheus和Grafana等监视工具来监视你的应用程序。
  • 配置应用程序以将其日志写入stdout或stderr。容器云将收集这些日志并将其发送到集中位置(ELK、Splunk)。在分析生产问题时,应用程序日志是宝贵的资源。基于应用程序日志内容的警报有助于确保应用程序按预期运行。
  • 考虑实施弹性措施:断路器、超时、重试、速率限制。弹性措施可以使你的应用程序在出现故障时表现更好。它们可保护你的应用程序免于过载(速率限制、断路器),并在遇到连接问题(超时、重试)时提高性能。
  • 使用受信任的基础镜像。尽可能使用容器厂商提供的企业级容器镜像。容器厂商提供的镜像已通过测试、安全加固并有相应的技术支持。如果使用社区提供的镜像,请尽量使用你信任的社区提供的镜像。不要使用公共注册表(例如Docker Hub)中有未知来源的镜像。
  • 使用最新版本的基础镜像。通常,仅最新版本的容器镜像包含所有可用的安全修复程序。设置CI管道,以便在构建应用程序镜像时始终提取最新版本的基础镜像,同时在更新的基础镜像可用时重建应用程序。
  • 使用单独的构建镜像和运行时镜像。创建具有最小依赖的、单独的运行时镜像可减少入侵面,并产生较小的运行时镜像。构建镜像包含构建依赖关系,构建依赖关系对于构建应用程序是必需的,对于运行应用程序则不是必需的。
  • 尽可能遵守受限制的安全上下文约束(SCC)。修改你的容器镜像以允许在受限制的SCC下运行。应用程序容易受到入侵,强制使用受限制的SCC可提供最高级别的安全性,以防止在应用程序被破坏的情况下损害集群节点。
  • 使用TLS保护应用程序组件之间的通信。应用程序组件可能会传达应受到保护的敏感数据。除非你认为基础容器云网络是安全的,否则你可能希望利用TLS保护应用程序组件之间的通信。考虑利用Service Mesh从应用程序中卸载TLS管理。

标签:容器,应用程序,最佳,构建,运行,应用,镜像,准入条件
From: https://blog.51cto.com/key3feng/5787241

相关文章

  • 解决问题的最佳实践路径
    转载:https://www.cnblogs.com/imyalost/p/16480440.html上周应CC邀请,给部分同学做了一次《测试人员如何保持不断成长》为主题的分享。分享后同学们反馈分享的内容干货满满......
  • Docker基础:容器元数据详解
    今天给大家介绍Docker容器元数据里面包含内容详解,如有不当之处,欢迎大家指正。查看容器元数据主要通过dockerinspect容器id进行查看。今天通过docker安装的mysql查看启动的......
  • 容器是否能代替数组
    在.net中,很多开发者都喜欢使用List来代替数组进行使用。容器不仅封装了数组几乎所有的基本操作,而且还可以动态扩容,在开发过程中十分的方便。以下的场景更加建议使用数组:容器......
  • 最佳体验: 如何为产品和服务设计不可磨灭的体验
    一、什么是体验在一些情况下,对体验的定义会侧重于体验发生的背景(如面向顾客的、休闲的、教育相关的)。虽然这些基于背景的体验确实具有某些独特的特征,但这些分类并不能给予......
  • 乘风破浪,遇见最佳跨平台跨终端框架.Net Core/.Net生态 - 浅析ASP.NET Core服务可用性
    使用Polly提高服务可用性什么是Pollyhttps://github.com/App-vNext/Pollyhttp://www.thepollyproject.orgPolly是一个.NET弹性和瞬时故障处理库,它允许开发者以流......
  • ceph容器版初始化
    文档说明:只记录关键地方;ceph初始化#!/bin/envbashset-eux__DIR__=$(cd"$(dirname"$0")";pwd)cd${__DIR__}if[!"$BASH_VERSION"];thenecho"Plea......
  • 云安全攻防体系实践-容器安全
    容器安全容器镜像存在的风险1、不安全的第三方组件2、大肆传播的恶意镜像3、极易泄露的敏感信息活动容器存在的风险1、不安全的容器应用2、不受限制的资源共享3、不安全的配......
  • docker和containerd清空所有镜像和容器 并释放空间
    文档说明:只记录关键有用的地方;docker清理dockersystemdf#占用存储空间,又没有用的容器dockerimages-aq-f'dangling=true'|xargsdockerrmi#删除所有d......
  • linux docker容器安装nacos
    1、添加nacos数据源createdatabasecloud_nacos;usecloud_nacos;/**Copyright1999-2018AlibabaGroupHoldingLtd.**LicensedundertheApacheLicense......
  • 力扣121(java&python)-买卖股票的最佳时机(简单)
    题目:给定一个数组prices,它的第 i个元素 prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。......