精华内容
下载资源
问答
  • Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机,该部分详细教程请看 使用Maven插件快捷打包发布...

    Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布
    采用了dockerfile-maven-plugin插件发布镜像到远程docker主机,该部分详细教程请看 使用Maven插件快捷打包发布远程Docker镜像

    添加docker插件依赖

    如何开放远程docker主机远程控制端口请看 使用Maven插件快捷打包发布远程Docker镜像

    # 可以直接在父工程pom内添加插件,各子项目将自动继承插件依赖
    <build>
            <plugins>
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>dockerfile-maven-plugin</artifactId>
                    <version>1.4.0</version>
                    <configuration>
                        <repository>${docker.image.prefix}/${project.artifactId}</repository>
                        <buildArgs>
                            <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                        </buildArgs>
                    </configuration>
                </plugin>
            </plugins>
    </build>

    添加Dockerfile文件

    需要为各需要发布为docker镜像的服务项目在其根目录添加Dockerfile文件

    # dockerfile 基础配置
    FROM daocloud.io/library/java:8u40-b22
    VOLUME /tmp
    ARG JAR_FILE
    ADD ${JAR_FILE} /app/app.jar
    WORKDIR /app/
    # 该镜像需要暴露的接口
    EXPOSE 8889
    ENTRYPOINT ["java","-jar","./app.jar"]

    执行发布镜像

    mvn clean package dockerfile:build -DskipTests

    这里写图片描述
    可以看到微服务中的各服务项目都被已经被发布到了远程docker镜像

    运行

    将各服务都跑起来

    docker run -d -p 8889:8889 --name hnister-eureka-server hnister/hnister-eureka-server

    但现在还有一个问题就是如何引入mysql等组件到docker中呢

    数据库等服务的引入

    如何构建一个外部可访问的mysql docker容器请看:Docker 构建Mysql容器并对外提供服务

    容器间网络互通

    现在各镜像已经构建完毕,如何让各容器相互访问呢,以前docker采用link的方式,但这种方式已经不被推荐了。
    我们可以采用network来方便快捷的达成我们所期望的效果;

    创建一个新的network

    创建新network

    docker network  create hnister

    这里写图片描述
    network被创建成功,在运行容器时指定network

    # 通过--network 结合 --network-alias 指定网络
    docker run -d -p 8889:8889 --name hnister-eureka-server --network hnister hnister/hnister-eureka-server
    docker run -d -p 8889:8889 --name hnister-mysql --network hnister --network-alias mysql.hnister.cn mysql

    对已经运行的容器链接到network,而其他服务在加入了该network后可以通过alias来访问主机如链接到数据库mysql

    jdbc:mysql://mysql.hnister.cn/hnister

    对于已经启动的容器可以使用命令来加入自建network

    docker network connect hnister hnister-eureka-server

    这样所有的容器就都在一个network内了可以相互访问

    展开全文
  • Dockerfile容器化应用最佳实践 最佳实践 让构建出来的镜像尽可能”小“ 让构建镜像过程尽可能“快” 让镜像变得”好用“ 让构建镜像变得”省事、省心“ FAQ 参考文档 Dockerfile容器化应用最佳实践 将一...

    Dockerfile容器化应用最佳实践

    将一个应用容器化,就是将这个应用构建成Docker镜像,然后以Docker容器方式来运行。

    构建Docker镜像就是编写Dockerfile,并通过docker build 命令构建成Docker镜像。

    可以用”小、快、好、省“来概括Dockerfile的最佳实践。

    最佳实践

    让构建出来的镜像尽可能”小“

    Why?

    小的镜像的好处包括构建镜像快,占用磁盘空间小,网络传输快(比如docker pulldocker push 时速度快)。

    How?

    • 选择适合的尽量小的基础镜像

      比如,你要从Linux操作系统基础镜像开始构建,可以参考下表来选择合适的基础镜像:

    镜像名称 大小 使用场景
    busybox 1.15MB 临时测试用
    alpine 4.41MB 主要用于测试,也可用于生产环境
    centos 200MB 主要用于生产环境,支持CentOS/Red Hat,常用于追求稳定性的企业应用
    ubuntu 81.1MB 主要用于生产环境,常用于人工智能计算和企业应用
    debian 101MB 主要用于生产环境

    让构建镜像过程尽可能“快”

    Why?

    加快构建的好处不言而喻,比如加快构建Docker镜像环节可以提升整个部署流水线的效率。

    How?

    • 使用清洁的构建上下文(build context)

      Docker CLI是由给定一个目录或者URL作为构建上下文的,在镜像构建之前会将该上下文发送到Docker Daemon。建议在一个新的目录里创建Dockerfile,然后在该目录里只添加镜像包含的文件。这为docker build命令提供了一个更加清洁的上下文并且允许更快地构建镜像。否则,扫描带有多个文件的目录将不必要地减慢构建速度。

      参考文档:https://docs.docker.com/engine/reference/builder/#usage

    • 利用构建时缓存(build cache)

      Docker build构建镜像时会重复使用已经构建过的中间层作为缓存来加快构建过程。而Docker build构建时是按照Dockerfile顺序构建的,因此需要将不经常变化的生成层的命令放在前面,把经常变化的生成层的命令放在后面。

      参考文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache

    让镜像变得”好用“

    Why?

    好用的镜像,造就好用的容器。好用的容器是指可以使用Docker 标准命令前后台运行,传入运行时环境变量控制容器行为,传入运行命令替换缺省命令,优雅的停止,方便查看日志和进入容器内部调试。

    How?

    让构建镜像变得”省事、省心“

    Why?

    Dockerfile越复杂,越容易出错;Dockerfile有问题,运行的容器会有安全隐患。

    How?

    • 选择高级别基础镜像

      尽量使用高级别基础镜像来简化编写Dockerfile的工作,比如为Java应用容器化使用openjdk基础镜像,而不是从alpine 操作系统基础镜像开始构建。

    • 保持Dockerfile尽可能简单

      参考Docker官方和其它一些好的开源软件的Dockerfile,让Dockerfile尽量保持简单,可读。

    • 使用经过安全扫描的基础镜像

      经过安全扫描的基础镜像,可以让容器运行在一个安全的环境。

    FAQ

    Q: ARGENV 命令的区别。

    A: ARG 支持在构建镜像时(build-time)修改参数的值,比如docker build --build-arg var=xxx

    ENV 支持在运行容器时(run-time) 修改参数的值,比如docker run -e var=yyy

    Q: ADDCOPY 命令的区别。

    A: 推荐使用COPY命令。

    Q: Docker build的cache问题。

    A: ADDCOPY 命令利用cksum来检查同名文件是否存在在缓存中,但是对cksum的计算不包括last-modified time和last-accessed time,有可能导致缓存机制失效。如果你的应用每次都基于一个同名文件,需要注意这个问题。

    https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#leverage-build-cache

    Q: RUN , CMDENTRYPOINT的区别。

    A: RUN 命令是在docker build 构建时被执行,在容器运行时不会被执行。

    CMDENTRYPOINT 命令是在docker run 运行容器时被执行,在容器构建时不会被执行。

    Docker缺省的ENTRYPOINT是/bin/sh -c

    参考文档

    展开全文
  • 在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台,交付持续,业务服务容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发...容器是一种轻量级的虚拟技术,拥有持

    在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化。容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施,缩短应用向云端交付的周期,降低运营门槛。加速企业向互联网技术和业务的双转型。“容器时代”的到来无疑为整个IT界带来了福音,今天我们就跟大家一起看看它的新宠——CaaS容器云。

    容器是一种轻量级的虚拟化技术,拥有持续集成、版本控制、可移植性、隔离性和安全性等优点,越来越多的应用跑在容器里面。但也有其缺陷,并不是所有场景都适合如高性能计算,已经满负荷运行的应用没有必要虚拟化,一些对IO等运行环境要求比较高应用不适合容器化如Oracle数据库。

    容器给应用程序提供了一个独立的运行环境,并不是像虚拟机那样提供一套完整的操作系统,这是容器和虚拟机最大的区别,所以在用户在使用虚拟化如KVM、Vmware时候很少会担心到应用能不能跑到虚拟机里面,通常只是针对虚拟化环境做性能调优,如KVM的CPU绑定、内存气球以及巨型页等。但应用Docker化更加复杂,除了解决虚拟机存在的计算、存储、网络以外问题,还需要解决Docker自身的问题,如:Docker相对与虚拟机的脆弱性、应用程序依赖的系统调用在Docker中没有做限制,还有Docker镜像制作以及应用Docker化之后日志和性能采集等问题。

    Docker通过cgroup限制CPU和内存的使用,CPU限定通常是设置权重,并不能让一个容器获得确定1Ghz的CPU,当然你也可以使用cpuset绑定到指定的物理核上,内存使用中不仅要设置内存大小还要限定交换分区的大小,这点很重要,譬如MongoDB在内存不足时大量使用交换分区。

    Docker相对短暂的生命周期决定了不会使用持久存储,容器挂了,存储的数据也会相应的丢失。如果数据需要持久化如MySQL的DBData数据,则需要把数据输出到外部的存储设备上,可以通过挂载NFS或者GlusterFS或者AWS存储等,在Kubernetes的PV的后端存储已经可以支持上述文件系统。用户也可以根据不同存储去实现Docker volume plugin,比较流行有Rancher/Convoy和Flocker,后者支持数据迁移,这为容器的迁移奠定了数据基础。

    容器应用之间相互依赖:Web应用访问数据库,API接口调用等,所以网络必须能够互通并且支持多租户隔离,当前Docker网络有两大阵营,CNM和CNI。其中Calico可以算是脚踏两只船的,它可以与Kubernetes集成,相比Overlay网络在网络传输过程还是有明显优势的,如下图所示,减少了包封装提高了网络传输和包处理效率。

    calico-package.png

    Docker OVS SDN的方式达到容器和容器以及容器和主机之间的网络互通也是非常好的设计思想,通过实现Docker的Network Drivers接口将容器挂到OVS上,通过ryu、Floodlight或者OpenDaylight等SDN控制器动态下发流表的达到网络互通;再结合iptables实现网络隔离。如果想实现大二层跨机房网络互通,可以集合Vxlan等Overlay技术。
    sdn_ovs.png

    天云skyform ECP平台是基于Kubernetes Calico的容器管理平台,具有日志采集分析、性能监控、镜像管理等一套完整的容器管理平台。上面介绍了Docker相关的一些相关知识,下面介绍具体的应用在Kubernetes平台上的集成。我把应用集成难度分三个等级:最容易是应用本身具有服务发现机制如Dubbo,天然的支持自动扩缩容,那么在Kubernetes集成将会变的非常简单;大部分应用属于需要修改配置就能在容器里面运行,最困难的是需要对应用进行二次开发或者对平台二次开发的应用。

    ZooKeeper

    ZooKeeper是一个高性能、高可用的分布式协调服务。整个ZooKeeper集群的对外提供2181服务端口,节点之间数据同步和选主分别使用的2888和3888端口。每一个ZooKeeper节点都需要个其他节点通信,所以都需要一个固定的IP地址,通过Kubernetes服务提供的虚IP(如果使用集群内已经部署DNS则配置域名即可)互相通信,结构如下图所示:
    zookeepr-service.png

    Yaml文件如下
    zookeeper-yaml.png

    存储使用nfs共享存储,这样ZooKeeper容器重建后就能恢复数据。
    zookeeper-nfs.png

    Kafka

    Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。整个结构图如下所示:
    kafka-arch.png

    Yaml文件如下,这里面有三个地方需要注意:
    1. 每一个Kafka的broker都有一个集群内唯一的broker_id,所以不能把整个Kafka集群放到一个RC里面,而必须通过不同RC去分别定义每一个broker;
    2. Kafka依赖ZooKeeper,在这里我们通过环境变量的方式将域名传递到容器内;
    3. 这里没有配置Kafka的持久化存储,因为每个Topic包含一个或多个partition,如果单个broker宕调不会影响集群,并且当broker重建后会自动同步数据,速度非常快。
      kafka-yaml.png

    Redis

    Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis容器测试过程中,有几点性能问题需要注意,第一是Redis最大内存,如果不设置可能会出现将内存耗尽的现象,第二是数据ttl时间设定以及清理keys策略,这些都是为了避免内存不足时使用交换分区导致性能下降,第三是数据持久化使用RBD,相对于较大文件aof持久化,RBD更适合快照恢复。如果是业务量不大的场景可以使用redis主从结构,如下图所示:
    redis-arch.png

    Resis Master的Yaml文件如下,其中为了数据的迁移恢复和重建使用Glusterfs存储,当然你也可以换成其他存储,单个主从集群可能无法承载过多的请求,可以通过当前比较成熟的一个方案Twemproxy,通过代理实现数据分片,也能达到一个不错的效果:
    redis-yaml.png

    当前我们正在测试的是Redis 3.x的集群功能,每一个Redis都是一个service(slave默认不接受读写,需要执行readonly才能读),省去proxy代理提高效率。这个集群方案通过redis-trib.rb的create子命令构建, 在客户端配置所有service地址就可以操作集群里面的数据,但整个操作过程有两个地方必须通过手工完成,尚待完善:
    1. 整个集群创建redis-trib.rb是通过手动完成,没有服务发现和自动化;
    2. 增加加点必须手动执行redis-trib.rb reshard分配slot。

    redis-cluster.png

    MongoDB

    MongoDB是由C 语言编写的,是一个基于分布式文件存储的开源数据库系统。MongoDB已经不推荐使用主从,集群可以选择副本集或者分片。下图展示的每一个MongoDB对外是一个service,组成副本集的集群,类似mongodb这种对磁盘IO要求比较高的可以使用SSD加速,通过标签选择创建到有SSD机器上面提高性能。
    mongodb-yaml.png

    如果是MongoDB的分片集群,结构如下所示:
    mongos.png

    每一个configsvr配置服务和Mongos路由服务都是通过service提供固定的访问接口。mongos通过configsvr域名配置。通过服务发现的脚本动态配置将副本集转成分片,这个分片的功能测试已经通过,但性能测试还在进行中。

    上面一些应用都是通过容器外部传递配置参数或者启动脚本修改应用的配置,但有的应用通过这种方式是无法完成的,必须通过对应用或者对平台的改造才能完成,譬如IBM的任务调度平台OpenLava,它通过/proc/meminfo和/proc/cpuinfo获取内存和CPU,Docker这部分通过是挂载的主机proc文件系统,导致应用在容器内读取是主机的CPU和内存,此时通过修改OpenLava代码使其从/sys/fs/cgroup/cpu/cpu.shares 获取CPU核数从/sys/fs/cgroup/memory/memory.limit_in_byte获取内存值,有的应用(多个pod)之间需要共享IPC,这部分功能Kubernetes是没有的,需要通过平台改造去达到应用需求,还有应用需要根据IO去调度,这些都是我们ECP平台基于Kubernetes添加的功能。

    Q&A

    Q:请问在Kubernetes架构下 搭建分布式服务框架如Dubbo 需要将主机地址和暴露端口注册到ZooKeeper上,这个主机地址和暴露的端口你们是怎么处理的,即容器内的应用如何获取Docker宿主机地址?

    A:Dubbo服务不需要暴露主机的IP和地址,只需要知道容器地址即可。这些服务都是注册到ZooKeeper上面,通过ZooKeeper完成服务发现,Kubernetes能够根据暴露端口进行调度,当然有些应用要求容器能获取到宿主机的IP地址,这块我们对Kubernetes做了一些修改,可以动态注入诸如宿主机IP,宿主机主机名信息到容器的环境变量中。
    Q:ECP的定位和解决目标相比较目前大家在用传统的云平台解决方案来讲下? 
    A:ECP产品定位是一套完整的容器解决方案,从容器生命周期管理,资源监控到日志分析处理,相比与云平台解决方案管理的对象不再是虚拟机,而是容器,面向的对象是服务。
    Q:关于容器本身的资源性能监控,是用的cAdvisor+Heapster吗,如何能保持pod重启(重启后pod名称变化)后的数据连续性,谢谢。
    A:资源监控用的不是Heapster,ECP的资源监控是用cAdvisor+我们自己研发的采集Agent+Ceilometer+MongoDB+HBase等技术。复用了我们在做CMP产品时的技术,rc中的pod重建后会重命名,这块对于单一pod数据的连续性还没有考虑,我们是把rc当做一个整体考虑的 。
    Q:你们对外服务的负载均衡如何做的?是直接用Kubernetes的service吗?
    A:对外负载均衡现阶段用的是Kubernetes的service,考虑到iptables带来的性能损耗,后续我们会考虑使用别的方案,在集群内部直接把流量转发到对于的pod上。
    Q:请问Kubernetes容器和在其中运行的应用程序监控是如何做的?能介绍下吗?谢谢!
    A:ECP的资源监控是用cAdvisor+我们自己研发的采集Agent+Ceilometer+MongoDB+HBase等技术。复用了我们在做CMP产品时的技术。简单来说就是用cAdvisor采集原始数据,然后通过Ceilometer持久化,提供实时数据查询、告警等功能。数据会定期转存到hbase做历史数据分析。
    Q:请问,有基于Kubernetes的多租户和用户配额开源实现嘛?
    A:现在开源的方案比较少,我们的ECP产品是结合Keystone实现的多租户管理以及租户的配额管理。
    【docke学习参考】

    1、【容器技术】非常详细的 Docker 学习笔记-爱编程 http://www.w2bc.com/article/152095

    2、10个精选的容器应用案例 http://www.infoq.com/cn/minibooks/10-Container-studies (推荐下载)

    展开全文
  • 七个构建容器最佳实践

    千次阅读 2018-07-30 07:43:00
    Kubernetes Engine是大规模运行工作负载的好地方。但在使用Kubernetes之前,您需要将应用程序容器化。您可以在Docker容器中运行大多数应用程序而不...
        

    640


    Kubernetes Engine是大规模运行工作负载的好地方。但在使用Kubernetes之前,您需要将应用程序容器化。您可以在Docker容器中运行大多数应用程序而不会有太多麻烦。但是,在生产中有效地运行这些容器并简化构建过程是另一回事。有许多事情需要注意,这样才能使您的安全团队和运营团队更加放心。本文提供了有助于您有效构建容器的小技巧和最佳实践。


    每个容器只包含一个应用程序

    640

    当只有一个应用程序在里面运行时,容器的效果最佳。此应用程序应具有单个父进程。例如,不要在同一容器中运行PHP和MySQL:更难调试,Linux信号将无法正确处理,无法水平扩展PHP容器等原因。这使您可以将应用程序的生命周期和该容器绑定在一起。

    640


    上图中左边的容器遵循最佳实践,右边的容器没有。


    正确处理PID 1,信号处理和僵尸进程

    640

    Kubernetes和Docker将Linux信号发送到容器内的应用程序以停止它,使用进程标识符(PID)1将这些信号发送到指定进程。如果您希望应用程序在需要时正常停止,则需要正确地处理这些信号。
    谷歌开发者提倡的Sandeep Dinesh的文章——《Kubernetes最佳实践:如何优雅终止kubernetes[1]》——解释了整个Kubernetes终止生命周期。


    优化Docker构建缓存

    640

    Docker可以缓存镜像层以加速以后的构建。这是一个非常有用的功能,但在编写Dockerfiles时,需要介绍一下我们需要考虑的一些行为。 例如,您应该在Dockerfile中尽可能晚地添加应用程序的源代码,以便基本镜像和应用程序的依赖项得到缓存,并且不会在每次构建时重建。
    以下面这个Dockerfile为例:

    dockerfile
    FROM python:3.5
    COPY my_code/ /src
    RUN pip install my_requirements

    你应该把最后两行交换一下:
    dockerfile
    FROM python:3.5
    RUN pip install my_requirements
    COPY my_code/ /src

    在新版本中,pip命令的结果将被缓存,并且每次源代码更改时都不会重新运行。
    删除不必要的工具

    640

    减少主机系统的攻击面总是一个好主意,而且使用容器比使用传统系统容易得多。从容器中删除应用程序不需要的所有内容。 或者更好的处理是,仅将您的应用程序包含在distroless或scratch镜像中。 如果可能,您还应该将容器的文件系统设置为只读。这样在您的绩效考核期间可以从安全团队获得一些出色的反馈。


    尽可能地构建最小的镜像

    640

    谁喜欢下载数百兆的无用数据?大家都想获取最小的镜像。这样可以减少下载时间,冷启动时间和磁盘使用量。您可以使用多种策略来实现这一目标:从最小的基本镜像开始,利用镜像之间的公共层,并利用Docker的多阶段构建功能。

    640


    上图展示了Docker多阶段构建过程。
    谷歌开发者提倡的Sandeep Dinesh的文章——《Kubernetes最佳实践:如何以及为何构建小型容器镜像[2]》——深入介绍了这一主题。


    正确地给镜像打标签

    640


    标签可以帮助用户选择他们想要使用的镜像版本。给镜像打标签主要有两种方法:语义版本控制,或使用Git提交哈希。 无论您选择哪个,必须记录好,并清楚地符合用户的期望。 注意:虽然用户希望某些标签(如“latest”标签)从一个镜像移动到另一个镜像,但他们希望其他标签是不可变的,即使它们在技术上并非如此。 例如,一旦您使用“1.2.3”之类的标签标记了特定版本的镜像,就不应该再移动此标记。
    仔细考虑是否使用公共镜像

    640

    当你开始使用某个特定的软件时,使用公共镜像是个不错的选择。 但是,在生产中使用它们可能会带来一系列挑战,特别是在约束高的环境中。 例如,您可能需要控制其中的内容,或者您可能不想依赖外部存储库。 另一方面,为您使用的每个软件都构建自己的镜像并非易事,尤其是因为您需要跟上上游软件的安全更新。仔细权衡每种选择的优缺点,并做出明智的决定。
    相关链接:
    1. https://cloudplatform.googleblog.com/2018/05/Kubernetes-best-practices-terminating-with-grace.html

    2. https://cloudplatform.googleblog.com/2018/04/Kubernetes-best-practices-how-and-why-to-build-small-container-images.html


    原文链接:https://cloudplatform.googleblog.com/2018/07/7-best-practices-for-building-containers.html


    Kubernetes项目实战训练营

    640?


    Kubernetes项目实战训练将于2018年8月17日在深圳开课,3天时间带你系统掌握Kubernetes本次培训包括:Docker介绍、Docker镜像、网络、存储、容器安全;Kubernetes架构、设计理念、常用对象、网络、存储、网络隔离、服务发现与负载均衡;Kubernetes核心组件、Pod、插件、微服务、云原生、Kubernetes Operator、集群灾备、Helm等,点击下方图片查看详情。

    640?

    展开全文
  • 文章转自网易云架构师刘超的个人微信公众号 本文章为《互联网高并发微服务化架构实践》系列课程的第四篇 ...五、容器化的本质和容器化最佳实践 六、容器平台的最佳实践 一、为什么要做无状...
  • 最佳实践--Spring容器初始完成之后执行某个方法
  • 本文为6月18日有容云架构师马洪喜在七牛微服务架构最佳实践课堂的演讲PPT,文中跟大家一起探讨了如何通过容器技术将微服务和DevOps落地,构筑企业容器云,助力应用微服务
  • 阿里云资深技术专家易立通过阿里云容器服务,分享容器技术落地的最佳实践,希望能够帮助同学们更好地理解容器技术和云原生理念,合理地设计上云架构,充分发挥云的价值。(文末推荐:2020 阿里巴巴研发效能峰会) ...
  • 简介:阿里云专有云容器服务弹性伸缩最佳实践1.容器服务弹性伸缩简介本小节将基于使用原理对容器服务弹性伸缩进行简要的描述。本实践基于K8s的业务集群运行在专有云上,对测试业务进行压力测试,主要基于以下三种...
  • 本文结合阿里云历史案例经验,说明了在对容器服务进行主动运维等场景下,需要重启节点时的操作最佳实践。 检查业务高可用配置 在重启容器服务节点前,建议先检查或修正如下业务配置,以避免节点重启触发单点...
  • Docker+Kubernetes(k8s)微服务容器化实践 Docker+Kubernetes(k8s)微服务容器化实践课程连接:https://coding.imooc.com/learn/list/198.html 第1章 初识微服务 1-1 微服务-导学 容器技术的成熟为微服务的落地提供了...
  • 容器是未来在共有云和私有云进行应用开发的主要趋势,但是容器到底是什么,为什么它们成为了一种广受欢迎的部署机制,而且你需要怎样来修改你的应用来为容器化的环境优化它? 容器是未来在共有云和私有云进行应用...
  • 容器环境的JVM内存设置最佳实践

    千次阅读 2020-01-19 13:52:51
    这里总结下我们项目里的最佳实践。 Java Heap基础知识老幺 https://www.laoyao.org 默认情况下,jvm自动分配的heap大小取决于机器配置,比如我们到一台64G内存服务器: java -XX:+PrintFlagsFinal -version | grep -...
  • 但是在实践过程中发现存在很多问题:在一台云主机上搭建多个模块,容易出现资源不足的情况(我们在实验过程中有台云主机好几次宕机,经常要删掉不用的镜像容器);部分模块之间需要相互调用,为方便部署多套环境简化...
  • Web UI组件化最佳实践的思考

    千次阅读 2016-05-13 16:00:05
    Rails UI组件化最佳实践的思考前端组件化的几种思路 重客户端的SPA模式,将大量的逻辑和数据处理放在客户端,服务器端提供JSON数据 服务器端处理业务逻辑,客户端只负责两个事情:显示和发送数据到服务器端,服务器...
  • AWS Lambda最佳实践之利用容器重用来提高函数性能 AWS Lambda最佳实践: 利用容器重用来提高函数性能。 确保您的代码检索到的外部配置或依赖关系在初次执行后在本地存储和引用。限制变量/对象在每次调用时的...
  • 分布式服务框架之服务化最佳实践

    千次阅读 2016-10-11 15:41:21
    在服务之前,业务通常都是本地API调用,本地方法调用性能损耗较小。服务之后,服务提供者和消费者之间采用远程网络通信,增加了额外的性能损耗,业务调用的时延将增大,同时由于网络闪断等原因,分布式调用失败...
  • 摘要:网易云容器平台期望能给实施了微服务架构的团队提供完整的解决方案和闭环的用户体验,为此从 2016 年开始,我们容器服务团队内部率先开始进行 dogfooding 实践,看看容器云平台能不能支撑得起容器服务本身的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,743
精华内容 16,697
关键字:

容器化最佳实践