Docker&K8s

Docker&K8s

1. Docker

1.1 Docker是什么

用于构建容器化平台的软件,进程管理软件,主要用于部署应用程序并守护应用进程。容器是由docker软件启动的业务集成,该进程由docker全权管理。容器是进程,由内核机制来完成容器隔离。docker软件包含客户端和服务器,本机客户端和服务器通过Unix套接字通讯。docker服务端通过接受客户端请求来管理容器进程和镜像。

1.2 Docker能做什么

容器是一种轻量级的虚拟化技术,而Docker是一个提供容器管理功能的开源平台。

应用程序打包(应用程序+环境依赖)解决环境一致性问题。进程(容器)隔离以及进程的资源限制。docker swarm 快速部署、快速伸缩;docker swarm 负载均衡与集群化部署;docker swarm 配置与密钥管理。

Docker SwarmDocker的一个原生集群和编排工具,它允许将多个Docker主机组织成一个集群,以便在集群中部署和管理容器化应用程序。Docker Swarm提供了一种简单、可扩展的方式来管理和协调Docker容器,能够轻松地实现容器的高可用性、负载均衡和故障恢复。

Docker Swarm的主要组件包括:

  1. Swarm集群:一个由多个Docker主机组成的集群,这些主机共同运行容器化应用程序。
  2. Swarm节点:集群中的每个Docker主机都是一个Swarm节点。节点可以是管理节点(负责管理集群状态和调度容器)或工作节点(负责运行容器)。
  3. Swarm服务:在Swarm集群中部署和管理的应用程序或服务。服务可以由一个或多个容器实例组成,这些实例可以在集群中的任何节点上运行。
  4. Swarm编排:Docker Swarm提供了一种声明式的方式来定义和管理服务。您可以使用Docker Compose文件来描述应用程序的服务、网络和卷,然后使用docker stack命令在Swarm集群中部署和管理这些服务。

使用Docker Swarm,可以实现以下功能:

  • 服务发现和负载均衡:Swarm集群内的服务可以自动发现其他服务,并通过内置的负载均衡器进行流量分发。
  • 弹性伸缩:根据需要动态调整服务的容器实例数量。
  • 滚动更新:无需停机即可更新服务的容器镜像。
  • 故障恢复:当容器实例失败时,Swarm会自动在其他节点上重新调度新的实例。
  • 安全性:通过Docker中的TLS相互认证和加密通信来保护集群的安全。

1.3 Docker技术边界

遵循单一原则,一个docker只运行一个应用程序的主进程。docker是进程,不能在容器中搭建带界面的开发环境。

2. k8s

2.1 K8s是什么

K8s是一个分布式容器管理(编排)与服务管理平台(软件);K8s本身不具备将应用容器化的能力,而是通过容器运行时接口与容器化平台交互,从而管理容器;K8s协调多个节点以及资源,确保应用程序的稳定运行;K8s master节点组件:调度器,控制管理器,api server,etcd。K8s worker 节点组件:kubectl K8s命令行客户端,用于和api server交互,kubelet 每个节点机器上运行的守护进程,用户获取节点信息、节点容器信息以及负责节点容器平台的交互;kube-proxy 实现网络代理和负载均衡;容器运行时与kubelet和容器平台交互;容器平台(docker)负责具体的容器操作。

2.2 K8s能做什么

快速部署分布式应用,并提供自动伸缩机制,回滚机制;提供服务发现和负载均衡;容器配额管理;故障发现和故障转移;提供pod作为容器的载体,可以方便实现sidecar模式(一个主业务容器+一个或多个辅助容器);配置和密钥管理;节点容器信息与资源信息的监控;支持多种存储类型。

2.3 K8s技术边界

K8s本身不具备将应用程序容器化的能力;不部署源码,不构建镜像;不限定应用程序类型;不支持应用程序级别的内种服务(mysql,kafka等中间件)。

2.4 专业术语

CRI: CRI(Container Runtime Interface)是容器运行时接口的缩写,它定义了Kubernetes与容器运行时之间的通信协议。CRI使得Kubernetes能够与多种容器运行时(如Docker、containerd、CRI-O等)进行集成,实现容器的管理和编排。

etcd: etcd是一个分布式键值存储系统,用于存储和管理Kubernetes集群的配置数据和状态信息。etcd是Kubernetes的核心组件之一,它提供了一种可靠、高性能的存储方式,使得Kubernetes集群能够在分布式环境中保持一致性和同步。

在Kubernetes集群中,etcd负责存储和管理以下类型的数据:

  1. 集群配置:包括集群的网络配置、访问控制策略等。
  2. 节点信息:包括集群中的节点状态、资源使用情况等。
  3. 工作负载:包括部署、服务、配置映射、密钥等。

pod : pod是K8s的最小调度单元,每个pod包含一个根容器pause容器和一个或多个业务容器。同一个pod的容器共享网络和存储。

service: 将一组运行在pod中的应用程序公开为网络服务

控制器: deployment 、DaemonSet等均为控制器资源,存在的意义在于,使集群中的一组pod的实际状态向控制器所定义的预期状态靠拢。

label: 是键值对结构,键和值均由用户定义。可以被附加到各种资源,用于资源管理。

  • 16
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker和Kubernetes(简称k8s)是两个与容器相关的开源项目,但它们在功能和应用方面有一些区别。 Docker是一种开源的应用容器引擎,它可以将应用程序及其依赖项打包成一个独立的容器,使其可以在任何环境中运行。Docker的优点包括轻量级、快速部署、可移植性和可扩展性。Docker的开源社区吸引了越来越多的IT工程师加入,并广泛应用于开发、测试和生产环境中。 Kubernetes是一种开源的容器集群管理系统,它提供了一套自动化部署、扩展和管理容器化应用程序的工具。与Docker不同,Kubernetes是在容器编排层面上进行管理,它可以管理多个Docker容器,并提供了强大的容器编排、服务发现、负载均衡和自动伸缩等功能。Kubernetes可以帮助用户更高级、更灵活地管理和调度容器。 总结来说,Docker是一种应用容器引擎,用于打包和运行应用程序,而Kubernetes是一种容器集群管理系统,用于自动化部署和管理容器化应用程序。两者在容器化技术中扮演不同的角色,但可以结合使用,以实现更高级的容器管理和调度。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [Docker和k8s的区别与介绍(*)](https://blog.csdn.net/weixin_42408447/article/details/121018462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [容器技术之Docker&K8S](https://blog.csdn.net/suncunwei201503517/article/details/125724079)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值