摘要:方案二和也運(yùn)行在中。新增刪除節(jié)點(diǎn)變更配置均需要手工介入。公司已有的大多都是容器形式部署在各個(gè)服務(wù)器上。目前我們在每個(gè)節(jié)點(diǎn)上部署了傳統(tǒng)的。在接下來的階段團(tuán)隊(duì)也會對此做進(jìn)一步的探索。
回想起第一次接觸Mesos, 當(dāng)時(shí)有很多困惑: "這到底是用來做啥的?跟YARN比有什么優(yōu)勢?有哪些大公司在使用么?"。
然而現(xiàn)在技術(shù)日新月異地發(fā)展, Mesos這個(gè)生態(tài)圈也開始被越來越多的團(tuán)隊(duì)熟悉關(guān)注, 像k8s,Swarm之類的重量級競品一個(gè)個(gè)地涌現(xiàn)。
在踩了或多或少的坑, 現(xiàn)在重新回到這個(gè)問題, 簡而言之:
Q1: 這到底是用來做啥的?
通俗地講, 就是把N臺機(jī)器當(dāng)做1臺機(jī)器使用
Q2: 跟YARN比有什么優(yōu)勢?
更加通用, 不局限在數(shù)據(jù)分析領(lǐng)域
Q3: 有哪些大公司在使用么?
Mesos在團(tuán)隊(duì)的變遷史做技術(shù)預(yù)研的時(shí)候因?yàn)榭吹教O果在用, 心里倍兒踏實(shí)
我們的分析團(tuán)隊(duì)一直都是在傳統(tǒng)的CDH上跑Hadoop生態(tài)。對新業(yè)務(wù)評估時(shí)決定擁抱Spark, 但CDH升級困難, Spark版本滯后, 使用起來也遠(yuǎn)比Hadoop繁瑣。最后我們決定基于Mesos從頭構(gòu)建新的數(shù)據(jù)分析基礎(chǔ)環(huán)境。
但是Mesos上缺乏我們必須的HDFS和HBase。經(jīng)過討論我們決議了兩種方案。
方案一將HDFS,HBase和Mesos獨(dú)立部署在裸機(jī)上, 如下圖
(前期方案一)
但實(shí)際使用時(shí)會因?yàn)镠DFS和HBase并非在Mesos的隔離環(huán)境下運(yùn)行, 與Mesos會競爭系統(tǒng)資源。基于這樣的考慮,我們否決了這種方案。
方案二HDFS和HBase也運(yùn)行在Mesos中。這種方案避免了上述問題, 但也意味著我們需要自己實(shí)現(xiàn)這兩個(gè)服務(wù)在Mesos中的部署。團(tuán)隊(duì)的大神擔(dān)起了這個(gè)任務(wù), 制作了HDFS和HBase的Docker鏡像, 通過marathon部署在Mesos中。
(前期方案二)
基于這樣的部署形式, 團(tuán)隊(duì)順利地過渡到Spark生態(tài), 讓我們的分析系統(tǒng)更加飛快地運(yùn)轉(zhuǎn)。
(二) 好馬還需配好鞍, 這個(gè)鞍叫DC/OSDC/OS可謂Mesos生態(tài)里的Cloudera。但由于其商業(yè)收費(fèi), 對于我們這樣的初創(chuàng)團(tuán)隊(duì)一直都是"可遠(yuǎn)觀而不可褻玩"。
直到其開放了社區(qū)版, 我們才得以略窺一斑。
在沒有引入DC/OS之前, 對于管理Mesos集群我們碰到以下幾個(gè)痛點(diǎn):
沒有自動(dòng)化運(yùn)維腳本。新增、刪除節(jié)點(diǎn)、變更配置均需要手工介入。
沒有直觀的可視化圖表來查看各項(xiàng)運(yùn)行指標(biāo)。Mesos自帶的界面相對比較簡單,體驗(yàn)不佳。
沒有集中的日志管理。
安裝一些通用的服務(wù)比較繁瑣。
通過DC/OS管理Mesos集群, 可以輕松地使用Bootstrap節(jié)點(diǎn)方便地管理各個(gè)節(jié)點(diǎn), 其服務(wù)也都通過systemd來管理依賴, 避免了手工管理的繁瑣。
通過官方的教程, 可以很方便地配置安裝節(jié)點(diǎn), 以下是范例:
agent_list: - 10.10.11.48 - 10.10.11.29 - 10.10.11.56 - 10.10.10.188 - 10.10.11.57 - 10.10.11.88 - 10.10.11.89 - 10.10.10.113 - 10.10.10.168 # Use this bootstrap_url value unless you have moved the DC/OS installer assets. bootstrap_url: file:///opt/dcos_install_tmp cluster_name: maxleap exhibitor_storage_backend: zookeeper exhibitor_zk_hosts: 10.10.10.125:2181,10.10.10.149:2181,10.10.10.122:2181 exhibitor_zk_path: /dcos_uat log_directory: /genconf/logs master_discovery: static master_list: - 10.10.10.187 - 10.10.10.176 - 10.10.10.164 process_timeout: 600 resolvers: - 10.10.10.156 ssh_key_path: /genconf/ssh_key ssh_port: 22 ssh_user: root oauth_enabled: "false" telemetry_enabled: "false" #roles: slave_public #weights: slave_public=2
UI簡潔易用, 比較常用的一些功能大多都已包含。通過使用Universe的包管理器, 我們可以很方便地一鍵安裝各種常見服務(wù)。
(DC/OS圖示)
DC/OS默認(rèn)也給我們安裝了mesos-dns, 我們可以使用DNS的A記錄輪詢來實(shí)現(xiàn)簡陋的服務(wù)發(fā)現(xiàn)。通過marathon部署服務(wù)現(xiàn)在可以直接使用服務(wù)名.marathon.mesos直接定位服務(wù)所在節(jié)點(diǎn)。
在某些場合下這已經(jīng)足夠好用。Universe集成的HDFS也使用了DNS來定位各類型的節(jié)點(diǎn), 這樣帶來的很大的方便就是像core-site.xml,hdfs-site.xml這樣的配置文件就相對穩(wěn)定(之前我們使用主機(jī)hostname來管理, 當(dāng)節(jié)點(diǎn)發(fā)生變動(dòng)時(shí)需要所有程序變更配置文件)。
接下來我們開始嘗試改造之前的基礎(chǔ)服務(wù)。
HDFS綜上的幾個(gè)優(yōu)點(diǎn), 我們將之前Spark的HDFS切換到Universe提供的版本, 這個(gè)版本的好處是其自己實(shí)現(xiàn)了一個(gè)Mesos的framework來實(shí)現(xiàn)HA, 其數(shù)據(jù)也使用了Mesos的持久化卷。美中不足的是其使用了mesos原生的隔離, 而沒有使用docker, 鑒于國內(nèi)的網(wǎng)絡(luò)環(huán)境, 其下載速度慘不忍睹。為此我們搭建了Universe私服, 改寫了所有的資源文件指向到內(nèi)網(wǎng), 加快了部署速度。官方的教程很詳細(xì), 這里是傳送門。
HBase對于HBase, 我們也重新制作了docker鏡像。以下是Dockerfile:
# 基于debian的oracle-jdk8 FROM 10.10.10.160:8010/zero/java:8 MAINTAINER wcai wcai@maxleap.com ENV HBASE_VERSION="1.2.1" HADOOP_VERSION="2.5.2" HBASE_HOME="/hbase" HADOOP_CONF_DIR="/etc/hadoop" JAVA_LIBRARY_PATH="/usr/lib/hadoop" HBASE_CLASSPATH="/etc/hadoop" HBASE_MANAGES_ZK="false" RUN apt-get update -y && apt-get install curl -y && mkdir -p /var/log/hbase && curl -o /tmp/hbase.tar.gz http://mirrors.aliyun.com/apache/hbase/${HBASE_VERSION}/hbase-${HBASE_VERSION}-bin.tar.gz && tar xvzf /tmp/hbase.tar.gz -C /tmp/ && rm -f /tmp/hbase.tar.gz && mv /tmp/hbase* ${HBASE_HOME} && rm -rf ${HBASE_HOME}/docs ${HBASE_HOME}/bin/*.cmd ${HBASE_HOME}/conf/*.cmd ${HBASE_HOME}/*.txt && curl -o /tmp/hadoop.tar.gz http://mirrors.aliyun.com/apache/hadoop/core/hadoop-${HADOOP_VERSION}/hadoop-${HADOOP_VERSION}.tar.gz && tar xvzf /tmp/hadoop.tar.gz -C /tmp && rm -f /tmp/hadoop.tar.gz && mv /tmp/hadoop* /tmp/hadoop && mv /tmp/hadoop/lib/native /usr/lib/hadoop && rm -rf /tmp/hadoop && mkdir -p ${HADOOP_CONF_DIR} && apt-get remove curl -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* WORKDIR ${HBASE_HOME} # 默認(rèn)集成的hdfs配置, 也可通過marathon的uris掛載進(jìn)去。 COPY ./conf/* /etc/hadoop/ ENTRYPOINT [ "bin/hbase" ]
HMaster的marathon配置范例:
{ "id": "/hbase/master", "args": [ "master", "-Dhbase.master.port=6000", "-Dhbase.master.info.port=6010", "-Dhbase.zookeeper.quorum=master.mesos", "-Dzookeeper.znode.parent=/hbase", "-Dhbase.rootdir=hdfs:///hbase", "-Dhbase.cluster.distributed=true", "start" ], "instances": 1, "cpus": 1, "mem": 2048, "container": { "type": "DOCKER", "docker": { "image": "10.10.10.160:8010/zero/hbase:1.2.1", "forcePullImage": true, "network": "HOST" } } }
HRegion的marathon配置范例:
{ "id": "/hbase/region", "args": [ "regionserver", "-Dhbase.regionserver.port=6020", "-Dhbase.regionserver.info.port=6021", "-Dhbase.zookeeper.quorum=master.mesos", "-Dzookeeper.znode.parent=/hbase", "-Dhbase.rootdir=hdfs:///hbase", "-Dhbase.cluster.distributed=true", "start" ], "instances": 4, "constraints": [["hostname", "UNIQUE"]], "cpus": 1, "mem": 1024, "container": { "type": "DOCKER", "docker": { "image": "10.10.10.160:8010/zero/hbase:1.2.1", "forcePullImage": true, "network": "HOST" } } }
以上僅為范例, 其他類型的實(shí)例也可類似啟動(dòng), 如backup, thrift2, rest等, 在此略過。
另外可以進(jìn)一步定制entrypoint, 啟動(dòng)的端口可以通過marathon管理的PORT?來定義。甚至可以讓marathon給你隨機(jī)安排端口。
Spark雖然Universe自帶了Spark的dispatcher服務(wù),默認(rèn)使用了dist-url的方式, 但我們想讓Spark運(yùn)行時(shí)全部在docker中。(老板~ 再來幾串Dockerfile)
首先是mesos基礎(chǔ)鏡像
FROM 10.10.10.160:8010/zero/java:8 MAINTAINER wcai wcai@maxleap.com # 0.28.0-2.0.16.debian81 # 0.28.1-2.0.20.debian81 # 0.28.2-2.0.27.debian81 ENV MESOS_PACKAGE_VERSION="0.28.1-2.0.20.debian81" MESOS_NATIVE_LIBRARY="/usr/lib/libmesos.so" MESOS_NATIVE_JAVA_LIBRARY="/usr/lib/libmesos.so" # 順帶把hdfs的native-lib也集成進(jìn)去 COPY lib/* /usr/lib/ RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E56151BF && echo "deb http://repos.mesosphere.com/debian jessie main" | tee /etc/apt/sources.list.d/mesosphere.list && apt-get update && apt-get install --no-install-recommends -y --force-yes mesos=${MESOS_PACKAGE_VERSION} && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && ln -snf /opt/jdk/bin/java /etc/alternatives/java CMD [ "bash" ]
然后是Spark的
FROM 10.10.10.160:8010/zero/mesos:0.28.1 MAINTAINER wcai wcai@maxleap.com ENV SPARK_HOME="/opt/spark" SPARK_VERSION="2.0.0" HADOOP_VERSION="2.6" RUN apt-get update -y && apt-get install curl -y && curl -o /tmp/spark.tar.gz http://mirrors.aliyun.com/apache/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}-bin-hadoop${HADOOP_VERSION}.tgz && tar xvzf /tmp/spark.tar.gz -C /opt && mv /opt/spark* /opt/spark && rm -rf /tmp/spark.tar.gz $SPARK_HOME/jars/*yarn*.jar $SPARK_HOME/bin/*.cmd $SPARK_HOME/data $SPARK_HOME/examples $SPARK_HOME/python $SPARK_HOME/yarn $SPARK_HOME/R $SPARK_HOME/licenses $SPARK_HOME/CHANGES.txt $SPARK_HOME/README.md $SPARK_HOME/NOTICE $SPARK_HOME/LICENSE $SPARK_HOME/conf/* && apt-get remove curl -y && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # 如果你想加入一些自己的配置 COPY ./spark-defaults.conf $SPARK_HOME/conf/spark-defaults.conf ENV TZ=Asia/Shanghai WORKDIR $SPARK_HOME CMD [ "bash" ]
最后是spark-mesos-dispatcher的
FROM 10.10.10.160:8010/zero/spark:2.0.0 MAINTAINER wcai wcai@maxleap.com ENV PORT0="8081" PORT1="7077" SPARK_DISPATCHER_NAME="spark" ZK="master.mesos:2181" ZK_MESOS_ROOT="mesos" COPY ./entrypoint.sh /usr/local/bin/entrypoint CMD [ "entrypoint" ]
其中的entrypoint腳本
#! /bin/sh export PATH=$PATH:$HADOOP_PREFIX/bin if [ -z ${LIBPROCESS_IP} ]; then export LIBPROCESS_IP=$(ip addr show eth0 | grep -Eo "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}" | head -1) export SPARK_LOCAL_IP=${LIBPROCESS_IP} fi if [ -z ${LIBPROCESS_IP} ]; then echo "error: LIBPROCESS_IP is blank." exit 1 fi export MESOS_MASTER="mesos://zk://${ZK}/${ZK_MESOS_ROOT}" echo "************************************************************" echo "LIBPROCESS_IP: ${LIBPROCESS_IP}" echo "MASTER: ${MESOS_MASTER}" echo "WEBUI PORT: ${PORT0}" echo "RPC PORT: ${PORT1}" echo "************************************************************" $SPARK_HOME/bin/spark-class org.apache.spark.deploy.mesos.MesosClusterDispatcher --master ${MESOS_MASTER} --host ${LIBPROCESS_IP} --port ${PORT1} --webui-port ${PORT0} --name "${SPARK_DISPATCHER_NAME}" --zk ${ZK} --properties-file ${SPARK_HOME}/conf/spark-defaults.conf
大功告成, 只需要在marathon中啟動(dòng)dispatcher。spark-submit時(shí)指定spark.mesos.executor.docker.image為spark的docker鏡像即可。你可以制作不同版本的spark鏡像, 隨意切換。(麻麻再也不用擔(dān)心我追不上spark官方的升級速度了)
(三) marathon-lb, 你值得擁有Mesos的資源專供數(shù)據(jù)分析團(tuán)隊(duì)使用是相當(dāng)浪費(fèi)的。為此團(tuán)隊(duì)開始嘗試將公司的其他服務(wù)陸續(xù)遷移進(jìn)來。
公司已有的Rest API大多都是docker容器形式部署在各個(gè)服務(wù)器上。本來的計(jì)劃是通過marathon部署, 使用域名做服務(wù)發(fā)現(xiàn), 然后nginx反向代理到公網(wǎng)。但實(shí)際實(shí)施中踩了個(gè)坑。因?yàn)閚ginx的配置域名的upstream很成問題, 一旦指向的ip變動(dòng)就會導(dǎo)致解析失敗。嘗試使用網(wǎng)上的各種方法(如配置resolver設(shè)置upstrem變量, 改用tengine的ngx_http_upstream_dynamic_module) 都無法完美解決這個(gè)問題。
最后團(tuán)隊(duì)還是決定引入marathon-lb, 替代原先基于mesos-dns的服務(wù)發(fā)現(xiàn)。
marathon-lb其實(shí)是一個(gè)HAProxy的包裝, 它能動(dòng)態(tài)地綁定marathon的服務(wù)。我們以internal形式部署, 某個(gè)服務(wù)如果需要做服務(wù)發(fā)現(xiàn)負(fù)載勻衡, 只需要加一個(gè)label為HAPROXY_GROUP: internal即可, 非常方便。這樣最終的形態(tài)就變成如下的架構(gòu):
(部署架構(gòu))
在小范圍的服務(wù)遷移測試穩(wěn)定之后, 團(tuán)隊(duì)陸續(xù)將一些其他服務(wù)遷移過來, 也釋放了一些服務(wù)器資源, 將這些空閑的服務(wù)器也重新回收納入到我們的Mesos集群中。
在此之后, 維護(hù)這些服務(wù)變得簡單便捷, 泡杯咖啡, 點(diǎn)點(diǎn)鼠標(biāo)就可以輕松搞定, 運(yùn)維壓力減小了很多。
未來的愿景(補(bǔ)輪子篇)擁有了以上的這些基礎(chǔ)架構(gòu)服務(wù)之后, 一切都可以運(yùn)轉(zhuǎn)起來。但總有一些痛點(diǎn)需要我們自己造輪子去解決。
作業(yè)管理當(dāng)你有大量的Spark批處理作業(yè)時(shí), 一個(gè)很頭疼的事情就是如何去調(diào)度這些作業(yè)。
以前我們通過chronos來做執(zhí)行管理, 但這個(gè)工具太過簡陋, 對于cluster-mode下的spark作業(yè), 如果你想定義依賴, 則需要使用它的異步回調(diào)來通知作業(yè)已完成, 這樣一來無可避免需要侵入業(yè)務(wù)代碼。(程序猿表示如果要妥協(xié)強(qiáng)行寫這些跟業(yè)務(wù)半點(diǎn)關(guān)系都沒有的代碼, 我選擇狗帶)
我們需要一個(gè)零侵入的Spark通用作業(yè)流程解決方案。為此我們自己實(shí)現(xiàn)了一個(gè)小項(xiàng)目(Armyant), 旨在解決這個(gè)問題。
整體架構(gòu)很簡單, 通過Activiti做流程引擎, Quartz做定時(shí)調(diào)度, Zookeeper來做狀態(tài)通知:
(armyant架構(gòu)圖)
外加一套易用的UI, 第一個(gè)版本就能順利跑起來。
(armyant圖示1)
后續(xù)又實(shí)現(xiàn)了一個(gè)mesos framework, 這樣也可以定義一些one-off形式的任意docker任務(wù)。接著再向上封裝一下, 包裝一層任意的Java服務(wù)也很方便。當(dāng)然mesos生態(tài)圈其實(shí)也有很多專門為one-off形式的作業(yè)而生的工具, 如eremetic等等。
(armyant圖示2)
雖然DC/OS社區(qū)版可以查看當(dāng)前的運(yùn)行狀態(tài), 但它沒有監(jiān)控報(bào)警相關(guān)的功能(天下沒有免費(fèi)的午餐)。目前我們在每個(gè)節(jié)點(diǎn)上部署了傳統(tǒng)的nagios。
在接下來的階段, 團(tuán)隊(duì)也會對此做進(jìn)一步的探索。
日志系統(tǒng)DC/OS再配合mesos自帶的日志其實(shí)已經(jīng)很大程度上方便了查看日志的需求。甚至DC/OS本身也可以接入ELK。但我們期望有更高級的日志分類收集, 這需要定制一些收集處理模塊。團(tuán)隊(duì)的大神親自操刀正在實(shí)現(xiàn)這些高級的功能, 隨著業(yè)務(wù)的擴(kuò)張,能有一個(gè)可以靈活定制的日志處理系統(tǒng)是很有好處的。我的Leader也常說, 大廠和小廠的東西, 區(qū)別就在于大廠的監(jiān)控報(bào)警運(yùn)維系統(tǒng)做得非常完善易用。
文末最后, 作為一個(gè)初創(chuàng)小團(tuán)隊(duì), 筆者覺得Mesos對我們的利好是不言而喻的。也希望讓我們的集群更加穩(wěn)定健壯, 來支撐我們?nèi)找嬖鲩L的業(yè)務(wù)系統(tǒng)。
技術(shù)活動(dòng)預(yù)告
主題:技術(shù)分享沙龍 | 知云善用,讓移動(dòng)研發(fā)更快速簡單
時(shí)間:2016年8月28日 周日 14:00-17:00
地點(diǎn):COCOSPACE北虹橋站·上海市嘉定區(qū)鶴望路679弄2號樓一層
報(bào)名鏈接:http://t.cn/Rt9ooRw
作者信息
本文系力譜宿云LeapCloud旗下MaxLeap團(tuán)隊(duì)_數(shù)據(jù)分析組成員:蔡偉偉 【原創(chuàng)】
力譜宿云LeapCloud首發(fā)地址:https://blog.maxleap.cn/archi...
蔡偉偉,本科畢業(yè)于同濟(jì)大學(xué),從事Java開發(fā)多年,后端碼農(nóng)一枚。先后從事ETL、AdHoc報(bào)表、垂直爬蟲、App制作云服務(wù)、動(dòng)態(tài)用戶分群等產(chǎn)品的設(shè)計(jì)研發(fā)工作。在互聯(lián)網(wǎng)領(lǐng)域混跡多年,各方面均有所涉獵。現(xiàn)任MaxLeap數(shù)據(jù)分析組開發(fā)人員,負(fù)責(zé)Hadoop、Spark相關(guān)的分析系統(tǒng)架構(gòu)設(shè)計(jì)與開發(fā)。
相關(guān)文章
微服務(wù)實(shí)戰(zhàn):從架構(gòu)到發(fā)布(一)
微服務(wù)實(shí)戰(zhàn):從架構(gòu)到發(fā)布(二)
移動(dòng)云平臺的基礎(chǔ)架構(gòu)之旅(一):云應(yīng)用
從應(yīng)用到平臺 – 云服務(wù)架構(gòu)的演進(jìn)過程
作者往期佳作_曾選登CSDN頭版
一個(gè)JAVA碼農(nóng)的Node之旅
對移動(dòng)研發(fā)相關(guān)技術(shù)/活動(dòng)感興趣的小伙伴,歡迎掃以下二維碼,關(guān)注微信公眾號:
活動(dòng)預(yù)告
報(bào)名鏈接:http://t.cn/Rt9ooRw
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/26673.html
摘要:納尼隔壁少林派表示自家金剛技壓群雄在座各位都是。。。納尼你覺得寫太繁瑣了你不喜歡我們還有或者等等一大堆工具呢。納尼沒有你還是覺得無法接受好吧那么筆者推薦類似這類更友好的工具你可以導(dǎo)入導(dǎo)出其他格式也可以使用其來撰寫。 說起微服務(wù), 想必現(xiàn)在的技術(shù)圈內(nèi)人士個(gè)個(gè)都能談笑風(fēng)云, 娓娓道來。的確, 技術(shù)變革日新月異, 各種工具框架雨后春筍般涌現(xiàn), 現(xiàn)在我們可以輕巧便捷地根據(jù)自己的業(yè)務(wù)需求, 構(gòu)建...
摘要:從這個(gè)結(jié)果來看,洛奇非常適合推薦給喜歡終結(jié)者的用戶的。你需要能夠深入了解所使用的評分方法才能建立起真正優(yōu)秀的推薦系統(tǒng)。使用,阿甘正傳的評分是,幾乎為。 聚合:找出喜歡這部電影的人們同時(shí)還喜歡哪些電影 ? ? ? ?假設(shè)你運(yùn)營了一個(gè)電影網(wǎng)站,你有很多用戶,并且想知道如何推薦給這些用戶他們喜歡的電影。一個(gè)辦法是,把每個(gè)用戶作為一個(gè)文檔創(chuàng)建索引,如下所示(movies_liked被設(shè)置為被分...
摘要:由谷歌開發(fā),允許你在許多不同的主機(jī)上管理容器化應(yīng)用程序。它已經(jīng)被完全開源,谷歌在年首次宣布開發(fā)它,第一版在夏天的時(shí)候發(fā)布。除了最近幾年的收獲,本身也是基于谷歌內(nèi)部十多年使用容器技術(shù)的經(jīng)驗(yàn)。 基于云的基礎(chǔ)設(shè)施,容器,微服務(wù)和新編程平臺在世界范圍占據(jù)了一大塊媒體領(lǐng)域,橫掃IT界。Docker、容器的使用在這幾個(gè)月內(nèi)呈爆炸式增長,已經(jīng)提交了20億的鏡像pulls;鏡像數(shù)在2015年11月就已...
摘要:今天小數(shù)給大家?guī)硪黄夹g(shù)正能量滿滿的分享來自社區(qū)線上群分享的實(shí)錄,分享嘉賓是數(shù)人云肖德時(shí)。第二級調(diào)度由被稱作的組件組成。它們是最小的部署單元,由統(tǒng)一創(chuàng)建調(diào)度管理。 今天小數(shù)給大家?guī)硪黄夹g(shù)正能量滿滿的分享——來自KVM社區(qū)線上群分享的實(shí)錄,分享嘉賓是數(shù)人云CTO肖德時(shí)。 嘉賓介紹: 肖德時(shí),數(shù)人云CTO 十五年計(jì)算機(jī)行業(yè)從業(yè)經(jīng)驗(yàn),曾為紅帽 Engineering Service ...
摘要:從容器到容器編排平臺以及周邊生態(tài)系統(tǒng)包含很多工具來管理容器的生命周期。終止運(yùn)行中的容器。發(fā)現(xiàn)在由運(yùn)行于多個(gè)主機(jī)上的容器組成的分布式部署容器發(fā)現(xiàn)至關(guān)重要。類似的,當(dāng)容器崩潰時(shí),編排工具可以啟動(dòng)替換。 從容器到容器編排 Docker平臺以及周邊生態(tài)系統(tǒng)包含很多工具來管理容器的生命周期。例如,Docker Command Line Interface(CLI)支持下面的容器活動(dòng): 從注冊表...
閱讀 701·2021-11-18 10:02
閱讀 2235·2021-11-15 18:13
閱讀 3139·2021-11-15 11:38
閱讀 2934·2021-09-22 15:55
閱讀 3666·2021-08-09 13:43
閱讀 2438·2021-07-25 14:19
閱讀 2449·2019-08-30 14:15
閱讀 3441·2019-08-30 14:15