1、概述

Docker是一种Linux容器工具集,它是为构建(Build)、交付(Ship)和运行(Run)分布式应用而设计的。

Kubernates:是开源的容器集群管理系统。它构建在Docker技术之上,为容器化的应用提供资源调度、部署运行、服务发现、扩容缩容等一套功能,本质上可看作是基于容器技术的Micro-PaaS平台。

即第三代PaaS的代表性项目。

K8S的核心概念:

Kubernetes的核心概念

Pod:是若干相关容器的组合,Pod包含的容器运行在同一台宿主机上,这些容器使用相同的网络命名空间、IP地址和端口,相互之间能通过localhost来发现和通信。另外,这些容器还可共享一块存储卷空间。在K8s中创建、调度和管理的最小单位是Pod,而不是容器,Pod通过提供更高层次的抽象,提供了灵活的部署和管理模式。

Replication Controller:用来控制管理Pod副本(Replica,或者称为实例),Replication Controller确保任何时候K8s集群中有指定数量的Pod副本在运行。如果少于指定数量的Pod副本,Replication Controller会启动新的Pod副本,反之会杀死多余的副本以保证数量不变。另外,Replication Controller是弹性伸缩、滚动升级的实现核心。

Service:Service是真实应用服务的抽象,定义了Pod的逻辑集合和访问这个Pod集合的策略。Service将代理Pod对象表现为单一访问接口,外部不需要了解后端Pod如何运行,提供了一套简化的服务代理和发现机制。

Label:用于区分Pod、Service、Replication Controller的Key/Value对,实际上,Kubernetes中的任意API对象都可以通过Label进行标识,每个API对象可以有多个Lablel,但是每个Label的Key只能对应一个Value。Label是Service和Replication Controller运行的基础,它们都通过Label来关联Pod,相比于强绑定模型,这是一种非常好的松耦合关系。

Node:K8s属于主从分布式集群架构,K8s Node运行并管理容器。Node作为K8s的操作单元,用来分配给Pod进行绑定,Pod最终运行在Node上,Node可以认为Pod的宿主机。

2、Kubernate的架构和组件

K8s属于主从分布式架构,节点在角色上分为Master和Node。它遵循微服务架构理论,整个系统划分出各个功能独立的组件,组件之间边界清晰,部署简单,可以轻易地运行在各种系统和环境中。

K8s使用Etcd作为存储蹭件,Etcd是一个高可用的键值存储系统,灵感来自于Zk和Doozer,通过Raft一致性算法处理日志复制以保证强一致性。K8s使用Etcd作为系统的配置存储中心,K8s中的重要数据都持久化在Etcd中的,使得k8s架构的各个组件属于无状态,可以更简单地实施分布式集群部署。

K8s Master作为控制节点,调度管理整个系统,包含以下组件。

K8s API Server:作为K8s系统的入口,其封装了核心对象的增删改查操作,以REST API接口方式提供给外部客户和内部组件调用。它维护的REST对象将持久化到Etcd中。

K8s Scheduler:负责集群的资源调度,为新建的Pod分配机器。这部分工作分出来变成一个组件,意味着可以很方便地替换成其他的调度器。

K8s Controller Manager:负责执行各种控制器,目前已经实现很多控制器来保证K8s的正常运行。主要包含的控制器如下

控制器 说明
Replication Controller 管理维护Replication Controller,关联Replication Controller和Pod,保证Replication Controller定义的副本数量与实际运行Pod的数量是一致的。
Node Controller 管理维护Node,定期检查Node的健康状态,标识出失效的Node
Namespace Controller 管理维护Namespace,定期清理无效的Namespace,包括Namespace下的API对象,像Pod、Service和Secret等
Service Controller 管理维护Service,为LoadBalance类型的Service创建管理负载均衡器
Endpoints Controller 管理维护Endpoints,关联Service和Pod,创建Endpoints作为Service的后端,当Pod发生变化时,实时刷新新的Endpionts.
Service Account Controller 管理维护
Persistent Volume Controller 管理维护
Daemon Set Controller 管理维护
Deployment Controller 管理维护
Job Controller 管理维护
Pod Autoscaler Controller 管理维护

