• 【面试题】有了Docker为啥还需要k8s?


    个人主页金鳞踏雨

    个人简介:大家好,我是金鳞,一个初出茅庐的Java小白

    目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作

    我的博客:这里是CSDN,是我学习技术,总结知识的地方。希望和各位大佬交流,共同进步 ~

    前言

    前一段学习了 Docker,发现使用 Docker 搭建环境,部署程序真的很方便。

    像在学习过程中使用到的 RabbitMQ集群、Redis集群的搭建,都可以使用这种方式!这样子实现环境上面的隔离,有助于我们更加快速的排查问题,也可以规避一些问题。

    那么问题来了,有了Docker为什么还需要K8S?

    什么是Docker?

    Docker是一种开源的容器化平台,它允许开发人员将应用程序及其所有依赖项(如库、运行时环境等)封装到一个轻量级、独立的容器中。

    这些容器可以在任何支持Docker的环境中运行,确保应用程序在不同系统和环境中一致地运行。

    Docker利用容器技术,提供了一种更加轻量级、可移植和隔离的应用程序部署方式,有助于简化开发、测试和部署过程。

    什么是Kubernetes?

    Kubernetes是一个开源的容器编排平台,用于自动化和管理容器化应用程序的部署、扩展、更新和运维。K8s提供了一个强大的集群管理系统,可以协调大规模的Docker容器,确保它们在生产环境中高效、稳定地运行。

    Kubernetes具有自动化的负载均衡、故障恢复、伸缩和滚动更新功能,以及灵活的声明式配置方式,使开发人员和运维团队能够更轻松地管理复杂的分布式应用程序。

    为什么有了Docker还需要Kubernetes?

    1. 容器化 vs 编排

    • Docker 是一种容器化平台,它使应用程序和其依赖项可以封装在容器中,以确保在不同环境中一致地运行。它提供了轻量级、可移植和隔离的容器,可以在开发、测试和生产环境中使用。
    • Kubernetes 是一个容器编排平台,专注于在集群中管理和协调多个Docker容器的部署、扩展、更新和监视。K8s解决了容器在生产环境中的复杂性,确保高可用性、负载均衡、自动伸缩等功能。

    2. 自动化和编排

    • Docker 只关注容器的创建和运行,它不提供自动化容器部署、伸缩和故障恢复。这意味着如果你只使用 Docker,你需要手动管理多个容器的状态,这在生产环境中是不可行的!!!
    • Kubernetes提供了自动化的容器编排,可以根据应用程序的需求自动扩展容器,调度它们到可用的节点上,以及处理容器故障恢复。这极大地简化了应用程序的管理和运维。

    3. 高可用性和负载均衡

    • 在Docker中,你需要自行实现负载均衡和高可用性,这可能需要引入额外的工具和配置。
    • Kubernetes提供了内置的负载均衡和高可用性支持,可以确保应用程序在节点故障时继续运行,并通过服务抽象简化了网络访问。

    4. 多容器应用管理

    • 许多现代应用程序由多个容器组成,例如,前端、后端、数据库容器等。Docker可以管理单个容器,但不能轻松地协调这些容器之间的通信和生命周期。
    • Kubernetes可以轻松地管理多个容器的部署和通信,通过 Pods 提供了一种将相关容器组合在一起的方式,以便它们可以协作运行。

    5. 声明式配置

    • Kubernetes 使用声明式配置来定义应用程序的状态,你只需描述所需的状态,而不是编写操作步骤。K8s将负责实现所需的状态,这样可以减少人为错误
    • Docker 本身更倾向于使用命令式配置,需要更多手动干预。

    6. 生态系统和扩展性

    • Kubernetes 具有丰富的生态系统,有许多第三方工具和插件,用于监控、日志记录、安全性、CI/CD等方面的扩展。
    • Docker 虽然强大,但在处理大规模、复杂应用程序和基础设施时,通常需要更多的自定义工作。

    总结

    Docker 和 Kubernetes 各自解决了容器化和容器编排的不同层面的问题

    Docker用于创建和运行容器,而Kubernetes用于自动管理、扩展和编排这些容器,以构建高度可用、可伸缩和易于管理的应用程序。

    因此,在现代容器化应用程序的开发和运维中,通常需要同时使用Docker和Kubernetes来实现完整的解决方案。

    Docker是一个容器编排工具,可以帮助我们管理应用程序。但是,如果想要管理大量的容器,就需要更为强大的编排工具,而 Kubernetes (8s)就是这样一个工具。

    文章到这里就结束了,如果有什么疑问的地方,可以在评论区指出~

    希望能和大佬们一起努力,诸君顶峰相见

    再次感谢各位小伙伴儿们的支持!!!

  • 相关阅读:
    计算机视觉基础(8)——齐次坐标系与相机内外参
    华为认证HCIP的持证人数
    ShardingSphere生产实战
    Windows任务计划程序Task Scheduler笔记
    Python "爬虫"出发前的装备之一正则表达式
    第3关:Client连接及状态
    linux杀死进程的五种方法(kill)
    基于 HBase & Phoenix 构建实时数仓(4)—— Kafka 集群安装部署
    python的任务调度问题
    MySQL数据库的七种约束语法格式和使用详解&约束的总结
  • 原文地址:https://blog.csdn.net/weixin_43715214/article/details/133255962