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

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

时间:2022-10-10 23:05:15浏览次数: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/5745423

相关文章

  • Tomcat容器、JSP和Servlet
    目录​​JSP​​​​Tomcat、JSP和Servlet ​​JSPJSP全名为JavaServerPages,其根本是一个简化的Servlet设计。JSP技术有点类似ASP技术,它是在传统的HTML网页中插入Java程......
  • qt容器与常用算法
    容器这些容器的使用方式和stl学的基本结构,使用方式是一样只要是数据就要使用容器,程序中的数据放在容器中方便增删改查。Qt库提供了一组通用的基于模板的容器类(contain......
  • RocketMQ Streams在云安全及 IoT 场景下的大规模最佳实践
    本文作者:袁小栋,ApacheRocketMQCommitter,RocketMQStreamsCofonder,阿里云安全智能计算引擎负责人RocketMQStreams简介RocketMQStreams包含以下四个部分的定义:(1)Lib......
  • 复制docker 容器中某个文件至 宿主机上指定目录
    step1:dockerps查看成功挂载的容器id step2:dockerexec-itCONTAINER_ID/bin/bash进入容器目录  step3:找到待复制的文件全路径,假定如要将容器中文件/usr/loc......
  • 在linux服务器上搭建docker容器
    建立容器并配置环境方案Docker命令大全Docker命令大全|菜鸟教程(runoob.com)LinuxLinux教程|菜鸟教程(runoob.com)Docker镜像从dockerhub下载镜像,这里下......
  • stl的关联式容器
    默认排序,每插入一个元素都会执行排序操作map,multimap,set,multisetmap与set的的区别:map元素是pair,是key-value模式。set只存key,对于查找某个key是否在set中速度很快......
  • ICCV2021最佳检测之一:主动学习框架较大提升目标检测精度(附论文下载)
    计算机视觉研究院专栏作者:Edison_G新框架优于基于单模型的方法,并且以一小部分计算成本与基于多模型的方法相媲美!公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式论......
  • Docker | 容器数据卷
    目录什么是容器数据卷数据的覆盖问题使用数据卷方式一:直接使用命令挂载-v测试挂载卷1、在容器内部修改文件同步到Linux主机上2、同样地,在Linux上修改挂在卷文件可以同步到......
  • Docker容器no route to host解决
    在使用Centos7上使用docker容器访问其他服务器的的端口时,发现容器无法访问外部服务器的端口,却可以ping通外部服务器的地址。其中Centos7中的防火墙也是关的,经过发现docker......
  • Docker | 容器数据卷
    什么是容器数据卷从docker的理念说起,docker将应用和环境打包成一个镜像,运行镜像(生成容器)就可以访问服务了。如果数据都存在容器中,那么删除容器,数据就会丢失!需求:数据可以......