写点什么

什么?都 1202 年了还不懂 k8s 和容器的关系?!这份 k8s 指南快拿走不谢!

发布于: 2021 年 03 月 26 日
什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!

都 1202 年了,还是有许多人搞不清容器与 k8s 之间的关系。在开始本篇正文之前,我们先来捋一捋这对“CP”的关系。


你可能已经很熟悉虚拟机了,最常见的莫过于我们拿到 macOS 却需要用 Windows 软件,游戏用户就更别说,很多游戏仅有 Windows 版本。我们怎么解决的?下载并安装虚拟机软件,在虚拟机中实现双系统的运行就可以了。容器与虚拟机类似,也是可以将应用与库和其他依赖项打包,提供独立环境来运行软件服务。


如上图虚拟化部署时代、容器部署时代的架构对比,不难发现,容器对比虚拟机时期少了大块头的操作系统,这使得原本又高又笨重的架构瞬间灵动轻巧,IT 使用和运行效率大幅度飙升。


而容器的 CP——k8s,能够进行应用的自动化部署和扩缩容,是让容器们发光发热的编排容器工具。

什么是 k8s(Kubernetes)?


全称 Kubernetes,源于希腊语“κυβερνήτης”,意为“舵手”或“飞行员”。借助容器 container 的另一英文释义“集装箱”,k8s 可想象为一艘航行在海面上的轮船,把装载的大量集装箱(容器)送到该去的地方,管理并发挥它们的最大效力。


k8s 是比容器更上一层的架构,作为一个编排和管理容器的工具,它主要具备以下三大核心能力:自动调度、自动修复、水平自动伸缩。


1、自动调度

k8s 可以把用户提交的容器放到 k8s 集群的任意一个节点,但运行过程中 k8s 会根据容器大小、规格,各节点的负载程度等实际情况来决定容器应该放到哪一个节点上。

2、自动修复

k8s 有一个健康检查机制,会监测集群中所有的宿主机,当它发现其中有问题,比如某一个服务器挂了,它可以自动将这个服务器上的服务调度到另外一台主机上进行运行,无需人工干涉。

3、水平自动伸缩

k8s 还具备业务负载检查的能力,会监测业务上所承担的负载,当达到预期设定的负载指标后,就会根据指标自动触发动态扩容或缩容行为。

k8s 几个核心概念

Master

集群是一组节点,这些节点可以是物理服务器或者虚拟机,在此之上安装了 Kubernetes 平台。下图一个典型的 Kubernetes 架构图,其中有一个提供集群独特视角的 Kubernetes Master,和一系列可以提供和集群交互的 REST 端点的组件,比如 Kubernetes API Server,此外 Master 节点还包括用来创建和复制 Pod 的 Replication Controller。

Pods

在 k8s 里面,集群调度的最小单元就是 pod,一个 pod 可以是一个容器,也可以是多个容器。例如你运行一个程序,其中使用了 nginx、mysql、jetty,可以将这三个使用在同一个 pod 中,对他们提供统一的调配能力。一个 pod 只能运行在一个主机上,而一个主机上可以有多个 pod。


Labels

Labels(标签用于区分对象),每个对象可以有多个标签,通过标签关联对象。它是一个 key=value 的键值对,其中 key 与 value 由用户自己指定。可以附加到各种资源对象上,一个资源对象可以定义任意数量的 Label。可以通过 LabelSelector(标签选择器)查询和筛选资源对象。


Services

Service 定义了 Pod 的逻辑集合和访问该集合的策略,是真实服务的抽象。Service 提供了一个统一的服务访问入口以及服务代理和发现机制,关联多个相同 Label 的 Pod,用户不需要了解后台 Pod 是如何运行。


Container

包含在 Pod 下,可以理解为容器,比如 docker 镜像。


Node

Node 是 Pod 真正运行的主机,可以物理机,也可以是虚拟机。为了管理 Pod,每个 Node 节点上至少要运行 container runtime(比如 docker 或者 rkt)、Kubelet 和 Kube-proxy 服务。


这里我们举个现实生活中的例子,加深一下对 k8s 的理解。


在早以前,我们去到某商店买东西时,遇到缺货、断货的情况,只能下次转到别的店再找找,而现在,我们可以让连锁店家查看库存,直接从其他店铺调货。如此一来,其他店铺的商品不会堆积,该店铺的服务也有效果,而作为顾客的我们更是成功买到了想要的东西。


在这个应用场景中,当前城市可以理解为 pod,店铺是 container,label 代表你想找的那款产品,城市(pod)之上是省(node),service 就是能够在不同省份不同城市不同店铺之间调动商品库存的人。而 kubernetes 的强大之处还在于,可以无限复制店铺(包括商品),对于我们也就是有购买需求的用户来说,就得到了永远有货的保障。


你可能要说了,既然 k8s 这么好用,又是开源软件,我们直接拿来用不就好了嘛?理是这么个理,但实际搭建生产环境的时候,跨多可用区部署 k8s 集群的过程复杂不说,随着应用和业务不断扩大,对系统的监测与维护难度是按指数增长的。


基于以上种种考虑,对许多企业或数据达到一定体量的独立开发者来说,明显更青睐覆盖数据从采集、存储、分析到展示的全流程、全自动的一站式解决方案。现在市场上相关方案不少,但大多是某一个功能非常突出,企业往往需要购买和使用多款软件,给运营成本和系统升级都造成极大的负担。

DataFlux 一站式监测云平台


这里重点介绍一款集多功能于一体的一站式监测云平台 DataFlux。


DataFlux 提供面向云、应用和业务的统一数据监控能力,全云平台、200+技术栈支持且可按量付费,使用简单,功能强大,性价比高。

DataFlux 支持采集 Kubernetes 集群指标并上报。对 Kubernetes 集群指标的采集,主要通过两个 input 插件完成:


  • kubernetes: 主要针对集群中 Kubelet 的数据采集,即 node 节点相关性能

  • Kube_inventory: 主要针对集群中 api-server 的数据采集,即集群、pod 相关性能


我们来看几张效果图。

1、Kubernetes Overview 视图

Kubernetes_overview01


Kubernetes_overview02

2、Kubernetes Node 内置视图

Kubernetes_node01


Kubernetes_node02

3、Kubernetes Pod 内置视图

Kubernetes_Pod

DataFlux 的部署只需要几分钟就能搞定,我们可以按照教程安装 DataFlux 采集器 DataKit,开启对 Kubernetes 集群指标的采集。更多 DataFlux 的功能和使用介绍,敬请期待后续文章~


用户头像

守护每一个系统,成就每一个客户 2021.02.08 加入

一站式数据监测云平台

评论

发布
暂无评论
什么?都1202年了还不懂k8s和容器的关系?!这份k8s指南快拿走不谢!