首页 资讯 业界 查看内容

Container Summit 2015大会现场笔记总整理

2015-12-23 13:51 2971 1

摘要: 今年的Container Summit 2015 实在是相当的精彩,这两天的研讨会着重在Container 技术在云端上的应用(Google、Azure、daocloud、Mesos、RANCHER、和信云端)、资源运用(微博) 、CI (贝格乐)、DevOps 、Docker 1.9.x、 ...
关键词: Docker Container 资源 云端 测试 服务 版本 一个 业务 nbsp

今年的Container Summit 2015 实在是相当的精彩,这两天的研讨会着重在Container 技术在云端上的应用(Google、Azure、daocloud、Mesos、RANCHER、和信云端)、资源运用(微博) 、CI (贝格乐)、DevOps 、Docker 1.9.x、Docker swarm。

除了内容精彩、讲师阵容豪华之外,会议场地与餐点也都准备得相当不错!全天候咖啡与点心供应实在是太贴心了,难怪有人说办活动只要餐点准备好,评价就至少有80分!唯一的缺点大概就是会场的网路很烂,只好用自己的手机上网XD

这两天这么多的主题中,我最喜欢微博、Docker In CI、DevOps 这三场,这几场听起来超有感觉的,透过Container 技术可以让DevOps 更容易,省去了不少时间与资源成本,而这是采用docker 能够带来的实质改善。以下就是相关的笔记:

※Container的过去、现在与未来
docker 让 infar as a code
让开发与营运可以拥有共通的版本
从单一主机执行,跨入多主机架构,不再是单机开发或测试模式
※Mesos 大建大规模 Container 平台
 
特点
resource management
把资源公平分散出去
将IP 给某一个Container ,你不需要知道这个Container 再哪一台机器,但是你可以用这个IP 找到该Container
programming abstractions
security
monitoring , debugging , logging
 Mesos 提供 API 使用
各种不同的framework 都可以在Mesos这个平台上使用

