容器技术

学习k8s(三)

喜你入骨 提交于 2020-01-15 11:09:46
一、Kubernetes核心概念 1、Kubernetes介绍 Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。 使用Kubernetes可以: 自动化容器的部署和复制 随时扩展或收缩容器规模 将容器组织成组,并且提供容器间的负载均衡 很容易地升级应用程序容器的新版本 提供容器弹性,如果容器失效就替换它,等等... 实际上,使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群: $ kubectl create -f single-config-file.yaml kubectl是和Kubernetes API交互的命令行程序。现在介绍一些核心概念。 2、集群 集群是一组节点,这些节点可以是物理服务器或者虚拟机,之上安装了Kubernetes平台。下图展示这样的集群。注意该图为了强调核心概念有所简化。这里可以看到一个典型的Kubernetes架构图。 上图可以看到如下组件,使用特别的图标表示Service和Label: Pod Container(容器) Label( )(标签)

docker命名空间、控制组及联合文件系统概念

╄→尐↘猪︶ㄣ 提交于 2020-01-15 07:45:41
基本架构 命名空间 控制组 联合文件系统 docker底层依赖的核心技术主要包括操作系统的命名空间(Namespace)、控制组(Control Groups)、联合文件系统(Union File Systems)和linux虚拟网络支持。 基本架构 docker采用标准的c/s架构,客户端和服务端可以运行在一个机器上,也可以用过socke或者RESTful API进行通信。 docker daemon接受客户端的请求并处理,像容器的创建、运行、分发等。docker daemon是一个非常松耦合的架构,通过专门的Engine模块来分发管理各个来自客户端的任务。 监听方式: 1.UNIX域套接字 默认就是这种方式, 会生成一个 /var/run/docker.sock 文件, UNIX 域套接字用于本地进程之间的通讯, 这种方式相比于网络套接字效率更高, 但局限性就是只能被本地的客户端访问。 2.tcp端口监听 服务端开启端口监听 dockerd -H IP:PORT , 客户端通过指定IP和端口访问服务端 docker -H IP:PORT 通过这种方式, 只要知道了你暴露的ip和端口就能随意访问你的docker服务了,并且可以操作。 因为docker的权限很高, 不法分子可以从这突破取得服务端宿主机的最高权限。可以开启多个tcp监听。 此为centos7 需要在/etc

Docker技术基础

不打扰是莪最后的温柔 提交于 2020-01-15 06:16:29
1、Docker技术基础 对进程做隔离。隔离CPU和内存,限制命名空间 Docker是分层的 Containerd是核心组件 Docker Client实现到Docker Engine之间通信   主要关注:     containers     images     networks   RunC负责容器应用程序的运行   容器里跑的程序都是前台程序,不能是后台程序 Docker联合文件系统(Union Filesystem)-overly2 Docker Images用来运行Docker容器 DockerFile自动创建Docker镜像   命令大写:     FROM     RUN     WORKDIR     COPY     CMD 特性 :Docker对资源(cpu、memory、network、storage)细粒度划分,秒起秒开 2、Docker深入理解 镜像管理:   Harbor镜像中心   Docker Registry实现对容器的管理   每个镜像都是一个tar包 Docker容器网络模式:     主机模式   网桥模式 Docker容器跨主机模:   VXLAN模式 问题一:容器地址重复   Flannel解决方案:     中心化容器地址分配,Etcd配置存储服务 问题二:容器地址不可达   Flannel解决方案:     方案一:覆盖网络

spring与tomcat的关系逆袭前后的设计分析

落花浮王杯 提交于 2020-01-15 05:11:43
https://blog.csdn.net/herriman/article/details/103646985 简介 ​ Tomcat与spring是最常用的东东。本文以Tomcat代表webServer,对比了从Tomcat这样的webServer,来启动spring应用,和最新的springboot启动Tomcat的源码实现过程。加深了对两个系统的了解,从大的方向上学习了系统之间如何组合及设计考量。 ​ 学习了很多相关技术的贴子并阅读了源码,但目前没看到全面分析对比的文章。 ​ 本文以功能为本,注重核心类与接口的关系,有助于整体上把握大系统的设计。不会有太多的代码,更不会分析不太重要的接口,不会有细节的类图与泳道图。本文以Servlet 3.0+环境为主,就不介绍太早的web.xml配置了。我看的springboot是2.2.0.BUILD-SNAPSHOT。 tomcat启动多个包含的应用 **VS** 一个spring应用通过web服务器展示感觉spring从规范tomcat下的一个应用,到了以应用为主,通过各种途经暴露自己的核心应用了,甚至react方式绕过servlet了。算是逆袭吧! 包含 包含 包含 TOMCAT 应用一 应用二 应用三 暴露 局部暴露 暴露 核心业务应用 协议服务 协议二服务 协议三服务 1. 从Tomcat启动spring 1.1

