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

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

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

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

什么是k8s(Kubernetes)?

k8s全称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 视图

2、Kubernetes Node 内置视图

3、Kubernetes Pod 内置视图

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

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

  1. 看完此文还不懂NB-IoT,你就过来掐死我吧...【转】

    转自:https://www.cnblogs.com/pangguoming/p/9755916.html 看完此文还不懂NB-IoT,你就过来掐死我吧....... 1 1G-2G-3G-4G-5G ...

  2. 看完此文还不懂NB-IoT,你就过来掐死我吧...

    看完此文还不懂NB-IoT,你就过来掐死我吧....... 1 1G-2G-3G-4G-5G 不解释,看图,看看NB-IoT在哪里? 2 NB-IoT标准化历程 3GPP NB-IoT的标准化始于20 ...

  3. 云K8S - AWS容器库ECR(ERS)编排ECS-EKS以及阿里云编排ACS-ACK

    云K8S相关 AWS 部分-ECR(ERS) ECS EKS 20180824 Chenxin AWS的容器编排目前分为 ECS 和 EKS 两种. AWS价格说明 Fargate模式的ECS,换算成 ...

  4. K8s 一、(1、容器基本概念 2、k8s基本概念 )

    1.容器基本概念 容器其实就是一种特殊的进程,容器是一个 '单进程'模型. Namespace :隔离 Namespace 技术实际上修改了应用进程看待整个计算机"视图",即它的& ...

  5. Blazor+Dapr+K8s微服务之基于WSL安装K8s集群并部署微服务

         前面文章已经演示过,将我们的示例微服务程序DaprTest1部署到k8s上并运行.当时用的k8s是Docker for desktop 自带的k8s,只要在Docker for deskto ...

  6. K8S 使用Kubeadm搭建高可用Kubernetes(K8S)集群 - 证书有效期100年

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  7. Docker/K8s 解决容器内时区不一致方案

    转载自:https://cloud.tencent.com/developer/article/1433215 1.背景介绍 我们知道,使用 docker 容器启动服务后,如果使用默认 Centos ...

  8. k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)

    k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...

  9. 【K8S】基于单Master节点安装K8S集群

    写在前面 最近在研究K8S,今天就输出部分研究成果吧,后续也会持续更新. 集群规划 IP 主机名 节点 操作系统版本 192.168.175.101 binghe101 Master CentOS 8 ...

随机推荐

  1. 10、Java——内部类

    ​  1.类中定义类 (1)当一类中的成员,作为另外一种事物的时候,这个成员就可以定义为内部类. (2)分类:①成员内部类 ②静态内部类 ③私有内部类 ④局部内部类 ⑤匿名内部类 ⑥Lambda表达式 ...

  2. 手把手教你实现Android编译期注解

    一.编译期注解在开发中的重要性 从早期令人惊艳的ButterKnife,到后来的以ARouter为首的各种路由框架,再到现在谷歌大力推行的Jetpack组件,越来越多的第三方框架都在使用编译期注解这门 ...

  3. [考试总结]noip模拟9

    因为某些原因,咕掉了一段时间 所以现在才更新 T1 斐波那契 一看就是规律 然而我选择了暴力 其实完全可以打表去找规律. 然后就可以发现父亲的顺序也是斐波那契. 就这 #include<bits ...

  4. QT: 如何移动和缩放一个无边框窗口

    一个QT窗口如下可以做到无边框: Window { id: window //Designer 竟然不支持..., 设计模式时要注意 flags: Qt.FramelessWindowHint wid ...

  5. DC-2 靶机渗透测试

    DC-2 靶机渗透测试 冲冲冲,好好学习. 本靶机核心内容"受限shell提权",知识点在另一篇文章中总结归纳了. 攻击机:kali 靶 机:DC-2 准备:在使用前需要在操作机的 ...

  6. Centos8部署jdk、mysql8、tomcat,并部署项目到tomcat中

    目录 Linux系统的学习与使用(Centos8) Linux系统的介绍 为什么要选择Linux作为服务器运行的操作系统 目录结构 使Linux系统能够联网(登录root用户) 常用命令 cd命令(用 ...

  7. WanJetpack项目:用Jetpack实现玩Android,追求最官方的实现方式

    项目简介 玩Android demo.用Jetpack MVVM开发架构.单Activity多Fragment项目设计,项目结构清晰,代码简洁优雅,追求最官方的实现方式.用到以下知识点: LiveDa ...

  8. netty系列之:基于流的数据传输

    目录 简介 package和byte 手动组合 Byte的转换类 ReplayingDecoder 总结 简介 我们知道由两种数据的传输方式,分别是字符流和字节流,字符流的意思是传输的对象就是字符串, ...

  9. MFC发送自定义消息

    1.在窗口的头文件中声明: afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam); 2.在cpp的BEGIN_MESSAGE_MAP和EN ...

  10. MySQL 创建高性能索引

    索引是存储引擎用于快速找到记录的一种数据结构.除了加速查找,索引在其他方面也有一些有用的属性.索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较 ...