kubernetes快速入门-1

80 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

1.kubernetes简介

1.1.kubernetes是什么

kubernetes是一个可移植、可扩展的“分布式开源平台”,这个平台主要是用来管理我们运行的容器化应用,只不过这个平台
它是一个分布式的,那kubernetes这个分布式平台是如何实现的呢;kubernetes是将多个OS节点组织在一起,构建出一个
庞大的虚拟资源池,而后对用户提供操作集群的接口,用户就可以通过kubernetes提供的对应接口对容器进行增删查改等操作。
所以对于用户而言,它无需关心kubernetes底层是如果对容器进行创建、又是如何调度到对应的节点的,它只需要专注于自己
的业务逻辑代码开发即可

当我们需要使用kubernetes交付应用时,仅需要通过yaml文件的方式来描述对应容器的状态,kubernetes则会安装yaml文件中所描述的容器状态信息;进行容器的“自动化”创建。

kubernetes会时刻监控着容器的状态,如果有容器故障,则会尝试重启容器,使其能容器运行的状态能达到用户所期望的值;

1.2.为什么需要kubernetes

目前使用容器打包和运行应用程序,已经是业界主流的一种方式,在生产环境中,我们需要管理运行应用程序的容器,同时还要确保它不会停机,从而保障业务的不中断性

这就是kubernetes需要解决的问题!kubernetes它可以轻松的实现应用的扩展、服务发现、负载均衡、容器的故障转移、以及容器编排等

kubernetes都有哪些功能:

  • 垂直扩容:新的服务器节点能够很容易的进行增加和删除
  • 水平扩容:容器实例能通过副本控制器进行轻松的扩容、缩容
  • 弹性伸缩:能根据容器的资源使用情况,进行自动的扩缩容
  • 服务发现和负载均衡:kubernetes为容器提供负载均衡功能,进行流量调度,从而使得应用运行更加稳定
  • 存储编排:kubernetes允许自动挂载各种存储类系统,比如本地存储、NFS、GFS、Ceph、公共云存储等
  • 自动部署和回滚:如果应用部署过程中出现错误,可以实现指定回滚
  • 自动完成装箱计算:kubernetes允许指定每个容器所需的CPU和内存资源,能够更好的管理容器的资源使用
  • 自我修复:kubernetes会重新启动失败的容器,替换容器、对运行状况检查不响应的容器进行杀死
  • 密钥与配置管理:kubernetes允许存储和管理敏感信息,例如密码、令牌和ssh密钥。可以在不重建容器镜像的情况下,部署和更新密钥

1.3.kubernetes不是什么

kubernetes不是传统的、包罗万象的PaaS(平台即服务)系统。它提供了PaaS产品共有的一些普遍适用的功能,例如部署、扩展、负载均衡、日志记录和监视。kubernetes默认解决方案都是可选和可插拔的。但是重要的地方保留了用户的选择和灵活性

kubernetes:

  • 不限制支持的应用程序类型:如果只有应用程序可以在容器中运行,那么它应该可以在kubernetes上很好的运行
  • 不部署源代码,也不构建你的应用程序:CI/CD工作流取决于组织文化和偏好以及技术要求
  • 不提供应用程序级别的服务作为内置服务:例如中间件--消息中间件、数据处理框架---Spark、数据库---mysql、缓存、集群存储系统---Ceph.这些组件都可以在kubernetes上运行
  • 不要求日志记录、监视或警报解决方案:它提供了一些集成作为概念证明,并提供了收集和导出指标的机制
  • 不提供或不要求配置语言/系统:它提供了声明性API,该声明性API可以由任意形式的声明性规范所构成。RESTful
  • 不提供也不采用任何的机器配置、维护、管理或自我修复

1.4.kubernetes集群角色

kubernetes集群需要建立在多个物理主机上,将多个物理主机的资源抽象出来,组成一个平台,而后台进行统一管理,当然它需要多个物理主机,不一定必须是物理主机,不一定必须是物理机,也可以是虚拟机VM等等;所以从这个角度来说,kubernetes是一个集群,但是在kubernetes集群内部,这些节点又被划分成了两类角色;

  • 一类角色为主节点(master),负责管理集群;

  • 一类角色为工作节点(Node),负责运行应用;

这也就意外着我们将来运行的所有容器,都应该运行在Node节点,而master负责管理有多少个Node节点,同时还负责管理每个Node节点应该运行哪个容器或哪些容器的控制中心,因此在kubernetes中Master被称之为Control plane控制平面,而Node就是我们的data plane叫数据平面

图片.png

Registry: Kubernetes主要是在Node上运行容器化应用,那么容器化应用需要依托镜像,而镜像又来自于Registry,但Registry并不是Kubernetes集群的组成部分,但我们必须要有一个私有的Registry,当然也可以使用公共的镜像仓库;

Client:无论客户端是通过API接口,还是WebUI接口、又或者CLI接口与Master交互,其实都是向Master发送请求,比如客户端申请创建容器、删除容器等,都是由Master负责在Node节点上对容器进行增删改查,而这些操作必须要通过Master,由Master控制着完成的,虽然我们将其称Master,但它并非是一个组件,而是由多个组件组成的;