Docker in CI:Cacoo与Backlog导入Docker的经验分享
日本人用台语自我介绍,超强!
公司业务介绍
Backlog (http://backlogtool.com/tw)
Cacoo
Typetalk
利用 Docker 的特性来做 CI
测试遇到的瓶颈
分支问题
太多开发人员、太多分支
需要经过单元测试后才可以 review
测试环境
不同开发环境,需要不同的测试环境与工具
速度
整合测试前必须先完成单元测试后才可以进行,需要等很久
使用 Docker 的优点
容易设定 slave
启动快速,只要启动docker 后就可以执行测试了
简化环境设定
只需要 dockerfile 就可以达到需求
加速
自己有架设 docker register
资源利用
测试完毕后就可以将container 移除,节省资源
权限问题
in some case , test should be run by non-root user
owner of host directory inside container is indefinite
writing build result to host directory by non-root user can fail
change ownership to non-root user during build time
copy build result from container
no permission issue
complicate
Docker in CI
good place to start docker
ci becomes common practice
installing docker in ci doesn't change many things
we could have best practice in this area
日本在production 应用案例
※新浪微博大规模基于Docker的混合云应用实践
 
业务背景
业务量变化非常大、瞬间的峰值很高,需要大量的设备以确保服务在尖峰期间能够正常
业务突发状况
突发事件、三节(元旦、春晚、耶诞节)、红包飞
日常推拨
资源浪费
每个业务单位有各自的设备,以确保尖峰期间服务能够正常
每个业务都有设备闲置,造成资源浪费
设备
申请周期过长
机房空间有限
目标
个业务除了有各自的保留空间外,有部分的空间如10%设备会共通用,
让共用的空间做灵活的弹性转移
大陆业界处理方式:12306 (类似台铁订票网站)
目前有两个资料储存中心,但是仍旧有问题
额外申请阿里云,用来应付尖峰流量
云端
使用阿里云
持续部属不会用在云端,单纯用来扛尖峰值
拉专线,两个机房各1G 专线,三节尖峰状态拉10G 专线
拉专线才可以降低延迟时间,使用公有云方式处理速度太慢
Docker Registry
有自己的Docker Registry 用来做版本管理
Docker 有升级过,额外用Nginx 做处理,得知目前服务请求要用V1 or V2 Registry
具有内部私有机房,并透过专线与阿里云沟通
docker
swarm
mesos (离线数据分析用)
dispatch (自行开发任务系统)
后端服务为JAVA
前端服务 PHP
有一个共用的资源池,当其他系统有需要资源再做调配
大规模集群操作自动化
设备申请
内:共享池
外:阿里云
初始化
标准化
配置管理
安装、升级自动化、操作 API 化
RPM+Puppet MasterLess
业界可能透过CoreOS、RancherOS、Atomic、DCOS 来做初始化,但是对微博来说,这样成本过高,所以自己做初始化。
服务上线
容器动态调度
服务弹性扩充
各项业务有10%的设备提供做为共享使用
资源不足时进行申请,使用后归还
具有报警平台、业务监控
部属模式
优先调度内网共享
扩充容,单次操作时间 < 5min
※群晖科技运用Docker研发新世代产品之路
NAS 提供 Docker 服务遇到的困难
网路
NAT Port Mapping
使用 open vswitch 方式处理网路问题
储存空间
让 DMS 上共用同一份 docker image
stateless data:like image or library
stateful data:user data、documents、images
利用 DSM 升级,自动调整 config 档案
用BTRFS subvolume 的quote 机制,限制docker dsm 用量
支援 snapshot 、backup
安全性
cgroup
capability
apparmor
namespace
read-only sysfs
sysfs 设定为唯读
procfs 部分路径唯读
内部使用案例
demo site:让每一个使用者资料隔离,不会读到前一个使用者看到的资料
QC
模拟多 client 情境效能测试
保存/还原测试问题环境
※两大平台完整结合: 谈Windows Container & Azure Container service
 

 
 

 
 
windows 世界的 container 技术
docker vm extension
hyper-v containers
visual studio tooling
continuous integration with visual studio online
docker trust repository
可以用 power shell 或是用 docker command
MS自己的 container
Server Core
Nano Server
最佳化 for container 的 os
原生支援 docker command
使用 Apache Mesos Scale
Apache Mesos on Windows Server
※拥抱或对抗?谈Docker对传统DevOps工具链的冲击
 
 
Slide
DevOps
How to recreate your system (如何在另外一个地方重新建立、从无到有)
How to safely change your system (如何改变你的系统)
When something has gone wrong (当系统发生状况,如何快速地知道与解决)
detection
recovery
diagnosis
除了DB 之外,其他服务很难裸机,通常都用VM 来处理,但是使用VM一开始就会消耗硬体10%资源
Container OS
是否OS要不要这么肥?
作业系统瘦身
CoreOS
Windows Nano Server
Snappy Ubuntu Core
VMWare Photon
Red Hat Atomic
container per vm
每一个 container 的用途是用来跑单一VM
unikernel
MirageOS、Boxfuse
boxfuse 把东西convert 成image 并丢到AWS上run
docker
immutable image
versioned image
devlprod parity
以后电脑的功用是开好SSH、系统参数设定完后,剩下就交给Docker
pets and cattle
差别
有名字
是否可以抛弃
传统 AP (宠物开发)
很难移植、必须好好照顾
牲畜开发法
由电脑帮你决定要丢到哪一台电脑上执行
可以容易复制与转移
参考12 factors
docker swarm、Mesos....
kubernetes
rolling upgrade
canary deployment
※如何在Kubernetes上持续部署微服务型应用
simple microservice
program language : go
backend (json)
frontend (html)
kubernetes
manage a cluster of lunux containers as a single system
opensource
5 basic things
cluster
one master and at least one node
kubernetes as a managed service
pod (感觉就像docker一样)
co-located docker containers
containers share volumes and localhost
pod.yaml (很像docker compose,给master 使用)
Service
abstraction to communicate with pods
have frontend & backend services
namespace
have own resources
Continuous Depolyment
commit often
deploy every commit
validate and rollback deploys
minimize human interaction
code -> test -> commit -> push -> build -> test
continuous deployment
Jenkins workflow plugin
docker image 要设定别名,这样之后才可以管理
 ※深入理解Dockerfile、Docker映像档以及Docker容器
docloud 公司业务介绍(http://www.daocloud.io)
daoship
持续交付流水线
daohub
可追朔的交付件仓库
突破城墙! Docker hub 镜像
daocloud
快云端网的容器集群管理
Agenda
Docker introduction
容器技术:有效分配与管理物理资源,实现资源隔离
对容器来说,关注的点有没有linux kernel
资源隔离( 除了CPU、RAM、kernel 也是一种资源,
镜像技术
打破代码即应用的观念,从系统环境开始,自底至上打包应用
let infar as a code
windows 对 ap 层实现容器技术
dependency、configuration
docker 化实践
dockerfile -> docker image (can ship anywhere) -> docker container
dockerfile 定义一切
Dockerfile
cache
先看作这一步动作的时候Image 有没有变,没有变再看看
docker image
一个 image 由多个层来组合
一些资料不应该存入,如hosts、hostname、resolv.conf
docker container
不存在传统的 init 进程
缺少基本的服务进程
与内和进程通信能力薄弱
docker 比较适合高层次的AP,如果是跟系统硬体设备比较相关,要管理和监控比较不足
cache
docker 服务的最终交付
受到资源的隔离与控制
收到权限的控制
linux container & linux kernel 都是 root
container 内部与container 外度的root 有巨大的差异
支撑用户应用的运行
docker engine 对于docker container 有比较好的管理
※和信云端 Container 实战经验
container cluster
scale
full tolerance
container 角度,增加 container instance
benefits of collaboration
cloud native computing
more than just the container
hybrid cloud
※深入了解 Docker Container Networks
网路处理机制
bridge (很久以前一开始 RUN 的版本)
none (啥鬼都没有)
host ( container和主机网路组态相同)
container
used-defined network
以前只有在同一台底下的container 可以互相沟通,现在不同台主机的container 可以互相沟通
docker network commands
docker network create/connect/ls/rm/disconnect/inspect
不同 bride 的 container 不能相通
inspect 可以看到每个container 底下网路的状况
 overlay network (让不同台主机的container 可以彼此互连)
prepare a key value store
add cluster options to each docker engine
docker engine run 起来要加参数
--cluster-store=consul://ip:8500
--cluster-advertiser=eth1:2376
create on overlay network on one of the host
host 上要create overlay network 所有有加入这个consul 的device 就可以看到
可以一台主机在Azure,另外一台在digital ocean ,两台再串起来
eth0 用来做 overlay network
weave network plugin
有好用的介面让你看状况
※用Docker Swarm打造多主机丛集环境
Slide
让一个 container 让多个 container 存取
docker machine 启动swarm master 再启动swarm node
Port Allow
特种不同的云端平台需要开的PORT 不同
docker engine port (TCP 2375)
VXLAN:UDP4789
注意Kernel版本
透过key-store 让swarm master node 知道彼此位置
※Q&A
docker 版本更新很快,该如何跟上步调?
参考云端服务者使用的版本
云端服务提供的版本一定不是最新版,但是该版本会和云端服务整合的最好才会提供该版本服务
知道每个版本的功能,升级上去并做测试,不要用xx0 的版本
微博经验
大量的测试、压测之后才上线
目前也只有用过1.3.x , 1.6.2 这两个版本
记忆体问题 JVM
如果要考量scale与稳定性,自己要做好记忆体管理,了解memory limit、heap size
JCCONF 有人讲过相关的主题,可以参考连结
eBay 经验
主机装VM,每个VM 底下再装Docker or Container
performance 对 eBay 不是考量
人的 development cost 比较高
结论:有钱真好
拥抱 docker 有什么 business model
是一个趋势
以前的程式只能在旧的OS执行,OS升级后程式还要继续支援,这样能够降低dependency
弹性调度资源、硬体资源的管理、自动化的安装
自我思考
思考开发、维护对现有工作可以带来的改变
调整开发思维 (宠物与畜生牲畜)
发明一个新的container 技术不是太困难,但是要做得像docker 一样好,拥有好的ecosystem 、并且把使用者从docker 转移到其他的container 技术才是困难的。
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

返回顶部