Reference
Abstract
It’s focuses on container technology and how it’s emerging as an important part of the cloud computing infrastructure. It looks at Docker, an open source project that automates the faster deployment of Linux applications, and Kubernetes, an open source cluster manager for Docker containers.
Content
- 服务部署的模式变迁
- 服务如何部署
- 这么多的服务如何管理编排
- 容器化编排的技术
- 搭建高可用、负载均衡服务
应用部署运行模式变迁
简单的说,Kubernetes 是管理 Container 的工具,OpenStack 是管理 VM 的工具。
OpenStack = 计算资源管理(主要最成熟的是虚机) + 存储资源管理 + 网络资源管理
Kubernetes = 容器资源管理 + 集群编排
所以采用 OpenStack+Kubernetes 是目前相对完整的云应用解决方案栈
什么是 Docker 容器化引擎
特性 | 容器 | 虚拟机 |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为 MB |
一般为 GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 | 一般几十个 |
优点:
- 轻量级
- 隔离机制,不依赖系统环境
- 秒级启动
- 应用迁移,一次构建到处运行
快速使用
启动方式 1:
1 | nvidia-docker run -it -v /home/biod/notebooks:/notebooks -e PASSWORD="biodwhu" -p 5050:8888 -d --restart=always tensorflow/tensorflow:latest-gpu |
启动方式 2:
1 | docker run -it -v /home/biod/notebooks:/notebooks --runtime=nvidia -e PASSWORD="biodwhu" -p 5050:8888 -d --restart=always tensorflow/tensorflow:latest-gpu |
启动方式 3:docker-compose.yml
1 | version: '3.1' |
kubernetes
什么是 kubernetes(k8s)
Kubernetes 是 Google 2014 年创建管理的,是 Google 10 多年大规模容器管理技术 Borg 的开源版本。
Kubernetes 是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。使用 Kubernetes 我们可以:
- 快速部署应用
- 快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
Kubernetes 的目标是促进完善组件和工具的生态系统,以减轻应用程序在公有云或私有云中运行的负担。
特点
- 可移植: 支持公有云,私有云,混合云,多重云(多个公共云)
- 可扩展: 模块化,插件化,可挂载,可组合
- 自动化: 自动部署,自动重启,自动复制,自动伸缩/扩展
为什么需要 Kubernetes
可以在物理或虚拟机的 Kubernetes 集群上运行容器化应用,Kubernetes 能提供一个以 “容器为中心的基础架构”,满足在生产环境中运行应用的一些常见需求,如:
- 多个进程协同工作
- 存储系统挂载
- 应用健康检查
- 应用实例的复制
- 自动伸缩/扩展
- 注册与发现
- 负载均衡
- 滚动更新
- 资源监控
- 日志访问
- 调试应用程序
- 提供认证和授权
检查 Nodes 状态
1 | kubectl get nodes |
运行第一个容器实例
1 | 使用 kubectl 命令创建两个监听 80 端口的 Nginx Pod(Kubernetes 运行容器的最小单元) |