从零开始入门 K8s | GPU 管理和 Device Plugin 工作机制

时光总嘲笑我的痴心妄想 提交于 2020-01-14 17:24:56
作者 | 车漾 阿里巴巴高级技术专家 本文整理自 《CNCF x Alibaba 云原生技术公开课》 第 20 讲。 关注“阿里巴巴云原生”公众号,回复关键词 “入门” ,即可下载从零入门 K8s 系列文章 PPT。 导读 :2016 年,随着 AlphaGo 的走红和 TensorFlow 项目的异军突起,一场名为 AI 的技术革命迅速从学术圈蔓延到了工业界,所谓 AI 革命从此拉开了帷幕。该热潮的背后推手正是云计算的普及和算力的巨大提升。 需求来源 经过近几年的发展,AI 有了许许多多的落地场景,包括智能客服、人脸识别、机器翻译、以图搜图等功能。其实机器学习或者说是人工智能,并不是什么新鲜的概念。而这次热潮的背后,云计算的普及以及算力的巨大提升,才是真正将人工智能从象牙塔带到工业界的一个重要推手。 与之相对应的,从 2016 年开始,Kubernetes 社区就不断收到来自不同渠道的大量诉求:希望能在 Kubernetes 集群上运行 TensorFlow 等机器学习框架。这些诉求中,除了之前文章所介绍的,像 Job 这些离线任务的管理之外,还有一个巨大的挑战:深度学习所依赖的异构设备及英伟达的 GPU 支持。 我们不禁好奇起来:Kubernetes 管理 GPU 能带来什么好处呢? 本质上是成本和效率的考虑。由于相对 CPU 来说,GPU 的成本偏高。在云上单 CPU

微服务:Quarkus与Spring Boot

