煮饺子论云原生docker与kubernetes之间的关系

目录
  • 前言
  • 一、周末煮饺子聊到容器问题
  • 二、说说docker与煮饺子的容器
  • 三、聊聊集群煮饺子(k8s)

前言

云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈。看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡。 所以笔者就有了写《大话云原生》系列文章的想法,期望用最通俗、简单的语言说明白云原生生态系统内的组成及应用关系。那么,开始吧,这是第一篇!

这真的是一篇讲架构技术的文章,不是小说!建议您看下去!

一、周末煮饺子聊到容器问题

周末和老婆一起包了顿饺子,“老公,我去买瓶醋,你把饺子先煮一下吧”。我笨手笨脚准备半天,还没煮完,老婆就回来了。我看着这一锅饺子问道:“老婆,你说这 饭店是怎么煮饺子的啊? 每个人口味不一样,饭量也都不一样啊,想想都头疼!”

小娜同学一边用手比划一边说:“饭店当然不能像家里这么煮饺子啊,他们有一种特制的锅,就是那个、那个样子的”。

我感觉自己娶了一个傻女人,“到底是哪个样子的?用手能比划出来啊?你是不是爱情公寓看多了?”。老婆听到我的抱怨,拿起手机搜索了一下:“诺,就是这个样子的,你个白痴!”

“饭店就是用这种锅煮饺子的,水是一锅水,炉是一个炉,分成多个容器,每个容器里面放入一个客人点的饺子就可以啦。”作为生活小能手的小娜同学知道的可真多。

“哎我去,这不就是一个服务器启动了多个docker容器么?”同样作为程序员的小娜赞到:“老公,你说的还真对哈,我最近可是刚看了docker呢,但我还不太会用!”。

二、说说docker与煮饺子的容器

“你一个前端学什么docker”。小娜不服气了,“哎,你别瞧不起人,我还知道k8s呢”。这可让我有点意外,正当我意外之时,老婆一句话差点让我喷出来:“那k8s到底是个什么东西啊?”,我们商量好饭后她刷碗,我给她说说docker与k8。

不一会就开始了饭后辅导: 饭店煮饺子本身就是一种服务(应用服务),煮饺子的锅就像一个服务器,锅里的每一个网状笼就像一个docker容器,通常情况下一个网状笼只煮一种饺子,就像一个docker容器通常只提供一个服务(微服务)。同一个服务器上的docker容器之间能够进行必要的隔离,避免资源冲突(不同馅的饺子煮混)。又能充分的共享服务器资源(那一锅水和供电),达到资源的合理利用,避免浪费。

小娜微笑点点头表示明白了,”那饭店规模变大,客人越来越多,就得买更多的大锅(服务器)啊?"

那是当然喽,你看哈,当服务器越来越多的时候就组成了集群。docker容器还有一个好处就是它的标准化,标准化在这里就代表了部署灵活性。假如一号锅突然断电了,煮饺子的师傅就可以把煮饺子的容器拔出来插入二号锅,因为容器的标准是一样的。就像docker容器可以灵活快速的启动,在不同的服务器上启动提供服务。

小娜同学再次的点了点头,向我投来仰慕的眼光。趁热打铁,我总结道:”docker容器有效的实现了服务的环境封装的标准化,以及同服务器容器之间的环境隔离,资源共享“。

三、聊聊集群煮饺子(k8s)

小娜同学对于接下来的内容已经迫不及待了,“docker我懂了,快说说k8s”。我故弄玄虚的说到,你看哈,现在这个饭店的集群容器煮饺子的模式还需要解决哪些问题?我们俩讨论了一下,总结了下面这几条:

  • 饭店的客流量不总是满的,大锅的个数肯定是按照最大需求买的,但是肯定有部分的时间大锅是闲置的。
  • 客流量肯定是有一定的规律的吧?比如周末比工作日客流量大,下班后比上班时间客流量大。
  • 假如突然来了一个旅游团进来用餐,谁来做应急管理?快速的给大锅插电?烧水?满足用餐需求?
  • 如果为了避免煮出来的饺子味道混淆,是不是素馅类不同容器的放到一个大锅里面煮?肉馅的放在一起煮、海鲜馅的放在一起煮会好一些?
  • 是不是得有人定期的对“大锅”和大锅里面的容器进行卫生检查、运行状态(健康检查)?
  • 是不是得有一个人清楚的知道,素馅的一两饺子是唐僧的,肉馅的四两饺子是猪八戒的?

其实还有很多需要注意的问题,所有的这些都可以归纳为:任务分配或者是服务编排,或者是容器的编排问题。k8s的主要作用就是用来解决类似这样的一些问题:

  • 根据访问量大小快速的对容器数量进行扩容、缩容。
  • 遵循一定的预定计划来执行容器编排工作、应急管理工作、健康检查工作
  • 合理的编排容器,有些容器放在CPU密集型的服务器上,有些容器放在内存密集型容器上。毕竟有的容器运行的是计算型微服务,有的容器运行的是耗内存的微服务。合理的编排能够达到资源的最大利用率。

以上等等这些进行容器管理、编排的问题,都需要k8s来管理支撑,而且是自动化支撑。 说到这里,小娜同学若有所思,“我听是听明白了,但是感觉这东西好庞大、好复杂啊。开发一个应用放在一起部署不好么?为什么搞这么复杂?”

还别说,小娜同学还真问道点子上了。但这也不能一次全都讲完啊,否则明天的碗谁来刷?

以上就是煮饺子论云原生docker与kubernetes之间的关系的详细内容,更多关于云原生docker与kubernetes的资料请关注我们其它相关文章!

(0)

相关推荐

  • 聊聊kubernetes1.20用containerd替换docker(shim)的问题

    目录 A.在work节点上替换 B.在master节点上替换 kubernetes 1.20 要去掉对 Docker的支持,具体看这里,本篇文章介绍用 containerd 替换 docker,从work节点开始,然后才到master节点. 首先查看集群 [root@node1 ~]# kubectl get node NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 101d v1.20.1 k8s-work

  • 云原生技术kubernetes调度单位pod的使用详解

    k8s中的最小调度单位---pod 之前的文章中,我们对k8s能够解决的问题做了简单介绍,简单来说,它解决的问题是容器的编排与调度,它的核心价值在于:运行在大规模集群的任务之间,实际上存在着各种各样的关系,这些关系的处理,才是任务编排和系统管理最困难的地方,k8s就是为了这个问题而生的. 这句话比较难理解,我们从已有的知识入手,抽丝剥茧,慢慢理解它.我们已经知道,容器的本质是一个进程,它包含三个部分: 如果说容器是云环境的一个进程,那么你可以将k8s理解成云环境中的一个操作系统. 在一个操作系统

  • Docker实践—CentOS7上部署Kubernetes详解

    Kubernetes架构 Kubernetes的整体架构如下: Master为主控节点,上面运行apiserver,scheduler,controller-manager等组件.Minion相当于工作节点,上面运行kubelet,proxy,cAdvisor以及最重要的docker等组件.下面来实际部署一下这套集群管理工具. 环境 yy1  10.193.6.35 yy2  10.193.6.36 yy1作为master,yy2作为minion. # cat /etc/centos-relea

  • docker kubernetes dashboard安装部署详细介绍

    docker之kubernetes dashboard部署 1. 环境说明: 1). 架构: 注: 本次实验服务器环境均采用centos 7. 服务安装均采用yum install. 192.168.3.7 master 192.168.3.16 node 2).使用的软件包: master: docker kubernetes-master etcd flannel nodes: docker kubernetes-node flannel 3). 软件版本: docker: 1.10.3 k

  • centos7搭建docker私人仓库的方法(kubernetes)

    我们平时镜像都是习惯于放在公共仓库的,比如Dockerhub, Daocloud.但在企业里,我们经常会需要搭建公司自己的镜像仓库. 这篇文章讲解如何用docker提供的registry镜像来搭建自己的镜像仓库. 不添加ssl认证的仓库 下面用registry:2.6.2镜像创建docker仓库. 将宿主机的5000端口映射到容器的5000端口. 将宿主机/mnt/registry挂在到容器的/var/lib/registry目录,容器里的这个目录就是存放镜像的地方.这样可以将数据持久化,当容器

  • 使用 kind 和 Docker 启动本地的 Kubernetes环境

    介绍 你曾经花过一整天时间尝试入门Kubernetes吗?多亏最近新出现的一些工具,你可以不用再为此大费周章了. 这篇文章中,我将向你展示使用 kind 在单个 Docker 容器中启动一个集群的步骤. 什么是 kind 因为 kind 是 go 语言实现的,请确保安装了最新版本的 golang.根据开发者文档,推荐使用 go1.11.5 及以上版本.为了安装 kind,请运行这些命令(可能需要运行一段时间) kind(Kubernetes IN Docker) 是一个基于 docker 构建

  • 云原生技术kubernetes(K8S)简介

    目录 01 kubernetes是什么? 02 kubernetes和Compost+Swarm之间的区别 03 一点总结 今天我们看看kubernetes技术的介绍,最近在极客时间上看张磊老师的深入kubernetes技术,讲的非常好,有兴趣的同学可以去收听一下,对于理解kubernetes技术非常有帮助,这里我会按照自己的进度,分享一下学习的笔记. 今天站的角度比较高,概念性质的东西会多一点. 01 kubernetes是什么? 曾经我认为这个问题很好回答,直到不断的去理解kubernete

  • 煮饺子论云原生docker与kubernetes之间的关系

    目录 前言 一.周末煮饺子聊到容器问题 二.说说docker与煮饺子的容器 三.聊聊集群煮饺子(k8s) 前言 云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单的语言说明白云原生生态系统内的组成及应用关系.那么,开始吧,这是第一篇! 这真的是一篇讲架构技术的文章,不是小说!建议您看下去! 一.周末煮饺子聊到容器问题 周末和老婆一起包了顿饺子,“老公,我去买瓶醋,你把

  • 从小饭馆客流量变大论云原生负载均衡

    目录 一.前言 二.从路边摊说起 三.开饭馆与负载均衡 说说客户端负载均衡与服务端负载均衡 利与弊: 四.饭后沟通 一.前言 这是<大话云原生>系列的第二篇,第一篇<煮饺子与docker.kubernetes之间的关系>推出之后受到大家的欢迎,很多朋友联系到我给我加油打气,还得到了CSDN头部博主哪吒大佬的支持,感谢!我会继续写下去! 书接上回介绍了<煮饺子与docker.kubernetes之间的关系>之后,小娜同学(我老婆)问:为什么不把服务统一开发成一个应用?搞什

  • 云原生自动化应用于docker仓库私有凭据secret创建

    目录 Secret Secret的创建 应用于docker私有仓库的secret 其他 Secret Secret 是一种包含少量敏感信息例如密码.令牌或密钥的对象. 这样的信息可能会被放在 Pod 规约中或者镜像中. 使用 Secret 意味着你不需要在应用程序代码中包含机密数据.(这段话来自官网) 使用过程与ConfigMap类似 与ConfigMap不同的是: ConfigMap用于明文,Secret用于加密文件,如:密码 ConfigMap是没有类型的,但是Secret有类型(type)

  • k8s service使用详解(云原生kubernetes)

    目录 一.什么是服务service? 二.service分类 2.1 ClusterIP 2.2 NodePort 2.3 LoadBalancer(付费方案) 2.4 ExternalName (使用较少) 三.service和pod的关系 四.Service 之 ClusterIP 使用 4.1 在当前目录下,创建一个deploy-nginx-pod.yaml,配置如下 4.2 暴露服务为 clusterIP 类型 4.3 查看服务 五.Service 之 NodePort 使用 5.1 关

  • 云原生技术kubernetes之volumes容器的使用

    目录 卷(volumes): 1.emptyDir 1.1.emptyDir卷特性: 1.2.官方示例: 1.3.我们做一个实例: 2.HostPath 2.1.HostPath卷特性: 2.2.官方示例: 2.3.我们做一个实例: 3.nfs 卷(volumes): 容器中的文件存在时间是短暂的,当一个容器发生崩溃时,文件会丢失,而容器重新启动后状态却是干净的:而第二个问题时解决了一个Pod中不同容器间共享文件. 卷的类型有很多,详细请查看官方文档:卷 1.emptyDir 1.1.empty

  • 云原生Kubernetes初始化容器Init使用介绍

    目录 一.基本介绍 使用 Init 容器的作用: 一.基本介绍 Kubernetes 中 Init 容器,也叫做初始化容器,是 K8s 官方为我们提供的一个 可以用来判断我们的环境是否已经满足运行 Pod 应用前所需要的条件. 比如,我们有一个应用是 Tomcat,但是需要向 ZooKeeper 中进行注册. 而恰好我们在运行 Tomcat 时,ZooKeeper 出现了故障,从而导致我们的 Tomcat 因为注册不上数据而导致系统报错. 但是当我们给 Tomcat 配置上 Init 容器后,效

  • 云原生Kubernetes初始化容器Init使用教程

    目录 一.基本介绍 使用 Init 容器的作用: 二.Init 容器使用介绍 一.基本介绍 Kubernetes 中 Init 容器,也叫做初始化容器,是 K8s 官方为我们提供的一个 可以用来判断我们的环境是否已经满足运行 Pod 应用前所需要的条件. 比如,我们有一个应用是 Tomcat,但是需要向 ZooKeeper 中进行注册. 而恰好我们在运行 Tomcat 时,ZooKeeper 出现了故障,从而导致我们的 Tomcat 因为注册不上数据而导致系统报错. 但是当我们给 Tomcat

  • 云原生系列Kubernetes深度解析YAML文件使用

    目录 写在前面 YAML基础 Maps Lists 使⽤ YAML 创建 Pod 创建 Pod 创建 Deployment 写在前面 在前⾯的课程中,我们在安装 kubernetes 集群的时候使⽤了⼀些 YAML ⽂件来创建相关的资源,但大家对 YAML ⽂件还是⾮常陌⽣.所以我们先来简单看⼀看 YAML ⽂件是如何⼯作的,并使⽤ YAML ⽂件来定义⼀个 k8s pod,然后再定义⼀个 k8s deployment吧. YAML基础 它的基本语法规则如下: ⼤⼩写敏感 使⽤缩进表示层级关系

随机推荐