面试官:请你说说k8s 和 Docker的区别?

本文介绍了Docker作为一个轻量级应用容器引擎,以及Kubernetes作为容器集群管理系统的作用。通过对比传统虚拟化技术,阐述了Docker如何提供更高效的资源利用。Kubernetes则用于自动化部署、管理和扩展Docker容器。此外,文章还提到Kubernetes不仅支持Docker,还支持Rocket等其他容器技术。
摘要由CSDN通过智能技术生成

最近项目用到kubernetes(以下简称k8s,k和s之间有8个字母)。虽然之前也有简单使用过,但最近发现k8s概念较多,命令也有些不够用了,故想借此机会写点东西,更全面认识并使用k8s。

本篇文章目的:让你更全面了解k8s概念,以及学到在工作中常用的操作。整体更偏向于原理和应用。在正式开始k8s之前,我们先看看k8s和Docker的关系,分别从虚拟化角度、部署方式角度叙述why use容器,话不多说,开干。

目前发现并没有将kubernetes和Docker技术产生背景和需求进行比较的文章,本文从最纯正的官方定义角度出发并展开,阐述二者产生背景及与传统技术对比。

简要介绍:

官方定义1:Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。

官方定义2:k8s是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

与传统技术对比:

接下来我们看两张经典的图:

一、从虚拟化角度:

图1

上图是Docker容器(可用k8s管理的玩意儿)与传统虚拟化方式的不同之处,传统的虚拟技术,在将物理硬件虚拟成多套硬件后,需要再每套硬件上都部署一个操作系统,接着在这些操作系统上运行相应的应用程序。

而Docker容器内的应用程序进程直接运行在宿主机(真实物理机)的内核上,Docker引擎将一些各自独立的应用程序和它们各自的依赖打包,相互独立直接运行于未经虚拟化的宿主机硬件上,同时各个容器也没有自己的内核,显然比传统虚拟机更轻便。

每个集群有多个节点,每个节点可,我们的kuberbete就是管理这些应用程序所在的小运行环境(container)而生。

二、从部署角度

图2

注意,大家别把这幅图与上面Docker的那张图混淆了,图1是从虚拟化角度,说明了为应用提供必要的运行环境所需要做的虚拟化操作(即:传统:虚拟出的虚拟机装操作系统、Docker:容器引擎管理下的容器)。

而图2是在这些具体运行环境上进行真实应用部署时的情况,传统方式是将所有应用直接部署在同一个物理机器节点上,这样每个App的依赖都是完全相同的,无法做到App之间隔离,当然,为了隔离,我们也可以通过创建虚拟机的方式来将App部署到其中(就像图1上半部分那样),但这样太过繁重,故比虚拟机更轻便的Docker技术出现,现在我们通过部署Container容器的技术来部署应用,全部Container运行在容器引擎上即可。既然嫌弃虚拟机繁重,想用Docker,那好,你用吧,怎么用呢?手动一个一个创建?当然不,故kubernetes技术便出现了,以kubernetes为代表的容器集群管理系统,这时候就该上场表演了。

说白了,我们用kubernetes去管理Docker集群,即可以将Docker看成Kubernetes内部使用的低级别组件。另外,kubernetes不仅仅支持Docker,还支持Rocket,这是另一种容器技术。希望我这篇文章中简单的描述能让你对两者有所理解和认识。

往期推荐

linux下 18 个实用的终端命令行工具

如何写出难以维护的“烂代码”?

架构设计分享:项目用得到的多级缓存架构设计方案

案例分享,git项目持续集成实践

MySQL 大批量插入,如何过滤掉重复数据?

高并发场景下基于 Spring Boot 框架来实现 MySQL 读写分离(附源码)

java开源项目-六个经典的 SpringBoot 练手项目

开源项目-轻量级Java权限认证框架!

嚣张:分库分表就能无限扩容吗?

Netty 实现百万连接的难点和优化点

实施工程师面试中,关于DockerKubernetes (K8s)、Redis和Nginx这四个技术的问题可能会涉及以下几个方面: 1. Docker的理解:面试官可能会询问应聘者对Docker的基本概念(如轻量级容器化、镜像制作与部署)、用途(例如隔离应用环境)以及如何使用Dockerfile或docker-compose文件配置服务。 2. Kubernetes(K8s)知识:会问到Kubernetes的核心概念(如Pod、Service、Deployment、ConfigMap等),集群管理,滚动更新、横向扩展等最佳实践。面试官还可能考察应聘者是否熟悉基本的Kubectl命令以及K8s在微服务架构中的作用。 3. Redis的应用场景和优势:应聘者会被问及Redis作为内存数据库的特点(高并发、低延迟)、通常用于哪些场景(如缓存、消息队列等),以及如何管理和优化Redis实例。 4. Nginx的功能与使用:面试官会关注Nginx的角色(如反向代理、负载均衡、静态文件服务器),其配置原理,以及在分布式系统中的部署策略。可能会问到Nginx Plus或Nginx Ingress Controller的区别。 相关问题-- 1. Docker的优势是什么?在实际项目中如何使用Docker提高部署效率? 2. 如何在Kubernetes中实现服务的高可用性和自动扩展? 3. Redis和Memcached相比,有哪些主要区别?在大规模高并发环境中如何处理数据持久化? 4. Nginx是如何工作的?在处理大量求时,如何优化Nginx的性能?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值