•虚拟机技术和容器技术
- 虚拟化技术发展的三个时代
- 容器技术
容器技术:有效的将单个操作系统的资源划分到孤立的组中,以便更好的在孤立的组之间平衡有冲突的资源使用需求,这种技术就是容器技术。
•LXC,就是Linux容器虚拟技术(Linux container)。
•Linux Container是一种内核轻量级的操作系统层虚拟化技术。
•Linux 容器技术能够让您对应用及其整个运行时环境(包括全部所需文件)一起进行打包或隔离。从而让您可以在不同环境(如开发、测试和生产等环境)之间轻松迁移应用,同时还可保留应用的全部功能。
- 容器解决什么问题?
- 保证开发、测试与生产环境的一致性
- 快速搭建各类基础服务,例如Gitlab,Nexus、Jenkins等,极大降低学习成本!
- 搭建一次性测试执行环境,例如我们运行自动化测试的环境,随用随建,不用即扔
- …
- 容器的优点
1. 敏捷环境
2. 提高生产力
3. 版本控制
4. 计算环境可移植性
5. 标准化
6. 安全
- 虚拟机技术与容器技术对比
- 容器技术的代表-Docker
Docker两句口号:
•Build, Ship and Run
搭建、发送、运行
•Build once,Run anywhere
搭建一次,到处能用
Docker技术的三大核心概念:
·Image
镜像
·Container
容器
·Repository
仓库
IT 软件中所说的 “Docker” ,是指容器化技术,用于支持创建和使用LXC。Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。
•容器编排工具
- 什么是容器编排?
容器编排是指自动化容器的部署、管理、扩展和联网。容器编排可以为需要部署和管理成百上千个 Linxu容器和主机的企业提供便利。
- 容器编排具有哪些用途?
•集群管理
•部署
•可伸缩性
•健康
•服务可用性
•隔离
- 容器编排工具
通过抽象主机基础结构,允许用户将整个集群视为单个部署目标。
一些常见的方案包括:Kubernetes、Docker Swarm 和 Apache Mesos。
Docker Swarm
Apache Mesos
•Kubernetes介绍
- Kubernetes是什么?K8s?
•Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。
•Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
通过Kubernetes你可以:
•快速部署应用
•快速扩展应用
•无缝对接新的应用功能
•节省资源,优化硬件资源的使用
Kubernetes 特点:
•可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
•可扩展: 模块化, 插件化, 可挂载, 可组合
•自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
- Kubernetes集群
Master:
•API Server
•Scheduler
•Controller manager
•Etcd
Node:
•Kubelet
•Kube-proxy
•Docker
- Pod
Pod是Kubernetes创建或部署的最小/最简单的基本单位,一个Pod代表集群上正在运行的一个进程。
Pod(上图绿色方框)安排在节点上,包含一组容器和卷。同一个Pod里的容器共享同一个网络命名空间,可以使用localhost互相通信。Pod是短暂的,不是持续性实体。
- Lable
Labels其实就一对附加到Pod上的 key/value对 ,被关联到对象上,标签的使用我们倾向于能够标示对象的特殊特点,并且对用户而言是有意义的(比如app=mysql),但是标签对内核系统是没有直接意义的。
- ReplicaSet( Replication Controller升级版 )
ReplicaSet 确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了ReplicaSet并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么ReplicaSet会替换它。
健康检测:
1.LivenessProbe(存活探针)
2.ReadinessProbe(就绪探针)
- Service
Service是定义一系列Pod以及访问这些Pod的策略的一层抽象。Service通过Label找到Pod组。
注:在 1.8 以上的版本中,kube-proxy 组件增加了 ipvs 模式
- 关于CI/CD流水线架构图: