K8s必知必会

前言

Kubernetes是用于自动部署,扩展和容器花应用程序的开源系统,简单的来讲就是容器集群调度平台,可以自动化应用容器的部署、扩展和操作,提供以容器为中心的基础架构。

使用 Kubernetes, 您可以快速高效地响应客户需求:

  • 快速、可预测地部署您的应用程序
  • 拥有即时扩展应用程序的能力
  • 不影响现有业务的情况下,无缝地发布新功能
  • 优化硬件资源,降低成本

应用场景

我们先看下k8s的官方对应用场景的定义。

Kubernetes是Google基于Borg开源的容器编排调度引擎,作为CNCF(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,Kubernetes可以帮你将系统自动地达到和维持在这个状态。Kubernetes作为云原生应用的基石,相当于一个云操作系统,其重要性不言而喻。

这些定义是什么鬼?为什么每个字我都认识,但就不明白是啥意思?

来,我们先理解下什么是云?这里的云,肯定不是天上飘的那种,我们说的云,其实就是云服务。我还是先去翻翻维基百科吧。云的定义是这样子的:

云计算(英语:cloud computing),是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备。

所谓的云就是,以互联网的方式提供服务器端的计算服务。在云上,你可以运行很多自定义的服务,而不需要关心基础设施的细节,简单的来讲,你不需要自己购买维护服务器硬件了,因为你可以买云提供商已经部署的服务器,直接用就可以了。

那么问题来了,虽然不需要管理维护服务器硬件了,但我们运行部署的自定义服务,还是得自己维护吧。这时候,K8s就站出来说,它可以帮你管理运行的应用,不管你的应用啥时候挂了,还是需要扩容,它都可以帮你搞定。只要你描述了整个集群的架构是怎么样的,定义你的服务最终状态,K8s都可以很好管理和维护服务的状态。那K8s到底是怎么做到的呢?

组成部分

K8s的主要组成部分有3个,分别为:Master、Node、Pods。

Master

负责集群内所有pods的状态,负载均衡等,主要组件有Ectd、Controller Manager、API Server、Scheduler等。

  1. 采用Etcd键值对服务,保存了整个集群的状态。
  2. Controller Manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
  3. API Server提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制
  4. Scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上

Node

这些Node和我们经常遇到的节点,其实就是一回事。这些都是真实的物理机器,连接了网络,有CPU计算能力。主要组成有:

  1. kubelet负责维护容器的生命周期,同时也负责Volume(CSI)和网络(CNI)的管理

  2. Container runtime负责镜像管理以及Pod和容器的真正运行(CRI)

  3. kube-proxy负责为Service提供cluster内部的服务发现和负载均衡

再往下走,就涉及到主机的操作系统OS,底层硬件了。

Pods

这是整个架构中的精华部分。

对节点抽象出来的一层,节点的操作系统,硬件部分可能会有不同的差异,通过在Docker+Kubelet+kuebe-proxy的基础上抽象出一个集装箱层,类似与编程中对业务逻辑的抽象,也就是Pod.

这一层关注的是标准化,提供集装箱Pod的格式给到业务,至于里面的应用,只要符合Pod的标准,都可以正常运行起来,并且还是支持自动部署,自动恢复,负载均衡等。

关键点

Kubernetes设计理念和功能其实就是一个类似Linux的分层架构。

分类 实现 备注
核心层 Kubernetes最核心的功能,对外提供API构建高层的应用,对内提供插件式应用执行环境
服务层 部署服务(无状态应用、有状态应用、批处理任务、集群应用等)
路由服务(服务发现、DNS解析等)
Service Mesh服务(部分位于应用层)
管理服务:系统度量(如基础设施、容器和网络的度量),自动化(如自动扩展、动态Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)、Service Mesh(部分位于管理层)
接口服务:kubectl命令行工具、客户端SDK以及集群联邦
应用层 也就是可以运行的生态系统服务
Kubernetes外部:日志、监控、配置管理、CI/CD、Workflow、FaaS、OTS应用、ChatOps、GitOps、SecOps等
Kubernetes内部:CRICNICSI、镜像仓库、Cloud Provider、集群自身的配置和管理等

总结

文章中,我们了解到云的定义,K8s的应用场景,以及K8s的常用组件,下面,我们尝试搭建K8s组件Dashborad,方便管理集群。

参考链接

  1. Kubernetes架构

发表评论

电子邮件地址不会被公开。 必填项已用*标注