【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

2年前 (2022) 程序员胖胖胖虎阿
283 0 0

【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

目录(k8s集群搭建先导篇)

    • 一、Kubernetes 的特性/功能
    • 二、Kubernetes 集群架构介绍
      • 1. master node 节点
      • 2. worker node 节点
    • 三、Kubernetes 核心概念
      • 1. Pod
      • 2. Controller
      • 3. Service

一、Kubernetes 的特性/功能

自动装箱:基于容器对应用运行环境的资源配置,要求自动部署应用容器,无需太多人工干预。

自我修复:也就是自愈能力,容器启动失败时自动重启容器;当部署的 Node 节点出现问题时,会对容器进行重新部署和调度;当容器未通过监控检查时,会关闭此容器,直到容器正常运行才会对外提供服务。

水平拓展:伸缩性强,通过简单的命令、用户 UI 界面或 CPU 等资源使用情况,对应用容器进行规模扩大或缩减。

服务发现:也就是负载均衡,用户无需使用额外的服务发现机制,就可以基于 k8s 自身能力实现服务发现和负载均衡。

滚动更新:可以通过应用的变化,对容器中运行的应用进行一次性或批量更新。

版本回退:可根据应用部署情况,对容器中运行的应用进行历史版本即时回退。

密钥和配置管理:在无需重新构建镜像的情况下,可部署和更新密钥和应用配置,类似于热部署。

存储编排:自动实现存储系统挂载及应用,对有状态的应用实现数据持久化,存储系统可以来自于本地目录、网络存储(NFS、ceph、Gluster 等)。

批处理:可提供一次性任务、定时任务,满足批量数据处理和分析。

【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

以上 k8s 特性,如果仅使用 docker 容器技术是很难实现或者根本无法实现的。k8s 的目的就是让部署容器化应用更加简洁、更加高效。

二、Kubernetes 集群架构介绍

搭建一个 k8s 集群,需要包含 master-nodeworker-node 两大部分。

master-node:主控节点,专门管理各个工作节点。
worker-node:工作节点,做具体操作事务的节点。

以下将具体介绍各部分中所包含的具体组件,后续在实操搭建 k8s 集群的过程中这些组件都需要我们手动安装。
【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

1. master node 节点

API server:集群的一个对外统一入口,可以将它理解为 master 节点中各个组件的协调者,通过 apiserver 可将获取到的请求分发至各组件;需要知道,apiserver 是以 restful 请求方式提供服务的,所有请求也就是以 restful 风格通过 apiserver 进入集群后进行相关操作,最后 apiserver 将所有操作数据存储于 etcd当中。

etcd:分布式,可靠的键值存储,可用于分布式系统中存储关键核心数据。从简单的应用程序到 Kubernetes 再到任何复杂性的应用程序都可以从 etcd 中读写数据。此处专用于保存集群相关的数据。

scheduler:致力于节点调度,它会选择某一个 node 节点进行应用的部署。

controller-manager:顾名思义它主要做的就是集中的处理控制管理,集群中后台的一个统一控制组件。处理集群中常规后台任务,一个资源对应一个控制器(controller)。

2. worker node 节点

kubelet:可以理解为 master 派到 node 节点的一个“代表”,管理当前节点中容器的各种操作。

kube-proxy:提供网络代理,实现负载均衡等操作。
docker参见往期文章,此处不再赘述。

三、Kubernetes 核心概念

在操作 kubernetes 的过程中,难免会遇到一些概念性的问题,以下可以说是 kubernetes 中最重要的三个核心即PodControllerService
【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍

1. Pod

kubernetes 中最小的部署单元;是一组容器的集合,每一个 pod 中的容器都是共享网络的;pod 的生命周期是短暂的,并非一直存在,会随着服务器的重新启动或者重新部署而更新。

2. Controller

可以确保预期的 pod 副本数量;当我们在 k8s 中部署容器或应用时,可以无状态部署或有状态部署;可以确保所有 node 都运行同一个 pod;可以支持一次性任务和定时任务。

无状态:容器或应用内无任何约定,即使迁移之后也可以直接使用。
有状态:容器或应用内包含约定,如该容器/应用网络 IP 需要唯一等。

3. Service

定义一组 pod 的访问规则。

总体流程就是,通过 service 统一入口访问,由 controller 创建 pod 进行部署。

本章学习目标:

  • 掌握 k8s 的具体功能和特性;
  • 掌握 k8s 集群架构理论体系;
  • 掌握 k8s 中的核心概念点。

相关文章

暂无评论

暂无评论...