当前位置: 首页 > news >正文

DockerK8s

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: 是键值对结构,键和值均由用户定义。可以被附加到各种资源,用于资源管理。

相关文章:

  • 【深度学习】与【PyTorch实战】
  • 大模型的实践应用24-LLaMA-Factory微调通义千问qwen1.5-1.8B模型的实例
  • Kubernetes常用命令
  • 【C++风云录】领略嵌入式世界:嵌入式系统与实时操作系统
  • Ai指令-公众号内训课:学会ai指令+公众号的底层逻辑(7节课)
  • Python流感常微分方程房室数学模型
  • JVM运行时内存:垃圾回收器(Serial ParNew Parallel )详解
  • React里面useMemo和useCallBack的区别
  • Hsql每日一题 | day02
  • 【simple-admin】simple-admin-core 首次服务启动 如何配置mysql数据库表 | 如何docker启动core
  • Linux安装Mysql
  • 【MySQL精通之路】InnoDB(7)-锁和事务模型
  • Docker镜像源自动测试镜像速度,并选择速度最快的镜像
  • vb.net打开CAD指指定路径文件
  • 抽象工厂模式(AbstractFactoryPattern)
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • axios 和 cookie 的那些事
  • Bootstrap JS插件Alert源码分析
  • emacs初体验
  • Fabric架构演变之路
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • JAVA之继承和多态
  • LeetCode29.两数相除 JavaScript
  • linux学习笔记
  • React as a UI Runtime(五、列表)
  • Solarized Scheme
  • 目录与文件属性:编写ls
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • elasticsearch-head插件安装
  • k8s使用glusterfs实现动态持久化存储
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​iOS安全加固方法及实现
  • # linux从入门到精通(三)
  • #Java第九次作业--输入输出流和文件操作
  • #QT(串口助手-界面)
  • #微信小程序:微信小程序常见的配置传值
  • $(function(){})与(function($){....})(jQuery)的区别
  • (3) cmake编译多个cpp文件
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)原始图像数据和PDF中的图像数据
  • (转载)从 Java 代码到 Java 堆
  • *1 计算机基础和操作系统基础及几大协议
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .gitignore
  • .NET Core 2.1路线图
  • .Net Remoting常用部署结构
  • .NET 中创建支持集合初始化器的类型
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually