容器技术

6.9服务与主机之间的映射

☆樱花仙子☆ 提交于 2019-12-06 15:13:22
很早之前,就有关于“每台机器(machine)应该有多少个服务”的讨论。在我们继续之 前,应该找一个比“机器”更好的术语。在前虚拟化时代,单个运行操作系统的主机与底 层物理基础设施之间的映射形式有很多种。因此,我倾向于使用“主机”(host)这个词来 做通用的隔离单元,也就是能够运行服务的一个操作系统。如果你直接在物理机上部署, 那么一台物理机映射到一台主机(在当前上下文中,这个词可能不完全正确,但确实也找 不到更好的了)。如果你使用了虚拟化,单个物理机会映射到多个独立的主机,并且每个 都可以包含一个或者多个服务。 所以在考虑不同的部署模型时,我会使用主机这个词。那么每台主机应该有多少个服 务呢? 我有自己倾向的模型,但要考虑多个因素,来决定哪个模型最适合你。需要注意的一点 是:某些决定会限制可用的部署方式。 6.9.1单主机多服务 如图6-6所示,在每个主机上部署多个服务是很有吸引力的。首先,从主机管理的角度来 看它更简单。在一个团队管理基础设施,另一个团队管理软件的模式下,管理基础设施团 队的工作量通常与所要管理的主机量成正比。如果单个主机包含更多的服务,那么主机管 理的工作量不会随着服务数量的增加而增加。其次是关于成本。即使你有一个能够提供一 些配置和更改虚拟主机大小等服务的虚拟化平台,虚拟化的基础设施本身也会占用一部分 资源,从而减少服务可用的资源。在我看来

Docker

允我心安 提交于 2019-12-06 14:58:10
1、简介 Docker是一个开源的应用容器引擎;是一个轻量级容器技术; Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像; 运行中的这个镜像称为容器,容器启动是非常快速的。                                       2、核心概念 docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上); docker客户端(Client):连接docker主机进行操作; docker仓库(Registry):用来保存各种打包好的软件镜像; docker镜像(Images):软件打包好的镜像;放在docker仓库中; docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用 使用Docker的步骤: 1)、安装Docker 2)、去Docker仓库找到这个软件对应的镜像; 3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器; 4)、对容器的启动停止就是对软件的启动停止; 3、安装Docker 1)、安装linux虚拟机 1)、VMWare、VirtualBox(安装); 2)、导入虚拟机文件centos7-atguigu.ova; 3)、双击启动linux虚拟机;使用 root/ 123456登陆

Kubernetes权威指南 第一章:Kubernetes入门

时光毁灭记忆、已成空白 提交于 2019-12-06 14:34:41
Kubernetes是什么 官网 https://kubernetes.io/ 中文版: https://kubernetes.io/zh/ Kubernetes是谷歌十几年大规模容器管理经验的成果 是Borg的一个开源版本 基于容器技术的分布式架构方案 Service简介 Kubernetes以Service为核心,Service有如下特征 唯一名称 拥有一个虚拟ip和端口 提供某种远程服务能力 被映射到提供这种服务能力的一组容器应用上 Pod简介 Pod运行在Node主机中 Pod是Kubernetes管理的最小运行单元 通常一个Node运行上百个Pod 每个Pod有一个特殊的Pause容器,负责网络栈和Volume挂载卷 只有提供服务的那组Pod才会被映射为一个服务 为什么要使用Kubernetes 一旦搭建好Kubernetes环境后,后续对于应用的部署与运维,使用Kubernetes就非常方便了 Hello World Kubernetes的安装先不讲了 现在要做的事情是 使用Kubernetes部署MySQL与JavaWeb程序 JavaWeb可以访问Kubernetes 基本步骤 MySQL副本集 MySQL Service JavaWeb副本集 JavaWeb Service 下面的几个yaml文件在 https://github.com/nbcoolkid

Kubernetes 应用部署实战

天大地大妈咪最大 提交于 2019-12-06 14:25:50
Kubernetes 应用部署实战 2018-08-08 19:44:56 wuxiangping2017 阅读数 3084 收藏 更多 分类专栏: linux运维与架构师 简介 伙计们,请搬好小板凳坐好,下面将是一段漫长的旅程,期望你能够乐在其中。 我将基于 Kubernetes [1] 部署一个分布式应用。我曾试图编写一个尽可能真实的应用,但由于时间和精力有限,最终砍掉了很多细节。 我将聚焦 Kubernetes 及其部署。 让我们开始吧。 应用 TL;DR 该应用本身由 6 个组件构成。代码可以从如下链接中找到: Kubenetes 集群示例 [2]。 这是一个人脸识别服务,通过比较已知个人的图片,识别给定图片对应的个人。前端页面用表格形式简要的展示图片及对应的个人。具体而言,向 接收器 [3] 发送请求,请求包含指向一个图片的链接。图片可以位于任何位置。接受器将图片地址存储到数据库 (MySQL) 中,然后向队列发送处理请求,请求中包含已保存图片的 ID。这里我们使用 NSQ [4] 建立队列。 图片处理 [5] 服务一直监听处理请求队列,从中获取任务。处理过程包括如下几步:获取图片 ID,读取图片,通过 gRPC [6] 将图片路径发送至 Python 编写的 人脸识别 [7] 后端。如果识别成功,后端给出图片对应个人的名字。图片处理器进而根据个人 ID 更新图片记录

简单入门Kubernetes

与世无争的帅哥 提交于 2019-12-06 12:52:34
什么是Kubernetes 官网 https://kubernetes.io/ 中文版: https://kubernetes.io/zh/ 个人理解 基于容器技术 分布式架构 弹性伸缩 隔离物理机 和谷歌的Borg有关系 用于部署、管理、运维我们的应用 Kubernetes核心概念 Kubernetes中的大部分概念,如:Node、Pod、Replication Controller、Service,都可以被视作一种资源对象。几乎所有的资源对象都可以通过Kubernetes提供的 kubectl 工具执行CRUD,并将其保存在etcd中进行持久化存储。 从这个角度看,Kubernetes是一个高度自动化的资源控制系统 它通过比较etcd中保存的资源期望值与当前环境的实际资源状态之间的差异,实现自动控制和自动纠错的高级功能 Service 拥有唯一的名称 拥有一个虚拟IP和端口号 能够提供某种远程服务能力 被映射到提供这种服务能力的一组容器应用上 Node 物理机 云上的虚拟机 反正就是一台机器就对了 通常一个节点运行几百个Pod Replication Controller 副本集 它能够保证Pod持续运行,并且在任何时候都有指定数量的Pod副本,在此基础上提供一些高级特性,比如滚动升级和弹性伸缩 RC会在每个节点上创建Pod,Pod上如果有相应的Images可以直接创建

一顿饭的时间带你了解Docker

可紊 提交于 2019-12-06 12:47:00
一、引入 1|1 Docker是什么 Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现。 docker是linux容器的一种封装,提供简单易用的容器使用接口。它是最流行的Linux容器解决方案。 docker的接口相当简单,用户可以方便的创建、销毁容器。 docker将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。 程序运行在虚拟容器里,如同在真实物理机上运行一样,有了docker,就不用担心环境问题了。 1|2应用场景 web应用的自动化打包和发布 自动化测试和持续集成、发布 在服务型环境中部署和调整数据库或其他应用 1|3区别 一,物理机 二,虚拟机 三,docker容器 1|4 Docker的三大概念及优势 镜像  image 容器  container 仓库  repository docker容器的优势: #1. 更高效的利用系统资源 由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统 资源的利用率更高。 无论是应用执行速度、内存损耗或者文件存储速度,都要比传

宜信容器云排错工具集

陌路散爱 提交于 2019-12-06 12:24:38
宜信容器云是一套基于kubernetes的容器管理平台。业务线用户在容器云上部署应用程序时,常常会遇到容器无法启动或者应用程序运行不正常的情况。为了方便用户排查在应用上云过程中的问题,我们在web端集成了一系列的排错方式,如下图: 一、终端信息 终端信息查看的是容器实例运行时的标准输出日志。 效果等同于: kubectl logs PODNAME [-c CONTAINER] 基本原理如下图: 应用部署时,所属节点的kubelet通过grpc调用容器运行时接口(container runtime interface),来请求docker守护进程创建容器运行时。 此时,docker守护进程会创建一个协程来接收容器运行时的标准输出日志,这个协程最终将STDOUT(标准输出)的日志写到容器运行时所在节点的对应目录下: /var/lib/docker/containers/container_id/{container_id-json.log} 如下图: 在web端查看对应实例的终端信息时,kubelet将接收的Api-server请求转化成docker client来请求docker守护进程。Docker守护进程到相应的目录下读取对应容器的日志文件数据,再由kubelet返回日志数据到Api-server,最终显示到web端,供用户查看。 容器日志的生命周期与容器的生命周期一致

Docker容器化技术(下)

瘦欲@ 提交于 2019-12-06 11:16:44
Docker容器化技术(下) 一、Dockerfile基础命令 1.1.FROM - 基于基准镜像 FROM centos #制作基准镜像(基于centos) FROM scratch #不依赖任何基准镜像base image FROM tomcat:9.022-jdk8-openjdk 尽量使用官方的Base Image 1.2.LABEL&MAINTAINER - 说明信息 MAINTAINER xxx.com LABEL version = "1.0" LABEL description = "xxx啥作用" 1.3.WORKDIR - 设置工作目录 WORKDIR /usr/local WORKDIR /usr/local/newdir #自动创建 尽量使用绝对路径 1.4.ADD&COPY - 复制文件 ADD hello / #f复制到根路径 ADD test.tar.gz / #添加根目录并解压 ADD 除了复制,还具备添加远程文件的功能,+网址,类似wget 1.5.ENV - 设置环境常量 ENV JAVA_HOME /usr/local/openjdk8 RUN ${JAVA_HOME}/bin/java -jar test.jar 尽量使用环境常量,可提高程序维护性 二、Dockerfile执行指令 RUN&CMD&ENTRYPOINT RUN

Spring 框架简介

雨燕双飞 提交于 2019-12-06 10:19:29
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 在这篇由三部分组成的 Spring 系列 的第 1 部分中,我将介绍 Spring 框架。我先从框架底层模型的角度描述该框架的功能,然后将讨论两个最有趣的模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。接着将使用几个示例演示 IOC 容器在典型应用程序用例场景中的应用情况。这些示例还将成为本系列后面部分进行的展开式讨论的基础,在本文的后面部分,将介绍 Spring 框架通过 Spring AOP 实现 AOP 构造的方式。 请参阅 下载 ,下载 Spring 框架和 Apache Ant,运行本系列的示例应用程序需要它们。 Spring 框架 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。 图 1. Spring 框架的 7 个模块 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器 :核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory

第10章 部署微服务

点点圈 提交于 2019-12-06 09:59:24
本章主要内容 理解为什么DevOps运动对微服务至关重要 配置EagleEye服务使用的核心亚马逊基础设施 手动将EagleEye服务部署到亚马逊的EC2容器服务中 为服务设计构建和部署管道 从持续集成转向持续部署 将基础设施视为代码 构建不可变的服务器 在部署中测试 将应用程序部署到云 本书已经接近结尾,但我们的微服务旅程还没有走到终点。尽管本书的大部分内容都集中在使用Spring Cloud技术设计、构建和实施基于Spring的微服务上,但我们还没有谈到如何构建和部署微服务。创建构建和部署管道似乎是一项普通的任务,但实际上它是微服务架构中最重要的部分之一。 为什么这么说呢?请记住,微服务架构的一个主要优点是,微服务是可以快速构建、修改和部署到独立生产环境中的小型代码单元。服务的小规模意味着新的特性(和关键的bug修复)可以以很高的速度交付。速度是这里的关键词,因为速度意味着新特性或修复bug与部署服务之间可以平滑过渡,致使部署的交付周期应该是几分钟而不是几天。 为了实现这一点,用于构建和部署代码的机制应该是具有下列特征的。 自动的——在构建代码时,构建和部署过程不应该有人为干预,特别是在级别较低的环境中。构建软件、配置机器镜像以及部署服务的过程应该是自动的,并且应该通过将代码提交到源代码存储库的行为来启动。 可重复的——用来构建和部署软件的过程应该是可重复的