前言

Ansible - 应用程序编排工具

Docker - 应用程序容器化

容器化管理接口和早期应用的管理是不同的。docker 的出现就呼唤面向容器化的编排工具的实现。


docker 三剑客

docker compose 编排工具,适用于单机

docker swarm 将多台docker主机整合成一个资源池。

docker machine 将多台主机加入到 docker swarm的先决条件,预处理工具。

不再是面向单机的编排工具。


mesos - IDC 的操作系统

kubernetes:占据容器编排工具的80%份额

微服务:一个小程序只干一件事,天然和容器结合,利用容器本身的特性,使得微服务和容器结合起来。

DevOps

  • CI:持续集成
  • CD:持续交付 Delivery
  • CD:持续部署 Deployment

kubernetes 特性:

  1. 自动装箱,自我修复,水平扩展,服务发现和负载均衡,自动发布和回滚。
  2. 密钥和配置管理,存储编排,批量处理执行

更加关注的是群体,而不再是个体。

Dockerfile 使用 entrypoint.sh 来定义容器的启动。

k8s 概述

kubernetes 就是一个集群。集群是分角色的, master/nodes

  • master:一般作冗余,3个就够了。
  • node: worker,若干个。

关掉k8s微服务 k8s+docker微服务架构_关掉k8s微服务

客户端请求先到 masters 创建启动容器的请求交给 master ,master当中有一个调度器可分出现有node的可用资源状态,找一个最佳适配用户请求资源的节点, 由这个node 本地的容器引擎运行起来。 镜像在 镜像仓库,可在互联网也可在私有仓库。

接收请求的只是能是 kubernetes master

  • API Server 接收、解析、处理客户端请求。
  • scheduler - 计算node资源。 首先选3个node ,然后在优先最佳的node 创建并运行容器。

node节点 kubelet - 确保容器处于健康状态

控制器 - 监控容器状态。

控制器有问题了怎么办?

控制器不健康了,控制器管理器 controller manager

控制器管理器不健康了,是有三台主机冗余的。1个主节点,2个备用节点。

kubernetes master 三大组件:

  • API server 负责接收并处理请求;
  • scheduler 调度容器创建的请求;
  • 控制器管理器:确保已创建的容器处于健康状态

K8S 上 最小运行的单元叫 pod, 可以理解为容器的外壳,给容器做了一次抽象的封装。

pod 是 k8s 最小调度单元。

一个pod中可以包含多个容器,多个容器共享底层的网络名称空间、UTS IPC 同享存储卷。

一般来说,一个 pod 内只放一个容器,除非容器之间有特别紧密的关系。如果要放置多个容器,其中一个为主容器,其他为辅助容器。

如果将某个pod 调度到某个node上运行,则这个pod中的所有的容器都在这个node 上运行。

Pod 分类:

为了对pod 分类进行识别,需要在 pod上附加一些元数据。可以在dockerfile中直接打上标签。这些这些标签就是 k-v 数据。

标签选择器 selector