kubernetes入门篇 —— 基本介绍

官方网址:https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

kubernetes概述

  • Kubernetes 是一个开源的,用于管理云平台中多个主机的容器化的应用。
  • Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful)
  • Kubernetes 提供了应用部署、规划、更新以及维护的一种机制

核心特点:能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行着,【例如:用户想让Apache一直运行,并不需要关心如何做,Kubernetes会自动监控到,然后进行重启、新建操作来保证Apache正常提供服务】管理员可以加载一个微型服务,让规划器来找到合适的位置。同时,Kubernetes也在系统的提升工具及人性化方面,方便用户部署自己的应用
优势:

  • 隐藏资源管理和错误处理,用户仅需要关注应用的开发
  • 服务高可用、高可靠
  • 可将负载运行在由成千上万的机器联合而成的集群中

kubernetes设计架构

Kubernetes集群包括有节点代理kubelet和Master组件(APIs,scheduler、etc)
kubernetes入门篇 —— 基本介绍_第1张图片

  • Kubernetes节点

在构架图中,可以分为两个服务:运行在工作节点上的服务和组成集群级别控制版的服务
Kubernetes节点有运行应用容器必备的服务,而这些都是受Master的控制。且每个节点都要运行Docker,使用Docker来负责所有具体的映像下载和容器运行

  • Kubernetes核心组件
etcd 保存整个集群的状态
apiserver 提供资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler 负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上
kubelet 负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)管理
Container runtime 负责镜像管理以及Pod和容器真正运行(CRI)
kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡
  • 推荐的Add-ons
kube-dns 负责为整个集群提供DNS服务
Ingress Controller 为服务提供外网入口
Heapster 提供监控资源
Dashboard 提供GUI
Federation 提供跨可用区的集群
Fluentd-elasticsearch 提供集群日志采集、存储与查询
  • 分层架构
    kubernetes入门篇 —— 基本介绍_第2张图片
核心层:Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析等)
管理层:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口层:kubectl命令行工具、客户端SDK以及集群联邦
生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴

kubelet:kubelet负责管理pods和它们上面的容器,images镜像、volumes、etc
kube-proxy:每一个节点也运行一个简单的网络代理和负载均衡。正如Kubernetes API里面定义的这些服务,也可以在各种终端中以轮询的方式做一些简单的TCP和UDP传输。
服务端点目前是通过DNS或者环境变量( Docker-links-compatible 和 Kubernetes{FOO}_SERVICE_HOST 及 {FOO}_SERVICE_PORT 变量都支持)。这些变量由服务代理所管理的端口来解析。
Kubernetes控制面板:Kubernetes控制面板可以分为多个部分。目前它们都运行在一个master 节点,然而为了达到高可用性,这需要改变。不同部分一起协作提供一个统一的关于集群的视图。
etcd:所有master的持续状态都存在etcd的一个实例中。这可以很好地存储配置数据。因为有watch(观察者)的支持,各部件协调中的改变可以很快被察觉。
Kubernetes API Server:API 服务提供Kubernetes API 的服务。这个服务试图通过把所有或者大部分的业务逻辑放到不两只的部件中从而使其具有 CRUD 特性。它主要处理 REST 操作,在 etcd 中验证更新这些对象(并最终存储)。
Scheduler:调度器把未调度的 pod 通过 binding api 绑定到节点上。调度器是可插拔的,并且我们期待支持多集群的调度,未来甚至希望可以支持用户自定义的调度器。
Kubernetes控制管理服务器:所有其它的集群级别的功能目前都是由控制管理器所负责。例如,端点对象是被端点控制器来创建和更新。这些最终可以被分隔成不同的部件来让它们独自的可插拔。
replicationcontroller:replicationcontroller 是一种建立于简单的 pod API之上的一种机制。一旦实现,我们最终计划把这变成一种通用的插件机制。

你可能感兴趣的:(运维企业实战)