Docker

容器概念

容器特性

1、不标准物品标准化(比如杂物、液体、应用)

2、上层工具提供标准化的操作方式 屏蔽细节

容器定义

构建、管理、保护应用程序

容器举例

  • 包装、运输
  • Add/Delete/Iterator
  • 应用管理和调度

容器技术演进

OS虚拟化->内核轻量级虚拟化->资源隔离机制(内存、CPU、网络、IO独占)

docker共享host内核;通过namespace和cgroup来做资源隔离的

Docker本质不是一个操作系统 其实就是一个进程 利用操作系统机制做隔离

现状与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/CMD4、设置环境变量:ENV key value5、挂载路径 VOLUME ["dir1"]6、docker容器是镜像的运行实例

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:本地的agent3、启动pod 通过cAdvise获取pod信量信息 进行通讯4、每一个宿主机上有一个kubelet 负责pod启动终止扩容收集信量信息

谁来控制kubelet呢?

1、是k8s master 即上图的k8s架构本身(中心控制节点)2、api server和kubelet通讯 告诉kubelet 去启动一个pod3、kubelet心跳连接api server 也会告诉api server pod启动结果4、api server一般部署3个 这三个都是无状态的 kebelet连接任何一个都是可以的5、心跳信息存储在etcd中(k8s的所有存储都是放在etcd中)

k8s启动pod的流程


k8s如何保证pod副本维持在一定数量

通过console manager


核心组件概括

1、console manager保证pod达到一定数量即到底启动多少个副本2、由schedule决定具体在哪个节点上启动3、由api server告诉kebelet具体去在哪个节点上执行

组件数量

1、api server是无状态的 一般3个副本2、shedule是主从结构 一般是1主2从 如果主挂掉了通过raft算法选择主3、console manager是主从结构 一般3个副本 

应用程序申请入口

  • kubectl
通过命令行的方式提交 一般不用这种方式这种方式需要经过rbac授权
  • api server rest 接口

网关访问应用程序实现方式

  • 默认通过dns实现

  • 也可以通过服务管理平台实现

服务管理平台


服务管理平台 包括数据采集、注册、监控、汇报信息每个服务启动之后都会向服务注册中心注册

K8S(逻辑架构)


声明式:设置为3 绝对值 不存在幂等性问题命令式:副本+1 相对值 存在幂等性问题

支持的控制器


支持的类型


1)无状态服务1、long-running比如网关、业务逻辑层、数据访问层2、批处理型比如job调度3、log-pilot组件阿里开源的日志收集组件2)有状态服务k8s对有状态服务的需求没有那么强烈 支持的也不太好

创建pod时序图



设计目标


有状态会存在共享存储中ceph(必须同机房)

不做共享存储 跨地区同服务商、跨可用区同地区都可以

无状态服务要求降低 跨地区同服务商、跨可用区同地区都可以

有状态跨地区如何设计?



1、任何cluster成员更改都会在集群中每一个成员上同步

2、每一个子的cluster都是全量数据

通过DNS路由解析


数据都是共通的 按距离访问即可

4层负载 比如LVS7层负载 比如Nginx

核心概念


pod 模版

k8s就一个大厨 pod模版是厨具

label:单进程一样就好了

控制器是最重要的


Deployment是长期服伺型

该类型代表 程序是一直运行在后台的 不会被杀死的

线上用的最多

Nginx Deployment


要求:Metadata 一定要全局唯一

K8S网络


1、Node独立IP段 1-254之间2、node中pod的独立ip为10.1.1.0/24 24表示前面的24个字节(bytes)是子网掩码3、pod中有dokcer容器,容器共享独立ip

四种模式


  • 单机
单机所有应用程序只能访问127.0.0.1即无网模式
  • host

Host模式 pod共享宿主机网络 导致的问题

要求pod1必须开公网权限只能把node1这台机器的公网全部都打开没有办法对每一个pod或对pod中的容器做操作安全风险很高

host模式和宿主机直接共享网卡eth0 安全性非常不好
  • bridge

1、bridge docker原生模式其实就是一个net

2、宿主机本身有一个网卡 eth0Docker demon 开一个网桥 docker0网桥一方面连接物理网卡另一方面连接podpod里面有虚拟网卡这个虚拟网卡会和docker0连接起来有很多pod 都会共享docker这个网桥

3、有了docker网桥 每个pod都会有自己独立的ip不需要共享宿主机的ip

4、bridge模式 网桥 dokcer0(名字可以随便指定 docker1…)

5、Docker container中的eth0和veth通讯

6、网桥就是一个配置命令 不需要安装任何软件无非就是套一个dokcer网桥就可以了

这是一个二层网络 没有办法做三层通信

所谓三层通信就是没有办法做网络虚拟化的

sdn是VXLAN技术是一个三层网络在多个机房之间就可以直接通信了

虚拟化模式

Web APP Frontend1如何访问Backend Service2的?


1、flannel是软件虚拟网络就需要安装一个程序flannelid虚拟化软件用来虚拟化网络的在每台node上都需要安装

2、flannel将ip封装之前都是二层网络Flannel这块是三层网络

3、首先无缝经过网桥转换

包一层ip和port(源ip和目的ip)

传给物理链路的网卡又包一层ip和port

传给另外一个物理链路网卡解掉一层传给flannel 又解掉一层然后docker网卡

经过2层包装 传输效率很低

容器间怎么通信

容器间通讯


Ip1 不需要知道pod ip2的ip 在路由器(交换机)上都有配置

同一个node的pod间通信


不同node中pod之间通信


