1、Kubernetes 概述

  1.1、Kubernetes 概述

          什么是Kubernetes?

       *  k8s是google在2014年开源的一个容器集群管理系统,使用go语言开发。

       *  起源Google的Kubernetes 在过去几年中一直是云计算领域最著名的开源项目之一,项目成立5年一路高歌猛进,早已家喻户晓,成为容器编排的事实标准,为组织设计和部署应用程序带来全新定义。Linux 基金会常务董事 Jim Zemlin 说:“Kubernetes is the Linux of the Cloud(Kubernetes 已经成为云计算时代的 Linux 操作系统)”。

       *  k8s用于管理云平台中多个主机上的容器化的应用,Kubernetes是自动化容器操作的开源平台,这些操作包括容器编排,资源调度,弹性伸缩,均衡容灾,部署管理,服务发现等一系列功能。

       * Kubernetes目标是让部署容器化应用简单高效。

       * 官方网站: http://www.kubernetes.io

  Kubernetes中文社区:https://www.kubernetes.org.cn/

  Kubernetes 基于 docker 容器的云平台。

  openstack 基于 kvm 虚拟机云平台。

1.2 Kubernetes特性

      如果你曾经用过Docker容器技术部署容器,那么可以将Docker看成Kubernetes内部使用的低级别组件。Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务发现、扩容缩容、监控,维护等一整套功能。成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。

      k8s一个核心的特点就是能够自主的管理容器来保证云平台中的容器按照用户的期望状态运行,比如用户想让apache一直运行,用户不需要关心怎么去做,Kubernetes会自动去监控,然后去重启,新建,总之,让apache一直提供服务。Kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。

     使用k8s可以:

*    自我修复

在节点故障时重新启动失败的容器,替换和重新部署,保证预期的副本数量;杀死健康检查失败的容器,并且在未准备好之前不会处理客户端请求,确保线上服务不中断。

*     弹性伸缩

使用命令、 UI或者基于CPU使用情况自动快速扩容和缩容应用程序实例,保证应用业务高峰并发时的高可用性;业务低峰时回收资源, 以最小成本运行服务。

*     自动部署和回滚

K8S采用滚动更新策略更新应用,一次更新一个Pod,而不是同时删除所有Pod,如果更新过程中出现问题,将回滚更改, 确保升级不受影响业务。

*     服务发现和负载均衡

K8S为多个容器提供一个统一访问入口(内部IP地址和一个DNS名称),并且负载均衡关联的所有容器,使得用户无需考虑容器IP问题。

*     机密和配置管理

管理机密数据和应用程序配置,而不需要把敏感数据暴露在镜像里,提高敏感数据安全性。并可以将一些常用的配置存储在K8S中,方便应用程序使用。

*     存储编排

挂载外部存储系统,无论是来自本地存储,公有云(如阿里云、AWS),还是网络存储(如NFS、 GlusterFS、 Ceph)都作为集群资源的一部分使用,极大提高存储使用灵活性。

*     批处理

提供一次性任务,定时任务;满足批量数据处理和分析的场景。

1.3  k8s集群架构与组件

      k8s属于主从分布式架构,主要由Master和Worker Node组成,包括客户端命令行工具kubectl和其它附加项。

      master:作为控制节点,对集群进行统一的调度和管理;比如所有的增加、删除、修改、查找容器都是在master上操作。Master由API Server、Scheduler(调度器)、Cluster State Store(集群状态存储,如etcd)和Controller-Manger Server(控制器管理器服务)组件所组成;

     worker node:作为真正的工作节点,运行业务应用的容器;Node 由 Master 管理,Node 负责监控并汇报容器的状态,并根据 Master 的要求管理容器的生命周期。Worker Node包含kubelet、kube proxy和Container Runtime;

   kubecl:客户端工机具,用于通过命令行与API Server进行交互,对Kubernetes集群进行操作,实现在集群中进行各种资源的增删改查等操作;

1.4 k8s组件介绍

1.4.1 master组件

     master是集群控制管理节点,k8s集群的管理节点,负责管理集群,所有的命令都经由master处理,比如所有的增加、删除、修改、查找容器都是在master上操作。拥有Etcd存储服务,运行Api Server进程,Controller Manager服务进程及Scheduler服务进程,关联工作节点Node。

     master 节点包含如下组件:

*   kube-apiserver

kuburnetes API server,集群的统一入口,各组件协调者,以RESTful API提供接口服务,用户通过 api server 来管理整个容器集群平台。所有对象资源的增删改查和监听操作都交给API Server处理后再提交给Etcd存储。

扩展:REST:一种软件架构风格,就是用URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

API server  负责和 etcd 交互(其他组件不会直接操作 etcd,只有 API Server 这么做),整个 kubernetes 集群的所有的交互都是以 API Server 为核心的。

如:1、所有对集群进行的查询和管理都要通过 API 来进行

       2、所有模块之间并不会互相调用,而是通过和 API Server 打交道来完成自己那部分的工作,API Server提供的验证和授权保证了整个集群的安全

*   kube-controller-manager

  kubernetes controller manager是Kubernetes所有资源对象的自动化控制中心,处理集群中常规后台任务,一个资源对应一个控制器,而Controller Manager就是负责管理这些控制器的。

例如:erplication controller (RC)用来管理Pod的副本,保证集群中存在指定数量的Pod副本。集群中副本的数量大于指定数量,则会停止指定数量之外的多余容器数量,反之,则会启动少于指定数量个数的容器,保证数量不变。Replication Controller是实现弹性伸缩、动态扩容和滚动升级的核心。

  如果某个 Pod创建了Replication Controller并且指定3个副本,它会创建3个Pod,并且持续监控它们。如果某个Pod不响应,那么Replication Controller会替换它,保持总数为3。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