精华内容
下载资源
问答
  • 部署 Kubernetes 容器集群管理系统

    千次阅读 多人点赞 2020-12-12 10:19:48
    部署 Kubernetes 容器集群管理系统一、 Kubernetes 和相关组件介绍1.Kubernetes 概述2.Kubernetes 架构设计图3.Kubernetes 常见组件介绍4.总结各组件之间的关系二、 部署 Kubernetes 容器集群管理系统 一、 ...

    一、 Kubernetes 和相关组件介绍

    1.Kubernetes 概述

    Kubernetes 是 Google 开源的容器集群管理系统,基于 Docker 构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件。基于容器的云平台。官网:https://kubernetes.io/

    2.Kubernetes 架构设计图

    在这里插入图片描述

    3.Kubernetes 常见组件介绍

    • master:Kubernetes 管理节点。
    • apiserver:提供接口服务,用户通过 apiserver 来管理整个容器集群平台。API Server 负责和 etcd 交互(其他组件不会直接操作 etcd,只有 API Server 这么做),整个 Kubernetes 集群的所有交互都是以 API Server 为核心的。如:
    1. 所有对集群进行的查询和管理都要通过 API 来进行。
    2. 所有模块之间并不会互相调用,而是通过和 API Server 打交道来完成自己那部分的工作 、API Server 提供的验证和授权保证了整个集群的安全。
    • scheduler:Kubernetes 调度服务。
    • Replication Controllers:复制,保证 pod 的高可用。
    • minion:真正运行容器 container 的物理机。Kubernetes 中需要很多 minion 机器,来提供运算。
    • container:容器,可以运行服务和程序。
    • Pod:在 Kubernetes 系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个 Pod,Pod 是一个可以被创建、销毁、调度、管理的最小的部署单元。Pod 中可以包括一个或一组容器。
    • Kube_proxy:代理。做端口转发,相当于 LVS-NAT 模式中的负载调度器。Proxy 解决了同一宿主机,相同服务端口冲突的问题,还提供了的对外服务的能力,Proxy 后端使用了随机、轮询负载均衡算法。
    • etcd:etcd 存储 Kubernetes 的配置信息,可以理解为是 k8s 的数据库,存储着 k8s 容器云平台中所有节点、Pods、网络等信息。
    • Services: Services 是 Kubernetes 最外围的单元,通过虚拟一个访问 IP 及服务端口,可以访问我们定义好的 Pod 资源,目前的版本是通过 iptables 的 nat 转发来实现,转发的目标端口为 Kube_proxy 生成的随机端口。
    • Labels :标签。Labels 是用于区分 Pod、Service、Replication Controller 的 key/value 键值对,仅使用在 Pod、Service、 Replication Controller 之间的关系识别,但对这些单元本身迚行操作时得使用 name 标签。
    • Deployment:Kubernetes Deployment 用于更新 Pod 和 Replica Set(下一代的 Replication Controller)的方法,你可以在 Deployment 对象中只描述你所期望的理想状态(预期的运行状态),Deployment 控制器会将现在的实际状态转换成期望的状态。Deployment 可以帮我们实现无人值守的上线,大大降低我们的上线过程的复杂沟通、操作风险。

    4.各组件之间的关系

    1. Kubernetes 的架构由一个 master 和多个 minion 组成,master 通过 api 提供服务,接受 kubectl 的请求来调度管理整个集群。 kubectl: 是 k8s 平台的一个管理命令。
    2. Replication controller 定义了多个 pod 戒者容器需要运行,如果当前集群中运行的 pod 或容器达不到配置的数量,Replication controller 会调度容器在多个 minion 上运行,保证集群中的 pod 数量。
    3. service 则定义真实对外提供的服务,一个 service 会对应后端运行的多个 container。
    4. Kubernetes 是个管理平台,minion 上的 kube-proxy 拥有提供真实服务公网 IP。客户端访问 kubernetes 中提供的服务,是直接访问到 kube-proxy 上的。
    5. 在 Kubernetes 中 pod 是一个基本单元,一个 pod 可以是提供相同功能的多个 container,这些容器会被部署在同一个 minion 上。minion 是运行 Kubelet 中容器的物理机。minion 接受 master 的指令创建 pod 或者容器。

    二、 部署 Kubernetes 容器集群管理系统

    准备工作:

    主机名 操作系统 IP地址 CPU 内存
    master CentOS7 192.168.1.1 4核 2G
    etcd 192.168.1.2
    node1 192.168.1.3
    node2 192.168.1.4

    在这里插入图片描述

    1.配置 Kubernetes 的 yum 源

    挂光盘,并配置本地yum源
    把 k8s-package.tar.gz 上传到 master 机器中:

    [root@master ~]# ls
    anaconda-ks.cfg  k8s-package.tar.gz
    [root@master ~]# tar zxf k8s-package.tar.gz 
    [root@master ~]# ls
    anaconda-ks.cfg  k8s-package  k8s-package.tar.gz
    [root@master ~]# cat <<END > /etc/yum.repos.d/k8s.repo
    [k8s]
    name=k8s
    baseurl=file:///root/k8s-package
    enabled=1
    gpgcheck=0
    END
    

    在这里插入图片描述
    复制 k8s yum 源相关文件到其他三台机器上:
    你们按下面依次远程复制即可,只有地址是不一样的

    [root@master ~]# scp -r /root/k8s-package 192.168.1.2:/root/
    [root@master ~]# scp /etc/yum.repos.d/k8s.repo  192.168.1.2:/etc/yum.repos.d/			
    

    2.配置 hosts 文件

    [root@master ~]# cat <<END >> /etc/hosts
    192.168.1.1 master
    192.168.1.2 etcd
    192.168.1.3 node1
    192.168.1.4 node2
    END
    将hosts文件远程复制到其他三台机器中:
    [root@master ~]# scp /etc/hosts 192.168.1.2:/etc/
    

    在这里插入图片描述

    3.在各个节点上面安装 k8s 组件

    master:

    [root@master ~]# yum -y install kubernetes flannel ntp
    

    etcd:

    [root@etcd ~]# yum -y install etcd flannel ntp
    

    node1,node2:

    [root@node1 ~]# yum -y install kubernetes flannel ntp
    

    4.部署 etcd 服务器

    1)配置 etcd 主配置文件

    [root@etcd ~]# vim /etc/etcd/etcd.conf
    9 ETCD_LISTEN_CLIENT_URLS="http://localhost:2379,http://192.168.1.2:2379"
    20 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.2:2379"
    

    在这里插入图片描述

    [root@etcd ~]# systemctl start etcd				#启动etcd服务
    [root@etcd ~]# systemctl enable etcd			#设置etcd开启自启
    [root@etcd ~]# netstat -anpt | grep 2379		#查看etcd端口号
    [root@etcd ~]# etcdctl member list				#检查etcd集群成员列表,这里只有一台
    

    在这里插入图片描述

    2)设置 etcd 网络

    [root@etcd ~]# etcdctl mkdir /k8s/network			#创建一个目录 /k8s/network 用于存储 flannel 网络信息
    [root@etcd ~]# etcdctl set /k8s/network/config '{"Network":"10.255.0.0/16"}'	#给 /k8s/network/config 赋一个字符串的值
    [root@etcd ~]# etcdctl get /k8s/network/config		#查看
    

    3)flannel 启动过程解析

    1. 从 etcd 中获取出 /k8s/network/config 的值
    2. 划分 subnet 子网,并在 etcd 中进行注册
    3. 将子网信息记录到 /run/flannel/subnet.env 中

    4)配置 flanneld 服务

    [root@etcd ~]# vim /etc/sysconfig/flanneld
    4 FLANNEL_ETCD_ENDPOINTS="http://192.168.1.2:2379"
    8 FLANNEL_ETCD_PREFIX="/k8s/network"
    11 FLANNEL_OPTIONS="--iface=ens33"
    

    在这里插入图片描述

    [root@etcd ~]# systemctl start flanneld
    [root@etcd ~]# ifconfig
    

    在这里插入图片描述

    5)查看子网信息

    [root@etcd ~]# cat /run/flannel/subnet.env
    

    在这里插入图片描述

    • 之后将会有一个脚本将 subnet.dev 转写成一个 docker 的环境变量文件 /run/flannel/docker。
    • docker0 的地址是由 /run/flannel/subnet.env 的 FLANNEL_SUBNET 参数决定的。
    [root@etcd ~]# cat /run/flannel/docker
    

    在这里插入图片描述

    5.部署 master 服务器

    1)配置 kubernetes 主配置文件

    [root@master ~]# vim /etc/kubernetes/config
    22 KUBE_MASTER="--master=http://192.168.1.1:8080"
    

    在这里插入图片描述

    2)配置 apiserver 配置文件

    [root@master ~]# vim /etc/kubernetes/apiserver
    8 KUBE_API_ADDRESS="--insecure-bind-address=0.0.0.0"
    17 KUBE_ETCD_SERVERS="--etcd-servers=http://192.168.1.2:2379"
    23 KUBE_ADMISSION_CONTROL="--admission-control=AlwaysAdmit"
    

    在这里插入图片描述

    3)配置 kube-scheduler 配置文件

    [root@master ~]# vim /etc/kubernetes/scheduler
    7 KUBE_SCHEDULER_ARGS="0.0.0.0"
    

    在这里插入图片描述

    5)配置 flanneld 服务

    [root@master ~]# vim /etc/sysconfig/flanneld 
    4 FLANNEL_ETCD_ENDPOINTS="http://192.168.1.2:2379"
    8 FLANNEL_ETCD_PREFIX="/k8s/network"
    11 FLANNEL_OPTIONS="--iface=ens33"
    

    在这里插入图片描述

    6)启用 master 上 4 个服务

    [root@master ~]# systemctl start kube-apiserver kube-controller-manager kube-scheduler flanneld				
    [root@master ~]# systemctl enable kube-apiserver kube-controller-manager kube-scheduler flanneld			
    [root@master ~]# ifconfig
    

    在这里插入图片描述

    5.部署 node1,node2 节点服务器

    node1,node2操作步骤一致:

    1)配置 flanneld 服务

    [root@node1 ~]# vim /etc/sysconfig/flanneld
    4 FLANNEL_ETCD_ENDPOINTS="http://192.168.1.2:2379"
    8 FLANNEL_ETCD_PREFIX="/k8s/network"
    11 FLANNEL_OPTIONS="--iface=ens33"
    

    在这里插入图片描述

    2)配置 master 地址

    [root@node1 ~]# vim /etc/kubernetes/config
    22 KUBE_MASTER="--master=http://192.168.1.1:8080"
    

    在这里插入图片描述

    3)配置 kubelet

    [root@node1 ~]# vim /etc/kubernetes/kubelet
    5 KUBELET_ADDRESS="--address=0.0.0.0"
    11 KUBELET_HOSTNAME="--hostname-override=node1"				     #node2主机改为node2
    14 KUBELET_API_SERVER="--api-servers=http://192.168.1.1:8080"
    

    在这里插入图片描述

    4)启用服务

    [root@node1 ~]# systemctl start flanneld kube-proxy kubelet docker 
    [root@node1 ~]# systemctl enable flanneld kube-proxy kubelet docker
    [root@node1 ~]# ifconfig
    

    在这里插入图片描述

    5)查看 proxy 端口号

    [root@node1 ~]# netstat -antp | grep proxy
    

    在这里插入图片描述

    6.在 master 上查看整个集群的运行状态

    [root@master ~]# kubectl get nodes
    

    在这里插入图片描述

    展开全文
  • 目前,Docker容器集群管理主流方案有3种,分别是Swarm、Kubernetes、Mesos。 Swarm是Docker公司自研发的集群管理系统。 Kubernetes是Google开源的一个容器集群管理系统,用于自动化部署、扩展和管理容器应用。也...

    目前,Docker容器集群管理主流方案有3种,分别是Swarm、Kubernetes、Mesos。

    Swarm是Docker公司自研发的集群管理系统。

    Kubernetes是Google开源的一个容器集群管理系统,用于自动化部署、扩展和管理容器应用。也称为K8S。

    Mesos是一个集群资源调度系统,对集群中的资源进行分配和管理。Marathon是运行在Mesos之上的一个服务管理框架,可管
    理容器生命周期。
     
    Swarm、Kubernetes和Mesos简单比较:
    复杂性
    Swarm使用标准Docker接口,集成于Docker Engine,内置Overlay网络、服务发现、负载均衡,很容易上手,学习成本低。
    K8S成熟且复杂,自己的管理体系,服务发现,负载均衡等功能,学习成本高。
    Mesos是一个成熟分布式资源管理框架,一个通用的集群管理系统。
    功能
    Swarm支持Docker Compose v3来实现服务编排。
    K8S强大的功能,有着一套整体容器解决方案,使用起来更轻松。
    社区活跃度
    K8S社区相比Swarm和Mesos活跃度都高
    展开全文
  • Kubernetes简称k8s,是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。将现有服务容器化也是目前的趋势,前段时间搭建了一个master,两个node的k8s环境,master调度...

    一、Kubernetes是什么

        Kubernetes简称k8s,是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。将现有服务容器化也是目前的趋势,前段时间搭建了一个master,两个node的k8s环境,master调度整个集群,nodes负责运行应用,记录下。
        pod是容器的集合,通常将紧密相关的一组容器放到同一个pod中,同一个pod中的所有容器共享IP地址和Port。pod是Kubernetes的最小工作单元,pod中的容器作为一个整体被Master调度到一个Node上运行。
        创建部署后,Kubernetes主节点将调度该部署中包含的应用程序实例,使其在集群中的各个节点上运行。
        Kubectl使用Kubernetes API与集群进行交互。
        容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势。每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
        Kubernete Service 是一个定义了一组Pod的策略的抽象,我们也有时候叫做宏观服务。因为每个pod都由自己的ip,这些IP也随着时间的变化也不能持续依赖。这样就引发了一个问题:如果一些Pods(让我们叫它作后台,后端)提供了一些功能供其它的Pod使用(让我们叫作前台),在kubernete集群中使用service实现让这些前台能够持续的追踪到这些后台。
    创建资源的两种方式:kubectl run 、kubectl apply -f,类似的命令:kubectl create、kubectl replace、kubectl edit、kubectl patch。
    k8s环境部署参考: link

    二、部署中遇到的问题及解决

        对于私有的镜像源,一般需要先制作好镜像push到私有的docker仓库才能部署,但是如果不方便上传镜像,可以在要运行的node节点和master分别制作一次镜像,也可以实现不push到私有仓库部署。
        有时错误的pod状态会变成Terminating,需要强制删除pod:kubectl delete pods podname --grace-period=0 --force
    镜像有问题时删除镜像:docker rmi -f ID
    集群重置:kubeadm reset

    展开全文
  • 容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,“笔者”的称谓已经不合适了,因为输入用键盘,叫“键人”更为合适)参加QCon...Swarm是Docker公司在2014年12月初新发布的容器集群管理工具。

    容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,“笔者”的称谓已经不合适了,因为输入用键盘,叫“键人”更为合适)参加QCon上海一个微服务监控的Session,场面爆棚,我不得不在拥挤的过道听完了整个session。随着要管理的容器越来越多,容器的集群管理平台成为了刚需!

    Docker Swarm

    Swarm是Docker公司在2014年12月初新发布的容器集群管理工具。它可以把多个主机变成一个虚拟的Docker主机来管理。Swarm使用Go语言开发,并且开源,在github上可以找到它的全部source code。Swarm使用标准的Docker API,给Docker用户带来无缝的集群使用体验。2016年7月, Swarm已经被整合进入Docker Engine。

    功能

    Docker Swarm提供API 和CLI来在管理运行Docker的集群,它的功能和使用本地的Docker并没有本质的区别。但是可以通过增加Node带来和好的扩展性。理论上,你可以通过增加节点(Node)的方式拥有一个无限大的Docker主机。

    Swarm并不提供UI,需要UI的话,可以安装UCP,不过很不幸,这个UCP是收费的。

    架构

    Swarm的架构并不复杂,可以说非常简单。Manager负责容器的调度,Node负责容器的运行,Node运行Docker Daemon和Manager之间通过HTTP来通信。Docker Client通过Manager上暴露的标准Docker API来使用Docker的功能。

    Swarm的集群协调和业务发现可以支持不同的第三方组件,包括:

    • Consul
    • Etcd
    • ZooKeeper
    • Docker Hub

    如果对集群协调的概念不熟悉,可以参考我的另一篇博客《使用Python进行分布式系统协调 (ZooKeeper,Consul, etcd )》

    Swarm的基本容器调度策略有三种:

    • spread  容器尽可能分布在不同的节点上
    • binpack 容器尽可能分布在同一个节点上
    • random 容器分布在随机的节点上

    Swarm集群的高可用配置很容易,以下图为例:

    manager配置在不同的AWS AZ中,通过领导选举选出Primary manager。

    多个节点分布在不同的AZ中,同时Consul/etcd/ZooKeeper也需要配成冗余的。

    特点

    Docker Swarm的特点是配置和架构都很简单,使用Docker原生的API,可以很好的融合Docker的生态系统。


    Kubernetes

    Kubernetes是Google开发的一套开源的容器应用管理系统,用于管理应用的部署,维护和扩张。利用Kubernetes能方便地管理跨机器运行容器化的应用。Kubernetes也是用Go语言开发的,在github上可以找到源代码。

    Kubernetes 源于谷歌公司的内部容器管理系统Borg,经过了多年的生产环境的历炼,所以功能非常强大。

    功能

    Kubernetes主要提供一下的功能:

    • 使用Docker对应用程序包装(package)、实例化(instantiate)、运行(run)。
    • 以集群的方式运行、管理跨机器的容器。
    • 解决Docker跨机器容器之间的通讯问题。
    • Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
    • 应用的高可用和靠扩展
    • 支持应用的在线升级(Rolling Update)
    • 支持跨云平台(IaaS)的部署

    为了支持这些功能,Kubernetes做了做了很多的抽象概念,所以,刚开始使用Kubernetes,需要学习不少的新概念,包括:

    • Pod 
      Pod是Kubernetes的基本操作单元,把相关的一个或多个容器构成一个Pod,通常Pod里的容器运行相同的应用,或者是相关的应用。Pod包含的容器运行在同一个Minion(Host)上,看作一个统一管理单元,共享相同的volumes和network namespace/IP和Port空间。
    • Job
      Job是一个生命周期比较短的应用,一般只会在出错的情况下重启,可以通过配置Job的并发和运行次数来扩展Job
    • Service
      Service是一个生命周期比较长的应用,会在任何退出时重启,可以通过配置Service的复制(Replica)来达到高扩展和高可用
    • Recplica Controller
      Replication Controller确保任何时候Kubernetes集群中有指定数量的pod副本(replicas)在运行, 如果少于指定数量的pod副本(replicas),Replication Controller会启动新的Container,反之会杀死多余的以保证数量不变。Replication Controller使用预先定义的pod模板创建pods,一旦创建成功,pod 模板和创建的pods没有任何关联,可以修改pod 模板而不会对已创建pods有任何影响,也可以直接更新通过Replication Controller创建的pods

    以上是一些核心概念,除了这些,Kubernetes还提供其它一些概念,来支持应用程序的运维,包括:

    • Label
      对系统中的对象通过Label的方式来管理
    • Namespace
      对对象,资源分组,可以用于支持多租户
    • Config Map
      提供全局的配置数据存储

    总之,功能强大,系统概念繁多,比较复杂。

    Kubernetes支持安装UI的addon,来管理整个系统:

    架构

    下图是Kubernetes的基本架构:

    • Master
      Master定义了Kubernetes 集群Master/API Server的主要声明,Client(Kubectl)调用Kubernetes API,管理Kubernetes主要构件Pods、Services、Minions、容器的入口。Master由API Server、Scheduler以及Registry等组成。
      Scheduler收集和分析当前Kubernetes集群中所有Minion节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。由于一旦Minion节点的资源被分配给Pod,那这些资源就不能再分配给其他Pod, 除非这些Pod被删除或者退出, 因此,Kubernetes需要分析集群中所有Minion的资源使用情况,保证分发的工作负载不会超出当前该Minion节点的可用资源范围
    • Minion
      Minion负责运行Pod,Service,Jobs, Minion通过Kubelet和Master通信。Proxy解决了外部网络能够访问跨机器集群中容器提供的应用服务。

    • etcd
      负责集群的协调和服务发现

    特点

    Kubernetes提供了很多应用级别的管理能力,包括高可用可高扩展,当然为了支持这些功能,它的架构和概念都比较复杂,当然我觉得为了获得这些功能,值!


    Apache Mesos 

    Mesos是为软件定义数据中心而生的操作系统,跨数据中心的资源在这个系统中被统一管理。Mesos的初衷并非管理容器,只是随着容器的发展,Mesos加入了容器的功能。Mesos可以把不同机器的计算资源统一管理,就像同一个操作系统,用于运行分布式应用程序。

    Mesos的起源于Google的数据中心资源管理系统Borg。你可以从WIRED杂志的这篇文章中了解更多关于Borg起源的信息及它对Mesos影响。

    功能

    Mesos的主要功能包括:

    • 高度的可扩展和高可用
    • 可自定义的两级调度
    • 提供API进行应用的扩展
    • 跨平台

    下图是Mesos的管理界面:

    架构

    Mesos的基本架构如下


    • Master
      Master负责资源的统一协调和Slave的管理。 Master协调全部的Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。Mesos实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是Master的守护进程,管理Mesos集群中所有节点上运行的Slave守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如Hadoop和MPI作业。第二级调度由被称作Framework的“组件”组成。
    • Slave
      Salve运行执行器(Executor)进程来运行任务。
    • Framework
      Framework包括调度器(Scheduler)和执行器(Executor)进程,其中每个节点上都会运行执行器。Mesos能和不同类型的Framework通信,每种Framework由相应的应用集群管理。
      Framework可以根据应用程序的需求,选择接受或拒绝来自master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上任务,并在容器中执行,以使多种类型的任务
    • ZooKeeper
      Zookeeper负责集群的协调,Master的领导选举等

    特点

    Mesos相比Kubernetes和Swarm更为成熟,但是Mesos主要要解决的是操作系统级别的抽象,并非为了容器专门设计,如果用户出了容器之外,还要集成其它的应用,例如Hadoop,Spark,Kafka等,Mesos更为合适。Mesos是一个更重量级的集群管理平台,功能更丰富,当然很多功能要基于各种Framework。
    Mesos的扩展性非常好,最大支持50000节点,如果对扩展性要求非常高的话么,Mesos是最佳选择。


    AWS ECS

    ECS (Amazon EC2 Container Service )是亚马逊开发出的高度可扩展的高性能容器集群服务。在托管的 Amazon EC2 实例集群上轻松运行容器应用和服务。他最大的好处就是在云上,不需要自己管理数据中心的机器和网络。

    功能

    ECS继承了AWS服务的高扩展和高可用性,安全也可以得到保证。

    在基本容器管理的基础上,ECS使用TaskService的概念来管理应用。

    Task类似Docker Compose,使用一个JSON描述要运行的应用。Service是更高一层的抽象,包含多个task的运行实例,通过修改task实例的数量,可以控制服务的伸缩。同时Service可以保证指定数量的Task在运行,当出现错误的时候,重启失败的Task

    架构

    下图是ECS的架构图:

    使用EC2,ELB,安全组等大家熟悉的AWS的概念,AWS用户可以轻松管理你的容器集群。并且不需要付初基本资源以外的费用。

    通过ECS agent可以是Container连接到ECS集群。ECS Agent使用Go开发,已开源。

    我们并不清楚ECS的调度策略,但是AWS提供了一个例子,如果继承第三方的调度策略。

    通过Cloud Watch Log,我们可以很方便的对整个集群进行监控。

    特点

    如果你是一个AWS的重度用户,ECS是个不错的选择,因为你可以是把你的容器集群运行在AWS的云上,管理起来非常方便。


    比较

    这里对几个平台做一个简单的比较:

       Swarm Kubernetes Mesos ECS
    基本功能 Docker原生的集群管理工具 开源的容器集群工具,提供应用级别的部署,维护和扩张功能 基于数据中心的操作系统 基于云的高可用,高扩展容器集群
    高层次抽象

    Pod
    Job
    Service

    Task
    Service
    应用扩展性 支持 Framework 支持 支持
    应用高可用性 支持 Framework 支持 支持
    集群协调和服务发现

    etcd
    ZooKeeper
    Consul

    etcd ZooKeeper
    调度策略(Schedule) 内置,可扩展 内置 两级别,可扩展 可扩展
    监控 Logging Driver Heapter,ELK Addon 内置 CloudWatch
    用户界面

    CLI
    API
    UCP UI

    CLI
    API
    UI
    API
    UI

    CLI
    API
    AWS Console

    开发语言 Go Go Java NA
    开源
    最大支持管理节点数

    官方1000
    非官方5000 

    官方1000
    非官方2000

    10000

    总结

    四个平台,Swarm是最轻量级的,功能也最简单,适于有大量Docker实例环境的用户。Kubernetes增加了很多应用级别的功能,适用于快速应用的部署和维护。Mesos最重,适用于已经有了相当的应用和容器混合的环境。ECS则推荐给AWS的用户或者不希望自己管理数据中心的云用户。


    相关链接

    展开全文
  • 搭建Jmeter容器集群平台

    万次阅读 热门讨论 2018-05-03 11:11:49
    基于大量虚拟机的Jmeter集群有个缺点,就是不方便管理,比如需要重启Jmeter服务,还需要一个个的连接到虚拟机上进行操作,而且安装部署不方便(无法一键部署),也不方便将集群封装成整体应用对外提供服务。...
  • 相对以前主要通过API转发和聚合来构建...容器集群软件可以通过label 来筛选启动容器的主机,对于网络要求较高的容器,通过label仍然使用内网的主机来启动。同时保留私有云,主要要来满足需要启动Windows虚拟机的场景。
  • Docker容器集群构建 使用自定义网桥连接跨主机容器 Docker默认的网桥是docker0。它只会在本机连接所有的容器。 举例来说容器的虚拟网卡在主机上看一般叫做veth* 而docker0网桥把所有这些网卡桥接在一起,如下所示: ...
  • 对于Docker容器集群来说,比较成熟的方案包括Swarm、Mesos、k8s和Google的Kubernetes,特别是后者得到了更多厂商的使用和推广,但是kubernetes相比较来说技术门槛较高,让很多用户望而却步,幸好,Docker在今年的6月...
  • 十一、容器集群的管理(k8S、Swarm)

    千次阅读 2017-12-04 19:13:03
    Google开源的一个容器集群管理系统,用于自动化部署、扩展和管理容器应用。也称为K8S Mesos Mesos是一个集群资源调度系统,对集群中的资源进行分配和管理。Marathon是运行在Mesos之上的一个服务管理框架,可管 理...
  • Docker:Swarm + Stack 一站式部署容器集群概述Docker将应用沙盒化,将程序的运行与主机的环境隔离开,本身是十分适合进行应用程序的堆砌、组合、互动的。新推出的(还算新吧)swarm功能将不同的docker容器集成为...
  • Kubernetes是Google开源的容器集群管理系统。它构建Ddocker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等整一套功能,本质上可看作是基于容器技术的mini-PaaS平台。 Kubernetes is an ...
  • Kubernetes 是 Google开源的容器集群管理系统, 基于 Docker构建一个容器的调度服务, 提供资源调度、均衡容器、服务注册、动态扩缩容等功能套件。 基于容器的云平台 1 Kubernetes和相关组件的介绍 1、master:...
  • 容器技术提供了组件化的环境,可以帮助业务应用在云之间轻松迁移而无需显著的返工。随着容器在企业持续获得发展,厂商将增加新的功能让用户可以创建可扩展的基于容器的环境。然而,大范围控制容器部署也会有一些并发...
  • docker容器集群之swarm

    2018-02-03 16:36:15
    swarm是docker原生集成的容器编排服务,类似google的kubernetes和apache的...登陆到集群的每台vm上去部署实在是太麻烦了。 服务间互相调用的问题。服务间内部互相调用通常使用ip+端口的形式,一旦某个服务的ip或者...
  • 我们为什么使用容器? 我们为什么使用虚拟机(云主机)? 为什么使用物理机? 这一系列的问题并没有一个统一的标准答案。因为以上几类技术栈都有自身最适用的场景,在最佳实践之下,它们分别都是不可替代的。 原本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 155,627
精华内容 62,250
关键字:

容器集群