pod1首先和网桥docker0通信然后和本地网卡通信另外一个机器的网卡通信这是bridge模式

CNI


1、cni是网络规范 具体是通过bridge模式走还是overlay模式做还是dhcp

2、执行add方法目的无非就是拿到一个ip删除执行del把ip还回原来的地方

3、K8S-CNI默认提供了dhcp cni网络插件集成dhcp服务器

比如分配了100个ip到dhcp中

每个pod重启的时候通过cni从dhcp中取一个ip一旦不用则会还回去

后记

后续会继续介绍容器云的实践

容器弹性云底层原理揭秘相关推荐

  1. Linux I/O底层原理揭秘

    本文转载腾讯游戏工程师:Linux I/O底层原理全面揭秘 这里向作者致敬,写的非常棒,从技术背景到原理,通俗易懂. 摘要 从虚拟内存.I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识 ...

  2. 分布式事务之底层原理揭秘

    , hi 大家好,今天分享一这篇文章,让大家彻底了解分布式原理,这个是后台开发必须掌握技能. 刚性事务 柔性事务 本地事务 分布式事务 单阶段原子提交协议 两阶段提交协议 定义 原理 性能 恢复 缺陷 ...

  3. [Spring5]IOC容器_底层原理

    IOC的概念和原理 什么是IOC 1.控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理 2.使用IOC目的:为了耦合度减低 IOC底层原理 xml解析 工厂模式 反射 底层原理示例图 ...

  4. IOC容器(底层原理解读)

    IOC的概念和原理 目录 IOC的概念和原理 1.什么是IOC (1)控制反转: (2)使用IOC的目的:降低耦合度 (3)IOC解耦过程图解 2.IOC的底层原理 3.IOC接口 (1)IOC思想 ...

  5. java,从入土到出棺——2.数据结构(从容器(集合等)到底层原理)

    java,从入土到出棺--2.数据结构(从容器(集合等)到底层原理) 1 数据结构 1.1 概述 1.2 数据结构的种类 1.2.1 数组(Array) 1.2.2 栈(Stack) 1.2.3 队列 ...

  6. 电信云的原理及相关架构

    电信云的原理及相关架构 一.什么是电信云 NFV -- 网络功能虚拟化 通过借用IT的虚拟化技术,许多类型的网络,设备类型可以合并进入工业界标准中,如servers\switches\storage ...

  7. 你想知道的容器混合云问题,答案都在这里!

    作者:范桂飓 来源:CSDN 博客 前言 今天笔者有幸受邀参加了亚马逊云科技中国峰会(上海站)的 "开发者之家<观点碰撞>" 活动,与诸位亚马逊云科技的技术专家们一同对 ...

  8. Go语言潜力有目共睹,但它的Goroutine机制底层原理你了解吗?

    来源 | 后端技术指南针(ID:gh_ed1e2b37dcb6) Go语言的巨大潜力有目共睹,今天我们来学习Go语言的Goroutine机制,这也可能是Go语言最为吸引人的特性了,理解它对于掌握Go语 ...

  9. 基于弹性云服务器的昇腾AI应用开发随笔【与云原生的故事】

    什么是弹性云服务器? 先来说说云服务器(Elastic Cloud Server),云服务器是具有完整硬件.操作系统.网络功能,并且运行在一个完全隔离环境中的计算机系统.云服务器具有弹性.按需获取的特 ...

最新文章

  1. java 读取txt,java读取大文件
  2. 学习Oracle 最好的5本书,最畅销的Oracle 5本书
  3. marsony布局出现的错误 (三)
  4. css3动画:animation
  5. java ifpresent_java映射的merge、compute、computeIfAbsent、computeIfPresent的使用
  6. android r文件错误,Android R文件丢失异常原因汇总
  7. ELK学习10_ELK系列--实时日志分析系统ELK 部署与运行中的问题汇总
  8. 当你感到学习困难的时候,你在走上坡路!
  9. lame,把ios录音转换为mp3格式
  10. unix高级编程apue.h问题
  11. armbian docker Chrome_一起学docker06-docker网络
  12. HTML XHTML CS3 JS网页制作(IT培训网站设计+当当网首页设计)
  13. 云南师范大学计算机基础教学,云南师范大学841信息技术基础(含计算机文化基础、多媒体技术基础)考研复习经验...
  14. android 10.0 去掉未知来源弹窗 默认授予安装未知来源权限
  15. Description 现举行新生歌手大赛,评分规则是这样的:一共有10个评委给每个歌手打分,分数采用 百分制,算分时去掉一个最高分,去掉一个最低分,取其余8个评委的平均分作为歌手的 得分。现有多个歌
  16. Ubuntu make 降级方法
  17. LibreOffice 安装
  18. 黄太吉品牌创始人赫畅:创造下一个互联网奇迹
  19. mysql left 函数_MySQL left()函数
  20. 利用蜜罐技术优雅反杀的思路

热门文章

  1. 亚信java在线测评题库_校招秋招,网申在线测评如何训练才能通过?
  2. org.springframework.web.client.ResourceAccessException: I/O error on POST request for ************
  3. 25岁php,“最好的语言“ 25 岁了,PHP说要走向安全和开放!
  4. 【狂神JAVA】MyBatis笔记
  5. 小博老师演示常用JQuery效果 ——图片轮播
  6. unity 打包AssetBundle
  7. 计算SDWebImage缓存大小以及清除
  8. 北大青鸟ASP.NET之总结篇
  9. 检测浏览器是否支持WebSocket
  10. 乱谈卡巴CCTV黄金时段广告