云化介绍

云化各组件是什么?

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 世界的基石,用户基于镜像创建容器,它是基于联合文件系统的一种层式结构,由一系列指令一步步构建出来的。可以简单的理解为镜像就是容器运行的程序代码。
Ø Registry Docker Registry 来保存用户构建的镜像。 Registry 分为公共和私有两种。 Docker 公司运营的公共 Registry 叫做 Docker Hub 。用户可以在 Docker Hub 上注册账号,分享并保存自己构建的镜像。
Ø 容器 (container) :容器是基于镜像启动起来的,容器中可以运行一个或者多个进程,我们可以认为,镜像是 Docker 生命周期中的构建和打包阶段,而容器则是启动和执行阶段
Ø Docker 守护 进程 docker deamon
Ø Docker 客户端 docker client 实际上是 docker 的二进制程序,是主要的用户与 Docker 交互方式。
Ø libcontainer 用于容器管理的包,管理 namespaces cgroups capabilities 以及文件系统来对容器控制。可用 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的基本操作
Ø 查询本地镜像 # docker images
Ø 搜索 镜像 # 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
Ø 删除 镜像 # docker rmi image_name
Ø 入镜像文件 # docker save -o image.tar debian:8
Ø 查看 所有的容器 # docker ps –a
Ø 运行 容器 # docker run --name container_name - dti debian / bin/bash
Ø 进入 运行容器 # docker exec -ti debian bash
Ø 停止 容器 # docker stop container_name
Ø 启动 容器 # docker start container_name
Ø 查看 容器状态 # docker stats container_name
Ø 删除 容器 # docker rm container_name
Ø 导出 容器 # docker export -o container.tar container_name
网络模型之docker
网络模型之kubernetes
 
  Ø Pod IP 地址是 Docker Daemon 根据 docker0 网桥的 IP 地址段进行分配的。 Service Cluster IP 地址相对于 Pod IP 地址来说相对稳定, Service 被创建时即被分配一个 IP 地址,在销毁该 Service 之前,这个 IP 地址都不会变化了。而 Pod K8s 集群中生命周期较短,可能被 ReplicationController 销毁、再次创建,新创建的 Pod 将会分配一个新的 IP 地址
Ø kubernetes 的服务发现机制:通过 Add-On 增值包的方式引入 DNS 系统,把服务名作为 DNS 域名,程序可以使用服务名来建立链接。
Ø 外部系统访问 service Node IP + NodePort 模式访问此服务。
Ø Load balancer HAProxy Nginx
目的:为了能通过服务的名字在集群内部进行服务的相互访问,需要创建一个虚拟的 DNS 服务来完成服务名到 C lusterIP 的解析
Ø etcd DNS 存储
Ø kube2sky :将 Kubernetes Master 中的 Service 注册到 etcd
Ø skyDNS :提供 DNS 域名解析服务
Ø healthz :提供对 skydns 服务的健康检查功能
网络模型之calico


MooseFS分布式存储

  MooseFS 有哪些特点
1. MooseFS 提供了类 Unix 文件系统的标准操作,应用程序无需修改即可运行
文件层级结构
保存 POSIX 标准文件属性
支持特殊文件类型
支持软 / 硬联接
支持基于 IP 和密码的存储访问
2. MooseFS 提供了比单机存储系统更加优秀的特性
采用多副本方式提高可靠性
容量可以动态扩展
支持被删除文件的恢复
支持一致性快照
zookeeper
 
 





猜你喜欢

转载自www.cnblogs.com/fangh/p/9049968.html