写点什么

华为云大咖带你玩转云原生基础设施之 K8s

作者:坚果
  • 2022 年 4 月 24 日
  • 本文字数:3072 字

    阅读完需:约 10 分钟

【云驻共创】华为云大咖带你玩转云原生基础设施之 K8s

前言

容器技术的诞生虽解决了应用打包和发布的难题,但单一的容器技术工具并无 法支持起生产级大规模容器部署的场景。针对这一场景,容器管理与编排成为了容器技术发展的关键。Kubernetes 便是在这样的大背景下诞生的。本文将由华为云大咖带你玩转云原生基础设施之 K8s。

容器编排技术

容器编排技术 •容器(如 Docker)以及周边生态系统提供了很多工具来实现容器生命周期管理,能够满足在单台宿主机管理容器的需求。但越来越多企业开始使用容器,对容器技术的进一步 发展提出了以下新的诉求:

高效的容器管理及编排。

容器的跨主机部署及调度。

容器的存储、网络、运维、安全等能力的拓展。



容器编排的价值

容器编排是指自动化容器的部署、管理、扩展和联网,可为企业带来以下价值:



  • 灵活的资源管理及调度

  • 自动化部署

  • 高效的监控及运维

  • 弹性扩展及高可用及服务发现

大规模容器集群管理工具,从 Borg 到 Kubernetes

Kubernetes 起源于 Google 内部的 Borg 项目,它对计算资源进行了更高层次的抽象,通过将容器进行细致的组合,将最终的应用服务交给用户。它的目标是管理大规模的容器, 提供基本的部署、维护以及应用伸缩等功能,其主要实现语言为 Go 语言。

Kubernetes 作为容器集群管理工具,于 2015 年 7 月 22 日迭代到 v1.0 并正式对外公布。与此同时,谷歌联合 Linux 基金会及其他合作伙伴共同成立了 CNCF 基金会(Cloud Native Computing Foundation),并将 Kuberentes 作为首个编入 CNCF 管理体系的开源项目, 助力容器技术生态的发展进步。

容器集群管理竞争史

Kubernetes 逐步统一容器编排和资源管理框架生态。



Kubernetes 架构

一个基础的 Kubernetes 集群(Cluster)通常包含一个 Master 节点和多个 Node 节点。每个节点可以是一台物理机,也可以是一台虚拟机。


Node 的职责是运行容器应用,由 Master 管理,Node Node 监控并汇报容器状态,同时根据 Master 的要求管理容器的生命周期。

Master 节点提供的集群控制,对集群做出全局性决策,例如调 Master Master 节点上不运行用户容 器。为了实现高可用, 可以创建多个 Master 节点。

Pod 是 Kubernetes 的最小工 作单元。每个 Pod 包含一个 或多个容器。Pod 中的容器 会作为一个整体被 Master Container 调度到一个 Node 上运行。


Master 节点

Kube-apiserver

kube-apiserver 对外暴露了 Kubernetes API。它是的 Kubernetes 前端控制层。 被设计为水平扩展架构,即通过部署更多实例来承载业务。

etcd

etcd 用于 Kubernetes 的后端存储,存储集群数据,提供数据备份。

Kube-controller-manager

控制器,负责策略控制,针对不同的工作负载执行不同的策略,如无状态 应用,有状态应用等。

Kube-scheduler

负责任务调度工作,监控没有分配节点的新创建的 Pod,选择一个节点供 Pods 运行。



Node 节点

Kubelet

在集群内每个节点中运行的一个代理,用于保证 Pod 的运行,接收 Master 的 指令,负责管理容器(Pod)。

Kube-proxy

负责做负载均衡工作,在多个 Pod/Service 之间做负载均衡。

用于管理 Service 的访问入口,包括集群内 Pod 到 Service 的访问和集群外访问 Service.

Add-ons 。

插件,用于扩展 Kubernetes 的功能。

Container runtime

通常使用 Docker 来运行容器,也可使用 rkt 等做为替代方案。



开放接口 CRI、CNI、CSI

Kubernetes 作为云原生应用的的基础调度平台,相当于云原生的操作系统,为了便于系统的扩展,Kubernetes 中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑:

  • CRI(Container Runtime Interface):容器运行时接口,提供计算能力,是定义了容器和镜 像的服务的接口,常见的 CRI 后端有 Docker、rkt、kata-containers 等。

  • CNI(Container Network Interface):容器网络接口,提供网络能力,由一组用于配置 Linux 容器的网络接口的规范和库组成,同时还包含了一些插件,它仅关心容器创建时的网络分配, 和当容器被删除时释放网络资源。

  • CSI(Container Storage Interface):容器存储接口,提供存储能力,通过它,Kubernetes 可 以将任意存储系统暴露给自己的容器工作负载。


Kubernetes 工作流程



Kubernetes 核心概念

Kubernetes 核心概念- Pod

Pod 是 Kubernetes 中最重要最基本的概念,Pod 是 Kubernetes 最小 工作单元。每个 Pod 包含- -个或多个相关容器,Kubernetes 将 Pod 看做一个整体进行调度。

引入 Pod 的目的:

将联系紧密的容器封装在一个 Pod 单元内,以 Pod 整体进行调度、扩展和实现生命周期管理。

Pod 内所有容器使用相同的网络 Namespace 和共享存储。即 Pod 内容器拥有相同 IP 地址和 Port 空间,容器间直接使用 localhost 通信。当挂载 volume 到 Pod,即可实现将 volume 挂载到 Pod 中的每个容器。



Kubernetes 核心概念- Label

当资源变得非常多的时候,如何分类管理就非常重要了,Kubernetes 提供了一种机制来 为资源分类,那就是 Label(标签)。Label 非常简单,但是却很强大,Kubernetes 中几 乎所有资源都可以用 Label 来组织。Label 的具体形式是 key-value 的标记对,可以在创建 资源的时候设置,也可以在后期添加和修改。



Kubernetes 核心概念- Namespace

命名空间(Namespace)是对一组资源和对象的抽象整合。在同一个集群内可创建不同 的命名空间,不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务, 也能够互不干扰。

在默认情况下,新建的集群存在以下四个 Namespace:

  • default:所有未指定 Namespace 的对象都会被分配在 default 命名空间。

  • kube-public:此命名空间下的资源可以被所有人访问(包括未认证用户),用来部署公共插 件、容器模板等。

  • kube-system:所有由 Kubernetes 系统创建的资源都处于这个命名空间。

  • kube-node-lease:每个节点在该命名空间中都有一个关联的“Lease”对象,该对象由节点定 期更新,被用来记录节点的心跳信号。


Kubernetes 核心概念- Controller

工作负载是在 Pod 之上的一层抽象,我们可以通过控制器(controller)实现”“茶列是” Pod 的高级特性,比如节点故障时 Pod 的自动迁移,Pod 多副本横向扩展,应用滚动升级 等。我们通常使用 controller 来做应用的真正的管理,而 Pod 是组成工作负载最小的单元



工作负载按不同业务类型,在 Kubernetes 中分为 以下四类:

  • Deployment 和 ReplicaSet

  • StatefulSet

  • DaemonSet

  • Job 和 CronJob


Kubernetes 核心概念- Service

在 Kubernetes 中,Pod 副本发生迁移或者伸缩的时候会发生变化,IP 也是变化部。 Kubernetes 中的 Service 是一种抽象概念,它定义了一个 Pod 逻辑集合以及访问广们的策 略。 Service 定义了外界访问一组特定 Pod 的方式。Service 有自己的 IP 和端中 'Service 为 Pod 提供了负载均衡。



Kubernetes 核心概念- Volume

Volume 用来管理 Kubernetes 存储,是用来声明在 Pod 中的容器可以访问的文件目录,含义如下:

  • 声明在 Pod 中的容器可以访问的文件目录。

  • 可以被挂载在 Pod 中一个或多个容器的指定路径下。

  • 支持多种后端存储(本地存储、分布式存储、云存储等)



Kubernetes 管理-对象类型总览



思考题

1.(多选题)Kubernetes Master 节点包含以下哪些组件?(AB)

A. kube-scheduler

B. etcd

C. kubelet

D. kube-proxy

2.(单选题)Kubernetes 的管理对象,从小到大的管理逻辑为?(A)

A.容器<Pod<ReplicaSet<Deployment

B.容器<Pod<Deployment<ReplicaSet

C. Deployment<ReplicaSet<Pod<容器

D. ReplicaSet<容器<Pod<Deployment

总结

本文通过和大家一起了解了容器编排技术,容器编排的价值,然后大规模容器集群管理工具,从 Borg 到 Kubernetes 的演进,容器集群管理竞争史 ,以及详解 Kubernetes 架构 以及 Kubernetes 的核心概念最后完成对 Kubernetes 管理-对象类型总览 。

本文整理自华为云社区【内容共创】活动第 15 期。

https://bbs.huaweicloud.com/blogs/345822

任务 1:华为云大咖带你玩转云原生基础设施之K8s


发布于: 刚刚阅读数: 2
用户头像

坚果

关注

此间若无火炬,我便是唯一的光 2020.10.25 加入

公众号:“大前端之旅”,华为云享专家,InfoQ签约作者,51CTO博客首席体验官,专注于大前端技术的分享,包括Flutter,小程序,安卓,VUE,JavaScript。

评论

发布
暂无评论
华为云大咖带你玩转云原生基础设施之K8s_4月月更_坚果_InfoQ写作社区