容器引擎与编排工具

1、docker引擎

多数技术人员在谈到Docker时,主要是指Docker引擎。Docker引擎是用于运行和编排容器的基础设施工具。

Docker引擎是运行容器的核心容器运行时。其他 Docker公司或第三方的产品都是围绕Docker引擎进行开发和集成的。

Docker的核心技术包括docker镜像、docker容器和docker仓库。

2、docker镜像

Docker镜像是一个特殊的文件系统,它提供了容器运行

时所需的程序、库、资源、配置等文件外,还包含了一

些为运行时准备的一些配置参数(如匿名卷、环境变量、

用户等)。

镜像不包含任何动态数据,其内容在构建之后也不会被

改变。(只读属性),镜像结构如右图所示:

3、docker容器

镜像(Image)和容器(Container)有紧密的关系,镜像是静态的定义,容器是镜像运行时

的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命

名空间。因此容器可以拥有自己的root文件系统、自己的网络配置、自己的进程空间,甚至

自己的用户 ID 空间。

容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下

操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特

性,很多人初学 Docker 时常常会混淆容器和虚拟机。

4、docker仓库

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository),每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。

5、容器编排工具Kubernetes

K8S,就是Kubernetes,中文意思是舵手或导航员。Kubernetes这个单词很长,所以大家把中间8个字母缩写成8,就成了K8S。

K8S是一个容器集群管理系统,主要职责是容器编排(Container Orchestration)——启动容器,自动化部署、扩展和管理容器应用,还有回收容器。简单来说,K8S有点像容器的保姆。它负责管理容器在哪个机器上运行,监控容器是否存在问题,控制容器和外界的通信等等。

6、Kubernetes中的几个概念

k8s中几个重要概念,分别是:

概念是什么通俗类比核心作用你的理解对不对
Cluster整个K8s集群一个「云操作系统」把所有物理/虚拟机聚合成一个资源池✅ 就是所有东西的总和
Master集群的控制节点大脑/指挥部调度、控制、API入口✅ 发号施令的地方
Node干活的工作节点工人/士兵实际跑容器的机器✅ 执行命令的
Pod最小的调度单元一个「逻辑主机」里面跑1个或多个容器(共享网络)⚠️ 不是容器本身,是容器的外壳
Controller控制器的统称各种监工确保实际状态=期望状态✅ 自动化的核心
ReplicaSet (RS)副本控制器保证有N个相同的Pod在跑扩容、缩容、自愈✅ 数量保障
Deployment无状态应用管理发布工具管理RS、滚动更新、回滚✅ 最常用的控制器
DaemonSet节点守护者每个Node上必须跑一个日志收集、监控Agent✅ 每个节点都有
Service稳定的访问入口负载均衡 + 服务发现Pod的IP会变,Service不变⚠️ 不是Pod,是访问Pod的入口
Namespace逻辑隔离分区虚拟集群多租户隔离、环境隔离✅ 物理集群里的逻辑隔间
                ┌─────────────────┐
                │    Cluster      │
                │    (集群)        │
                └────────┬────────┘
                         │
          ┌──────────────┴──────────────┐
          │                              │
   ┌──────▼──────┐               ┌──────▼──────┐
   │   Master    │               │    Node     │
   │   (大脑)     │               │   (工人)     │
   └─────────────┘               └──────┬──────┘
                                         │
                                 ┌───────┴───────┐
                                 │     Pod       │
                                 │   (最小单元)   │
                                 └───────┬───────┘
                                         │
                  ┌──────────────────────┼──────────────────────┐
                  │                      │                      │
          ┌───────▼───────┐      ┌───────▼───────┐      ┌───────▼───────┐
          │  Deployment   │      │   DaemonSet   │      │   ReplicaSet  │
          │  (无状态应用)   │      │  (节点守护)    │      │   (副本控制)   │
          └───────────────┘      └───────────────┘      └───────────────┘
                  │                      │                      │
                  └──────────────────────┼──────────────────────┘
                                         │
                                 ┌───────▼───────┐
                                 │   Service     │
                                 │  (稳定入口)    │
                                 └───────────────┘

7、Kubernetes运行架构分析

Kubernetes属于主从分布式架构,主要由Master Node和Worker Node组成,以及包括客户端命令行工具kubectl和其

它附加项。

基本架构如下图所示

master节点之上运行着的后台服务有:

kube-apiserver、

kube-scheduler

kube-controller-manager

Etcd

pod网络( flannel )等。

node节点之上运行着的后台服务有:

Kubelet

kube-proxy

pod网络( flannel )

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注