Docker
容器概念
容器特性
1、不标准物品标准化(比如杂物、液体、应用) 2、上层工具提供标准化的操作方式 屏蔽细节
容器定义
构建、管理、保护应用程序
容器举例
- 包装、运输
- Add/Delete/Iterator
- 应用管理和调度
容器技术演进
OS虚拟化->内核轻量级虚拟化->资源隔离机制(内存、CPU、网络、IO独占)
docker共享host内核;通过namespace和cgroup来做资源隔离的
Docker本质不是一个操作系统 其实就是一个进程 利用操作系统机制做隔离
现状与Docker方案对比
1、服务端负责构建、分发、运行容器 2、Client和Server可以运行在同一个Host上 客户端也可以通过Socket或Rest API与远程的服务端通信 3、如果docker damond挂掉了即父进程挂了 对子进程不影响 但是不能启动新的进程了即不能在创建镜像和运行镜像等了 4、网络是共享的 文件句柄是单独的 可以让它共享也可以不让它共享
Docker命令
commit含义:新运行的docker进程上面重新生成一个新的镜像
Docker 镜像
1、dokcer镜像是一个静态只读模版 通过它创建docker容器 是一个进程、动态的 2、dokcerfile是从无到有 创建镜像 3、docker启动命令:ENTRYPOINT/CMD 4、设置环境变量:ENV key value 5、挂载路径 VOLUME ["dir1"] 6、docker容器是镜像的运行实例
Docker解决应用标准化的案例
差异化不要打包在镜像中
K8S简介
1、K8S 容器管理和编排 2、k8s治理功能 就是一个管理工具 3、k8s虚拟化是docker做的 4、机器平均利率用不超过20% 用k8s 弹性调度 提高资源利用率
Docker运行数量
40核CPU 192G内存的服务器配置 一个docker 分配2个cpu 最多20个docker
云发展阶段
Iaas云
sdn(软件定义网络)
网络一旦进入机房交换机即二层网络 很难跨机房通讯 直接通讯很难 sdn网络层面虚拟化 在机房之间直接通讯 即二层网络变三层网络进行通讯
sds(软件定义存储)
共享存储 不用关注机器和存储 对应用无侵入 是面向资源的
用户不想关注硬件资源而是想只关注应用本身
需要面向应用系统降低服务开发部署和运维成本
1、安装包标准化即image镜像 2、应用进程标准化即container容器
容器化
一个dokcer应用运行即单进程 多个docker应用即多进程如何管理 使用k8s
FAAS
容器都不需要关注 只需要关注函数 无服务化架构 serverless
K8S架构(系统架构)
1、cAdvise:监控 2、kubelet:本地的agent 3、启动pod 通过cAdvise获取pod信量信息 进行通讯 4、每一个宿主机上有一个kubelet 负责pod启动终止扩容收集信量信息
谁来控制kubelet呢?
1、是k8s master 即上图的k8s架构本身(中心控制节点) 2、api server和kubelet通讯 告诉kubelet 去启动一个pod 3、kubelet心跳连接api server 也会告诉api server pod启动结果 4、api server一般部署3个 这三个都是无状态的 kebelet连接任何一个都是可以的 5、心跳信息存储在etcd中(k8s的所有存储都是放在etcd中)