导语
同时使用Docker和Kubernetes已成为行业中更快的应用程序部署和发布的新规范。
正文
当前,有越来越多的公司开始接受云原生的DevOps之旅,了解Docker和Kubernetes之类的工具对实现数字化转型的重要性。
随着公司迁移其基础架构和体系结构以适应云原生和数据驱动时代不断发展的技术趋势,我们已经看到了对云计算、容器化和编排解决方案的兴趣。
在谈论云原生时,很难忽略诸如Docker和Kubernetes之类的名称,它们彻底改变了我们大规模创建、开发、部署和交付软件的方式。
Docker实战
由于Docker容器提供了自己的OS库,因此Docker通过帮助开发人员在相同的环境中运行应用程序而使开发人员真正轻松了起来,而没有诸如依赖项或OS之类问题的麻烦。在引入Docker之前,开发人员会将代码发送给测试人员,但是由于各种依赖性问题,很多时候代码无法在测试人员的计
算机上运行,但在开发人员的计算机上却可以正常工作。
引入Docker之后,情况发生了变化:测试人员和开发人员现在在Docker容器上运行相同的系统,因此不再有混乱——两者都可以在Docker环境中运行应用程序而没有任何困难或依赖关系上的差异。
使用Docker构建和部署容器
Docker帮助开发人员在容器内创建和部署软件。它是一个开源工具,可以让我们“在任何地方构建,发布和运行应用程序”。
使用Docker,我们可以创建一个名为Dockerfile的文件。Dockerfile帮我们定义了一个构建过程,当输入到“docker build”命令时,它将创建一个不可变的映像。您可以将Docker映像视为应用程序及其依赖项的快照。当用户想要启动它时,他们使用“docker run”命令在支持并运行Docker守护程序的任何位置运行它。
Docker还有一个基于云的存储库,称为Docker Hub。我们可以将Docker Hub用作注册表来存储和分发您构建的容器映像。
Kubernetes在行动
在Docker集群环境中,需要注意一些任务,例如调度、通信和可伸缩性。这些任务应由诸如Kubernetes之类的编排工具处理,这是开源历史上最受欢迎的项目之一。
Kubernetes是一个开源容器编排工具。它处理主要的容器管理职责,包括容器部署、扩展、修复和负载均衡。
Kubernetes是由状态而非进程定义的。定义一个Pod之后,Kubernetes致力于确保其始终处于运行状态。如果某个容器发生故障或被杀死,它将尝试启动一个新容器。如果复制控制器定义了三个副本,它将始终尝试运行该数字,并根据需要启动和停止容器。
Docker和Kubernetes一起工作
Docker帮助“创建”容器,而Kubernetes允许我们在运行时“管理”它们。使用Docker打包和运输应用程序。使用Kubernetes部署和扩展您的应用程序。容器较少的初创公司或小型公司通常无需使用Kubernetes即可对其进行管理,但是随着公司的发展,其基础设施需求将会增加。因此,容器的数量将增加,这可能难以管理。这就是Kubernetes发挥作用的地方。
在一起使用时,Docker和Kubernetes可以用作现代云架构的数字转换支持器和工具。同时使用两者已成为行业中更快的应用程序部署和发布的新规范。在构建堆栈时,强烈建议我们去了解Docker和Kubernetes之间的高级差异性。无论选择哪种云计算之旅,都需要让容器帮助我们解开云计算的奥秘。
让我们来看一个使用Docker和Kubernetes设置CI/CD的简单场景:
1.开发人员的代码被推送到Git中。
2.使用Jenkins for C的Maven进行构建和测试。
3.使用Ansible作为部署工具,我们将编写Ansible剧本以部署在AWS上。
4.在Jenkins建立过程之后,我们将介绍JFrog Artifactory作为存储库管理器;这些文物将存储在Artifactory中。
5.Ansible可以与Artifactory进行通信,获取工件并将其部署到Amazon EC2实例上。
6.SonarQube可以帮助您检查代码,并将进行静态代码分析。
7.介绍Docker作为容器化工具。就像在Amazon EC2上所做的一样,我们将通过创建Docker文件和Docker映像将应用程序部署在Docker容器上。
8.完成上述设置后,我们将引入Kubernetes来创建Kubernetes集群,并且通过使用Docker映像,我们将能够进行部署。
9.最后,我们将使用Nagios监视基础结构。
结论
微服务可帮助公司将大型的单片应用程序转换为较小的组件,以便它们可以独立打包和部署它们,而无需任何依赖。微服务为应用程序提供了更大的敏捷性、可扩展性和弹性,借助微服务,可以更快地更新,更改和重新部署应用程序。在那里,诸如Docker和Kubernetes之类的工具可以协同工作,以帮助公司根据需要部署和扩展应用程序。
Kubernetes像野火一样在云市场中传播,并且采用率逐年增加。包括IBM、Amazon、Microsoft、Google和Red Hat在内的公司在容器即服务(CaaS)或平台即服务(PaaS)模式下提供托管的Kubernetes。许多全球公司已经在大规模生产中使用Kubernetes。
Docker也是一项很棒的技术。根据《RightScale 2019云状态报告》,Docker以惊人的年同比增长率增长,赢得了容器市场的青睐。数百万开发人员依赖Docker,每天要下载1亿个容器映像,并且有450多个组织采用了Docker企业版,其中包括一些全球最大的企业。未来很多年,Docker和Kubernetes都将一去不复返。
来源:oschina
链接:https://my.oschina.net/u/3828502/blog/4294303