• docker和k8s之间的关系


    一句话总结:Docker只是容器的一种,它面向的是单体,K8S可以管理多种容器,它面向的是集群,Docker可以作为一种容器方案被K8S管理。

    https://baijiahao.baidu.com/s?id=1763716289717819767&wfr=spider&for=pc

    背景

    随着云原生和微服务架构的快速发展,Kubernetes和Docker已经成为了两个重要的技术。

    学习一门技术我们要学会类比,这里我给你们打个比方:

    将Kubernetes与Docker的关系类比为Spring MVC与Servlet或MyBatis与JDBC的关系。Docker像是Servlet或JDBC,提供了基础的容器化技术。而Kubernetes类似于Spring MVC或MyBatis,相当于框架,它在基础技术之上提供了更丰富的功能,如自动化部署、扩缩容、服务发现与负载均衡等,使得开发者能够更便捷地构建和管理微服务应用。

    先有了docker,后出现了K8s。

    Docker

    首先诞生于2013年,它引入了现代容器化技术的概念,使得开发者能够将应用程序及其依赖项一起打包,以便在不同环境中实现一致性和可移植性。Docker的出现极大地简化了应用程序的部署和管理过程。
    在这里插入图片描述

    k8s

    随着Docker的普及,容器化应用程序的数量不断增加,人们开始需要一个有效的方法来管理这些容器。于是,在2014年,Google推出了Kubernetes(简称k8s)项目。Kubernetes是一个开源的容器编排平台,用于自动化容器化应用程序的部署、扩展和管理。借助Kubernetes,开发者可以实现容器的分布式管理,以及高可用性、负载均衡和故障恢复等功能。
    在这里插入图片描述

    因此,可以说Docker为Kubernetes提供了基础技术,而Kubernetes则在此基础上发展为一个功能强大的容器管理和编排平台。

    Kubernetes与Docker的关系

    容器化技术的集大成者
    Kubernetes与Docker之间的关系可以说是相辅相成的。Docker为Kubernetes提供了强大的容器运行时环境,而Kubernetes则为Docker容器提供了自动化管理和编排的能力。简而言之,Docker解决了应用程序的打包和运行问题,而Kubernetes解决了应用程序的分布式管理和扩展问题。

    互补特性
    Docker是Kubernetes中默认的容器运行时技术,但Kubernetes同时支持其他容器运行时,如containerd和CRI-O。这种灵活性使得Kubernetes能够满足不同用户的需求。相辅相成的关系使得Kubernetes和Docker在构建现代微服务架构方面具有优势。

    Kubernetes与Docker在微服务架构中的应用

    应用部署
    通过Docker容器化技术,我们可以将应用程序及其依赖项打包到一个容器中,保证应用程序在不同环境中的一致性。Kubernetes作为编排平台,可以自动化地部署、管理和扩展这些容器,满足应用程序在不同场景下的需求。

    服务发现与负载均衡
    Kubernetes提供了服务发现和负载均衡功能,可以自动地将请求分发到不同的容器实例,从而实现高可用性和高性能。此外,Kubernetes还支持基于应用程序性能和资源需求的自动扩缩容,进一步优化了系统的响应能力。

    容错与故障恢复
    Kubernetes具有自我修复能力,当某个容器实例出现故障时,Kubernetes会自动重新调度并启动一个新的实例来替换故障实例。这样的设计可以保证微服务应用的高可用性和故障容忍能力。

    系统监控与日志管理
    Kubernetes集成了一系列系统监控和日志管理工具,如Prometheus和ELK Stack,可以帮助开发者和运维人员实时监控容器和应用程序的性能、资源消耗和日志,从而快速定位和解决问题。

    K8s 架构和组件

    k8s 由众多组件组成,组件间通过 API 互相通信,归纳起来主要分为三个部分:

    controller manager

    nodes

    pods
    在这里插入图片描述
    5分钟带你快速了解Docker和k8s:
    https://blog.csdn.net/m0_50180963/article/details/112251037

    总结

    Kubernetes和Docker共同构成了现代微服务架构的基石。Docker解决了应用程序的容器化问题,而Kubernetes则负责容器的自动化管理和编排。这两者相辅相成,使得开发者可以更加轻松地构建、部署和管理云原生应用程序。对于希望在云计算领域取得成功的企业和开发者来说,掌握Kubernetes和Docker技术至关重要。

  • 相关阅读:
    关于正在开发中的DjangoStarter v3版本
    北理工团队在不同注意力状态下肢体运动意图的鲁棒神经解码方面取得重要研究进展...
    springboot毕设项目宠物领养平台f2308(java+VUE+Mybatis+Maven+Mysql)
    【蓝桥杯选拔赛真题29】python堆砖块 青少年组蓝桥杯python 选拔赛STEMA比赛真题解析
    PyTorch搭建CNN实现视频动作分类任务
    如何将Docker镜像源更改为阿里云的镜像加速地址
    Riccati 方程求解
    nginx限流 漏桶与令牌桶
    通过位运算进行两个变量值的交换功能
    MySql进阶 锁 优化 | DAY 15
  • 原文地址:https://blog.csdn.net/weixin_45068892/article/details/134001522