zoukankan      html  css  js  c++  java
  • 云化介绍

    云化各组件是什么?

    1、Docker是什么?

    Docker是一个跨平台,可移植并且简单易用的容器解决方案。

    官方的定义:Docker是以docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建、发布和运行分布式应用的平台。

    2、Kubernetes是什么?

    kubernetes是Borg的开源版本;Brog是google公司内部使用的大规模集群管理系统,它是基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。

    kubernetes是一个全新的基于容器技术的分布式架构领先方案。

    kubernetes提供的自动化机制,大幅度降低系统后期的运维难度和运维成本。

    kubernetes是一个完备的分布式系统支撑平台。

    3、MooseFS是什么?

    MooseFS是是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性、高可靠性和持久性。它能够将文件分布存储于不同的物理机器上,对外却提供的是一个透明的接口的存储资源池。它还具有在线扩展、文件切块存储、节点无单点故障、读写效率高等特点。

    4、ZooKeeper是什么?

    ZooKeeper是一个开源的分布式协调服务,他为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名空间服务,配置服务和分布式锁等分布式基础服务。

    5、Etcd是什么?

    etcd是一个分布式的、可靠的key-value存储系统,用于存储分布式系统的最关键的数据。

    6、Calico是什么?

    Calico是一个纯三层的协议,为docker容器提供多主机间通信。Calico不使用重叠网络,使用虚拟路由代替虚拟交换,每一台虚拟路由通过BGP协议传播可达信息(路由)到剩余数据中心。

    7、Keepalived是什么?

    Keepalived 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能。

    云化概述:

    云计算是一种资源的服务模式,该模式可以实现随时随地、便捷按需地从可配置计算资源共享池中获取所需的资源(如网络、服务器、存储、数据库,运行时环境、应用及服务)资源能够快速供应并释放,大大减少资源管理工作开销。

    经典云计算架构包括Iaas(Infrastructure as a Service,基础设施即服务)、PaaS(Platform as a Service平台即服务)、SaaS(Software as a Service,软件即服务)

    IaaS层为基础设施运维人员服务,提供计算、存储、网络及其他基础资源。

    PaaS层为应用开发人员服务,提供支撑应用运行所需的软件运行时环境、相关工具与服务。

    SaaS层为一般用户服务,提供了一套完整可用的软件系统,让一般用户无需关注技术细节,只需通过浏览器、应用客户端等方式就能提供部署在云上的应用服务。

    IaaS管理控制软件:openstack、zstack等;具有代表性的厂商:Vmware、微软、IBM、CloudSwitch、HP、Openstack、Eucalyptus、Amazon EC2、Google Compute Engine、华胜天成、阿里巴巴、世纪互联、万网、鹏博士等等

    PaaS管理控制软件:kubernetes、mesos等;

    Docker项目有Solomon Hukeys所带领的团队发起,在Dokcer公司的前身dotCloud内部启动孕育,代码托管于GitHub。

    围绕Docker生态系统自上而下分别覆盖IaaS层和PaaS层所涉及的各类问题,包括资源调度、编排、部署、配置管理、网络管理、应用管理和部署平台、应用开发工具、应用服务供应以及大数据分析等云计算相关的服务。Docker及其生态主要带来了以下几点好处:

    1、持续部署与测试。

    2、跨云平台支持。

    3、环境标准化和版本控制。

    4、高资源利用率与隔离。

    5、容器跨平台性与镜像。

    6、易于理解与易用。

    7、应用镜像仓库

    容器云以容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员提供用于构建、发布和运行分布式应用的平台。当容器云专注于资源共享与隔离、容器编排与部署时,它更接近传统的IaaS;当容器云渗透到应用支撑与运行环境时,它更接近PaaS。

    容器云并不仅限于Docker,基于kubernetes构建的PaaS平台也是容器云。Docker的出现让人们意识到容器的价值,使得一直以来长期存在但未被重视的轻量级虚拟化技术得到快速的发展和应用。

    docker前期发展重要历程:

    2013年3月:Docker正式发布开源版本,GitHub中的Docker代码提交盛况空前。

    2013年11月:REHL6.5正式版发布,集成对Docker的支持。

    2014年4月到6月:云技术市场上的三巨头Amazon、Google及Mrcrosoft支持Docker。

    2014年6月:Docker1.0版本正式发布。

    2014年8月:Vmware宣布与Docker建立合作关系,标志虚拟化市场的新格局。

    2014年10月:微软宣布将整合Docker进入下一代Windows Server中。

    2014年底:Google发布容器引擎GCE致力于为用户提供面向Docker化应用的云计算平台,Amazon发布的EC2,它是一项高度可扩展,高性能,免费的容器管理服务。

    截止2015年5月:GitHub的docker的贡献者多达千人,近5000个分支(Fork)。

    PAAS平台架构图

    kubernetes的整体架构:

    kubernetes的基本术语:

    ØMaster 集群的控制节点。

    ØNode除master外的其他机器称为node。

    ØDeployment 是kubernetes1.2引入的的新概念,为了更好解决Pod的编排问题。

    ØHPA 通过追踪分析RC控制的所有目标Pod的负载变化情况,来确定是否针对性的调整Pod的副本数。(kubernetes 1.4后只支持稳定版本)

    ØPods  是连接在一起的容器组合并共享文件卷。它们是最小的部署单元,由 Kubernetes统一创建、调度、管理。Pods是可以直接创建的,但推荐的做法是使用 Replication Controller,即使是创建一个 Pod。

    ØReplication controllers  管理 Pods 的生命周期。它们确保指定数量的 Pods 会一直运行,通过创建和杀掉 Pods 可以保证到这个效果。

    ØLabels  它被用来管理和选取基于键值对为基础的对象组。

    ØServices  提供独立、可靠名称和地址的 Pods 集合。它就像一个基础版本的负载均衡器。

    ØNode  相对master是工作主机,较早版本也叫Minon,物理机、虚拟机均可;kubelet、kube-proxy、docker daemon;相当于openstack中的计算节点。

    ØNamespace  不同的namespace形成逻辑上不同的项目或用户组

    ØVolume  是Pod中被多个容器访问的共享目录。支持EmptyDir、hostPath、gcePersistenDisk、awsElasticBlockStore、nfs、iscsi等等。

    基本概念

    翻译

    Container

    容器

    Pod

    容器组

    Replication Controller

    副本控制器

    Service

    服务

    Label

    标签

    Node

    节点

    master

    主节点

    Deployment

    副本控制器

    HPA

    自动扩缩容

     kubernetes核心原理
    kubernetes的安全机制
     
     
     kubernetes的基本操作
    Ø1. 创建资源对象

            根据yaml配置文件一次性创建servicerckubectl create -f my-service.yaml -f my-rc.yaml

    根据<directory>目录下所有.yaml.yml.json文件的定义进行创建操作kubectl create -f <directory>

    Ø2. 查看资源对象

            查看所有Pod列表kubectl get pods

            查看rcservice列表kubectl get rc,service

    Ø3. 描述资源对象

            显示Node的详细信息kubectl describe nodes <node-name>

            显示Pod的详细信息kubectl describe pods/<pod-name>

            显示由RC管理的Pod的信息kubectl describe pods <rc-name>

    Ø4. 删除资源对象

            基于Pod.yaml定义的名称删除Podkubectl delete -f pod.yaml

            删除所有包含某个labelPodservicekubectl delete pods,services -l name=<label-name>

            删除所有Podkubectl delete pods --all

    Ø
    Ø5. 执行容器的命令

            执行Poddata命令,默认是用Pod中的第一个容器执行kubectl exec <pod-name> data

            指定Pod中某个容器执行data命令kubectl exec <pod-name> -c <container-name> data

            通过bash获得Pod中某个容器的TTY,相当于登录容器kubectl exec -it <pod-name> -c <container-name> bash

    Ø6.Pod的扩容与缩容

            执行扩容缩容Pod的操作kubectl scale rc redis --replicas=3

           

    Ø7.Pod的滚动升级

            执行滚动升级操作kubectl rolling-update redis -f redis-rc.update.yaml

     
     
     docker的namesapce隔离
     docker的基本概念和术语
     
     
    Ø镜像(image):镜像是构建docker世界的基石,用户基于镜像创建容器,它是基于联合文件系统的一种层式结构,由一系列指令一步步构建出来的。可以简单的理解为镜像就是容器运行的程序代码。
    ØRegistryDockerRegistry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营的公共Registry叫做Docker Hub。用户可以在Docker Hub上注册账号,分享并保存自己构建的镜像。
    Ø容器(container):容器是基于镜像启动起来的,容器中可以运行一个或者多个进程,我们可以认为,镜像是Docker生命周期中的构建和打包阶段,而容器则是启动和执行阶段
    ØDocker守护进程dockerdeamon
    ØDocker客户端docker client实际上是 docker的二进制程序,是主要的用户与 Docker交互方式。
    Ølibcontainer用于容器管理的包,管理namespacescgroupscapabilities以及文件系统来对容器控制。可用Libcontainer创建容器,并对容器进行管理。pivot_root 用于改变进程的根目录,可以将进程控制在rootfs中。如果rootfs是基于ramfs的(不支持pivot_root),那会在mount时使用MS_MOVE标志位加上chroot来顶替Libcontainer通过接口的方式定义了一系列容器管理的操作,包括处理容器的创建(Factory)、容器生命周期管理(Container)、进程生命周期管理(Process)等一系列接口。
     
    docker使用的cgroup的配置限额
    docker的AUFS
    docker实现持续发布
     dockerfile语法
    ØADD

    ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中。

    ØCMD

    RUN命令相似,CMD可以用于执行特定的命令。和RUN不同的是,这些命令不是在镜像构建的过程中执行的,而是在用镜像构建容器后被调用。

    ØENTRYPOINT

    配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。

    每个 Dockerfile中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。

    ENTRYPOINT 帮助你配置一个容器使之可执行化,如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令。

    ØENV

    ENV命令用于设置环境变量。这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。

    ØEXPOSE

    EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互。

    ØFROM

    FROM命令可能是最重要的Dockerfile命令。改命令定义了使用哪个基础镜像启动构建流程。基础镜像可以为任意镜 像。如果基础镜像没有被发现,Docker将试图从Docker image index来查找该镜像。FROM命令必须是Dockerfile的首个命令。

    ØMAINTAINER

    建议这个命令放在Dockerfile的起始部分,虽然理论上它可以放置于Dockerfile的任意位置。这个命令用于声明作者,并应该放在FROM的后面。

    ØRUN

    RUN命令是Dockerfile执行命令的核心部分。它接受命令作为参数并用于创建镜像。不像CMD命令,RUN命令用于创建镜像(在之前commit的层之上形成新的层)。

    ØUSER

    USER命令用于设置运行容器的UID

    ØVOLUME

    VOLUME命令用于让你的容器访问宿主机上的目录。

    ØWORKDIR

    WORKDIR命令用于设置CMD指明的命令的运行目录。

    docker的基本操作
    Ø查询本地镜像#dockerimages
    Ø搜索镜像#docker search debian
    Ø下载镜像#docker pull debian
    Ø创建镜像(创建镜像可以通用2方式完成,1保存镜像修改,2通过Dockerfile文件)#docker commit -m "commont of this image" -a "Autho" container_name repo/image:tag#docker build -t repo/image:tag . # 注意"."为当前目录必须包含Dockerfile文件
    Ø提交镜像#docker push container_name
    Ø删除镜像#dockerrmiimage_name
    Ø入镜像文件#docker save -o image.tar debian:8
    Ø查看所有的容器#dockerps–a
    Ø运行容器#docker run --name container_name -dtidebian /bin/bash
    Ø进入运行容器#docker exec -ti debianbash
    Ø停止容器#docker stop container_name
    Ø启动容器#docker start container_name
    Ø查看容器状态#docker stats container_name
    Ø删除容器#dockerrmcontainer_name
    Ø导出容器#docker export -o container.tar container_name
    网络模型之docker
    网络模型之kubernetes
     
     ØPodIP地址是Docker Daemon根据docker0网桥的IP地址段进行分配的。ServiceCluster IP地址相对于PodIP地址来说相对稳定,Service被创建时即被分配一个IP地址,在销毁该Service之前,这个IP地址都不会变化了。而PodK8s集群中生命周期较短,可能被ReplicationController销毁、再次创建,新创建的Pod将会分配一个新的IP地址
    Økubernetes的服务发现机制:通过Add-On增值包的方式引入DNS系统,把服务名作为DNS域名,程序可以使用服务名来建立链接。
    Ø外部系统访问serviceNode IP + NodePort模式访问此服务。
    ØLoad balancerHAProxyNginx
    目的:为了能通过服务的名字在集群内部进行服务的相互访问,需要创建一个虚拟的DNS服务来完成服务名到ClusterIP的解析
    ØetcdDNS 存储
    Økube2sky:将Kubernetes Master中的Service注册到etcd
    ØskyDNS:提供DNS域名解析服务
    Øhealthz:提供对skydns服务的健康检查功能
    网络模型之calico
    MooseFS分布式存储
     MooseFS有哪些特点
    1.MooseFS提供了类Unix文件系统的标准操作,应用程序无需修改即可运行
    文件层级结构
    保存POSIX标准文件属性
    支持特殊文件类型
    支持软/硬联接
    支持基于IP和密码的存储访问
    2.MooseFS提供了比单机存储系统更加优秀的特性
    采用多副本方式提高可靠性
    容量可以动态扩展
    支持被删除文件的恢复
    支持一致性快照
    zookeeper
     
     
     





  • 相关阅读:
    Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)
    Python全栈开发记录_第六篇(生成器和迭代器)
    Python全栈开发记录_第五篇(装饰器)
    Python全栈开发记录_第四篇(集合、函数等知识点)
    Python全栈开发记录_第三篇(linux(ubuntu)的操作)
    Python全栈开发记录_第二篇(文件操作及三级菜单栏增删改查)
    Python全栈开发记录_第一篇(循环练习及杂碎的知识点)
    NET控件Designer架构设计
    如何把Excel中的单元格等对象保存成图片
    “某某云词典” – 纠结的初体验
  • 原文地址:https://www.cnblogs.com/fangh/p/9049968.html
Copyright © 2011-2022 走看看