Micro-PaaS(Docker+K8S)的更多相关文章

  1. docker k8s 1.3.8 + flannel

    docker k8s + flannel kubernetes 是谷歌开源的 docker 集群管理解决方案. 项目地址: http://kubernetes.io/ 测试环境: node-1: 10 ...

  2. Jenkins+Git+Docker+K8s部署

    准备工作 Jenkins已安装 Docker和K8s部署运行成功 代码管理工具使用Git 最近公司项目使用Jenkins+Git+Docker+K8s进行持续化构建部署,这里笔者整理了一下构建部署的相 ...

  3. docker&k8s填坑记

    本篇主要用于记录在实施docker和kubenetes过程中遇到的一个问题和解决办法. 本节部分内容摘自互联网,有些部分为自己在测试环境中遇到到实际问题,后面还会根据实际情况不断分享关于docker/ ...

  4. docker+k8s基础篇五

    Docker+K8s基础篇(五) service资源介绍 A:service资源的工作特性 service的使用 A:service字段介绍 B:ClusterIP的简单使用 C:NodePort的简 ...

  5. docker+k8s基础篇四

    Docker+K8s基础篇(四) pod控制器 A:pod控制器类型 ReplicaSet控制器 A:ReplicaSet控制器介绍 B:ReplicaSet控制器的使用 Deployment控制器 ...

  6. docker+k8s基础篇三

    Docker+K8s基础篇(三) kubernetes上的资源 A:k8s上的常用资源 Pod的配置清单 A:Pod上的清单定义 B:Pod创建资源的方法 C:spec下其它字段的介绍 Pod的生命周 ...

  7. docker+k8s基础篇二

    Docker+K8s基础篇(二) docker的资源控制 A:docker的资源限制 Kubernetes的基础篇 A:DevOps的介绍 B:Kubernetes的架构概述 C:Kubernetes ...

  8. docker+k8s基础篇一

    Docker+K8s基础篇(一) docker的介绍 A:为什么是docker B:k8s介绍 docker的使用 A:docker的安装 B:docker的常用命令 C:docker容器的启动和操作 ...

  9. Spring Boot + Docker + K8S 简单示例

    前言 最近看了看k8s,感觉用这个管理docker确实比自己写一坨脚本进步太多了,简直不是一个次原的东西. 看着k8s的官方文档随手写了个小Demo,一个基于k8s的spring boot服务. 代码 ...

  10. Docker & k8s 系列一:快速上手docker

    Docker & k8s 系列一:快速上手docker 本篇文章将会讲解:docker是什么?docker的安装,创建一个docker镜像,运行我们创建的docker镜像,发布自己的docke ...

随机推荐

  1. iptables详解(9):iptables的黑白名单机制

    注意:在参照本文进行iptables实验时,请务必在个人的测试机上进行,因为如果iptables规则设置不当,有可能使你无法连接到远程主机中. 前文中一直在强调一个概念:报文在经过iptables的链 ...

  2. log4j 日志详解

    # 以下是rootLogger的配置,子类默认继承,但是子类重写下面配置=rootLogger+自己配置,我晕#输出到控制台 log4j.appender.console=org.apache.log ...

  3. SPOJ 5152 Brute-force Algorithm EXTREME && HDU 3221 Brute-force Algorithm 快速幂,快速求斐波那契数列,欧拉函数,同余 难度:1

    5152. Brute-force Algorithm EXTREME Problem code: BFALG Please click here to download a PDF version ...

  4. mysqldump 使用方法

    1.仅导出数据: mysqldump -t -uroot -proot pgenius RES_COM_PFT_FCST>RES_COM_PFT_FCST.sql 2.有条的导出数据: mysq ...

  5. python 中 property 属性的讲解及应用

    Python中property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回 property属性的有两种方式: 1. 装饰器 即:在方法上应用装饰器 2. 类属性 即 ...

  6. SQL 测验

    1.SQL 指的是? 您的回答:Structured Query Language 2.哪个 SQL 语句用于从数据库中提取数据? 您的回答:SELECT 3.哪条 SQL 语句用于更新数据库中的数据 ...

  7. Java多线程编程实战指南(核心篇)读书笔记(五)

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...

  8. HAWQ中的行列转置

    行列转置是ETL或报表系统中的常见需求,HAWQ提供的内建函数和过程语言编程功能,使行列转置操作的实现变得更为简单. 一.行转列 1. 固定列数的行转列 原始数据如下: test=# select * ...

  9. linux系统编程-进程

    进程 现实生活中 在很多的场景中的事情都是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的: 如下是一段视频,迈克杰克逊的一段视频: http://v.youku.com ...

  10. liunx工具学习之taskset

    当你优化多线程任务的时候,发现某个线程在不同的核上跳转较大,从而耗费CPU的时候想法肯定是想可以把对应线程绑定到特定的核上,可是每次这样操作每次尝试看效果的时候都要重启进程,那有没有一个工具可以直接处 ...