落爺英雄遲暮 提交于 2020-01-14 12:18:38
在容器时代(“ Docker时代”),Java仍然活着,不管是否努力奋斗。 谁会赢:Spring Boot或Quarkus。 谁会赢? Spring Boot或Quarkus。 在容器时代(“ Docker时代”),Java仍然活着,不管是否努力奋斗。 Java一直以其性能着称,主要是因为代码和真实机器之间的抽象层,多平台的成本(编写一次,可以在任何地方运行-记住这一点吗?),其中包含JVM。 -between(JVM:模拟真实计算机执行功能的软件计算机)。 通过优锐课的java学习分享,如今,使用微服务架构可能不再有意义,也没有任何优势,而是为始终在相同位置和平台(Docker容器-Linux环境)上运行的东西构建多平台(解释)的东西。 可移植性现在不再那么重要了(也许比以往任何时候都重要),那些额外的抽象级别并不重要。 话虽如此,让我们在两个备选方案之间进行简单的原始比较,以在Java中生成微服务:非常知名的Spring Boot和不太熟悉的Quarkus。 对手 谁是 Quarkus? 一套适用于GraalVM和HotSpot的开源技术,可以编写Java应用程序。 它提供(承诺)超快速的启动时间和更低的内存占用。 这使其非常适合容器和无服务器工作负载。 它使用Eclipse Microprofile(JAX-RS,CDI,JSON-P)(Java EE的子集

Tungsten Fabric:连接CMP的金钥匙丨TF Meetup演讲实录

帅比萌擦擦* 提交于 2020-01-14 12:18:31
本文所有相关资料 https://163.53.94.133/assets/uploads/files/cmp-key-shuxun.pdf 上海数讯CIO钱誉 上海数讯是一家以传统数据中心业务为主的公司,为什么会转到云计算呢?在2011年以后,整个数据中心行业越来越像房地产了,数据中心这种业务可复制性比较强,竞争激烈。到2013年的时候,有一些新的技术出来,包括OpenStack的爆发式增长,于是2014年开始决定去做云计算这个事情。 当初的定义是多平台,从实际应用场景来看的话,不是说虚拟机和容器哪个好,它们两个应用在不同的场景,没有谁替代谁的问题,要做两个平台的时候,又碰到一个很尴尬的问题,虚拟机的网络和容器的网络,完全是两回事。 中间我们找了差不多10个SDN技术,从商用的到开源的,再到国产小范围应用的,那个时候Tungsten Fabric还叫OpenContrail,当时的版本还只支持OpenStack。 CMP是这几年提出来的,但刚开始做的时候,已经有CMP的理念了。 对比所有的Portal去看,不管是OpenStack还是原生的K8s,基本都是以运维视角出发的,不是一个对外提供业务的一个case。所以从使用者来看的话,是一件非常痛苦的事情,当时我们就决定把两个平台统一,在Web上做一个完整的、基于用户自己界面的平台。 在那个时候,确定了数讯云平台和SDN的方向

kubernetes(k8s)容器编排工具基础概念

╄→гoц情女王★ 提交于 2020-01-14 00:45:36
kubernetes(k8s)容器编排工具基础概念 Kubernetes (K8s):   中文社区: https://www.kubernetes.org.cn/replication-controller-kubernetes   官网: https://kubernetes.io/   是一个开源系统,用于容器化应用的自动部署、扩缩和管理。Kubernetes 将构成应用的容器按逻辑单位进行分组以便于管理和发现。   Kubernetes 基于 谷歌公司在运行生产负载上的 15 年经验 打造,并融合了来自社区的最佳建议与实践。我们先来看看他的架构图:   要使用 Kubernetes,你需要用 Kubernetes API 对象 来描述集群的 预期状态(desired state) :包括你需要运行的应用或者负载,它们使用的镜像、副本数,以及所需网络和磁盘资源等等。你可以使用命令行工具 kubectl 来调用 Kubernetes API 创建对象,通过所创建的这些对象来配置预期状态。你也可以直接调用 Kubernetes API 和集群进行交互,设置或者修改预期状态。   一旦你设置了你所需的目标状态,Kubernetes 控制面(control plane) 会通过 Pod 生命周期事件生成器( PLEG ),促成集群的当前状态符合其预期状态。为此,Kubernetes

Tungsten Fabric如何编排

这一生的挚爱 提交于 2020-01-14 00:31:07
OpenStack和TF集成 OpenStack是虚拟机和容器的领先的开源编排系统。Tungsten Fabric提供了Neutron网络服务的实现,并提供了许多附加功能。 在OpenStack中,用户组被分配到“项目”,其中诸如VM和网络之类的资源是私有的,并且其他项目中的用户无法看到(除非特别启用)。 在vRouters中使用VRF且每个网络都有路由表,可以直接在网络层中实施项目隔离,因为只有到允许目的地的路由才会分发到计算节点上的vRouters中的VRF,并且不会发生泛洪vRouter执行的代理服务。 网络服务是Neutron,计算代理是Nova(OpenStack计算服务)。 当两者都部署在OpenStack环境中时,Tungsten Fabric可以在VM和Docker容器之间提供无缝网络。 在下图中,可以看到OpenStack的Tungsten Fabric插件提供了从Neutron网络API到Tungsten Fabric API调用的映射,后者在Tungsten Fabric控制器中执行。 Tungsten Fabric支持网络和子网的策略,以及OpenStack网络策略和安全组。可以在OpenStack或Tungsten Fabric中创建这些实体,并且在两个系统之间同步任何更改。 此外,Tungsten Fabric还支持OpenStack LBaaS v2

DevOps利器之Docker入门篇

拥有回忆 提交于 2020-01-13 23:46:40
简介 What? Docker是基于Go语言实现的开源容器项目,诞生于2013年年初,由dotCloud公司发起,此公司后改名为Docker Inc.Docker项目已加入Linux基金会,并遵循Apache2.0协议,代码托管在Github: Docker源码地址 各大操作系统现都支持Docker,并且最新的Linux发行版RedHat、CentOS、Ubuntu中均已默认带有Docker软件包. Docker的构想是要实现“Build,Ship and Run Any App, Anywhere”,即通过对应用的封 装( Packaging)、分发( Distribution)、部署( Deployment)、运行( Runtime)生命周期进行管 理,达到应用组件级别的“ 一次封装 ,到处运行” 。 这里的应用组件, 既可以 是一个 Web 应 用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。 基于 Linux 平 台上的多项开源技术, Docker 提供了高效、敏捷和轻量级的容器方案,并 支持部署到本地环境和多种主流云平台 。 可以说 , Docker首次为应用 的开发 、运行和部署提 供了“一站式”的实用解决方案。 早期Docker代码实现是基于LXC(Linux Containers,即Linux容器),自0.9版本开始