想用K8s,还得先会Docker吗?其实完全没必要

K8S学习之前站一:docker学习 selinux时Linux系统的一种安全机制,可以限制系统资源(如文件、网络等)的访问,提高系统的安全性。docker就不一样了,可以把代码和用到的所有依赖,包括jdk、tomcat、war文件、jar文件等,甚至是linux文件,都打包到一起,放到镜像里,保持环境的一致性。docker几乎支持所有的平台,windows、linux、mac等,现以Centos7.9为例(centos停更了,不会继续打补丁了,学习可以用,生产就不建议用了,可以用centos平替的操作系统rockyLinux) 阅读详情

想学K8s,必须得先学会 Docker 吗?这是很多网友在开始有想法想要学 K8s 的时候都会冒出来的想法?那么今天我们就跟大家说说这个话题,要回答这个问题,我们需要先搞清楚 Docker 和 K8s 他们的角色是什么,相互之间是什么关系。

K8s 和 Docker 的关系

Docker 和 K8s 这两个经常一起出现,两者的Logo 看着也有一定联系一个是背上驮着集装箱的鲸鱼一个是船的舵轮。

不过两者不能放在一个维度上讨论,Docker 是当前流行的 Linux 容器解决方案,利用 Namespaces 、Cgroups 以及联合文件系统UnionFS 实现了同一主机上容器进程间的相互隔离。

  • NameSpaces:隔离进程,让进程只能访问到本命名空间里的挂载目录、PID、NetWork 等资源
  • Cgroups: 限制进程能使用的计算机系统各项资源的上限,包括 CPU、内存、磁盘、网络带宽等等
  • 联合文件系统UnionFS : 保存一个操作系统的所有文件和目录,在它基础之上添加应用运行依赖的文件。创建容器进程的时候给进程指定Mount Namespace 把镜像文件挂载到容器里,用 chroot 把进程的 Root目录切换到挂载的目录里,从而让容器进程各自拥有独立的操作系统目录。

而 K8s 是拥有容器编排能力的集群管理解决方案,可以按照应用的定义调度各个运行着应用组件 Docker 容器,但是 Docker 并不是 K8s 对容器的唯一选择,K8s 的 容器运行时支持对接多种容器 ,比如CoreOS公司的Rkt容器(之前称为Rocket,现更名为Rkt),Apache 开源的 Mesos 容器等。只要容器实现了 K8s 容器运行时的接口约定,都能让 K8s 进行调度。

Docker 公司也推出过自己的容器集群管理方案 Docker Swarm ,跟 K8s 算是竞品,但是在生产上几乎没人使用。

Docker Swarm 没有流行起来的深层次的原因就不深究了,从一些IT媒体的报道看,可能的原因是

  • 跟 Docker 深度绑定,人天生对集权主义非常反感。

  • Docker 公司在大规模集群管理上的经验不足,不像谷歌那样能高屋建瓴地给出好的解决方法。

容器用 Docker,需要学到什么程度

看完 K8s 和 Docker 的关系后,我们已经有答案了,想学 K8s 不一定非得会 Docker。但是毕竟 Docker 还是目前最流行的 Linux 容器方案,绝大部分情况下我们还是会选择使用 Docker,那么我们 Docker 掌握到什么程度更易于我们学习 K8s 呢?

这个主要看我们想学会 K8s 干什么,即使运行在 K8s 之上的容器选择 Docker,如果我们是搭建一些基建类的软件,比如 MySQL、Redis之类的,因为这些组织已经提供了软件容器的镜像,我的使用体验是,完全用不到那些 Docker 的各种命令。

比如要在 K8s 集群上运行一个 MySQL 应用,写好应用的清单文件(就是各种配置和期望的状态),然后直接运行

kubectl apply -f mysql.yaml 就好,K8s 的容器运行时会根据清单文件里的镜像名,帮我们调 Docker 的接口去下载镜像、运行容器。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:5.7
          name: mysql
          env:
            - name: MYSQL_ROOT_PASSWORD
              value: superpass
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
            - name: mysql-config
              mountPath: /etc/mysql/conf.d/my.cnf
              subPath: my.cnf
复制代码

上面配置文件,有删减。

不过,我们使用 K8s 除了搭建这种基础软件外,学 K8s 更多是让自己开发的服务能依托 K8s 集群管理、调度的能力变的更具鲁棒性、更portable。这个时候 Docker 方面的技能掌握基本的 Dockerfile 编写、打包上传镜像的命令。这部分的几个简单的知识,感觉花个两小时就能掌握
学会这几个简单的 Docker 知识就完全够用,能支撑我们开始 K8s 的学习和练习啦,其他 Docker 相关的知识完全可以在做 K8s 练习时遇到问题、解决问题的过程中再学。

总结

这篇文章把 Docker 和 K8s 的关系给大家做了一个解答,希望还在迟疑自己现有的知识储备能不能直接学 K8s 的,赶紧行动起来,K8s 是典型的入门有点难,后面越用越香。

学习k8s必须学习docker容器网络 docker容器网络详解 一、四种网络模式 二、docker网络模型 三、容器网络访问原理 四、容器网络实现的核心技术:iptables 五、跨主机网络:实现docker 主机容器通信 一、四种网络模式bridge:当我们创建一个容器时,默认会创建一个桥接网络。启动docker之后会有一个docker0网桥。会将docker内的所有网络桥接到docker0上,走docker到宿主机上将数据包给转发出去。(网桥就相当于一个二层交换机,把容器加入进来,想当于在交换机上查了一根网线) * docker run - 阅读详情

相关推荐

docker,k8s,docker compose三者的关系

Docker: 用于构建和运行容器。Kubernetes: 用于管理大规模容器集群。两者通常结合使用,Docker 负责容器化,Kubernetes 负责容器编排。Kubernetes(K8s)和 Docker Compose 都是用于管理容器的工具,但它们的定位、功能和适用场景有显著区别。Docker:用于将应用打包成容器镜像。Kubernetes:用于在生产环境中部署、管理和扩展容器化应用。

唯有代码让我痴狂 1946

Kubernetes(K8S)入门到运维 ( 一 ) > 什么是Kubernetes (K8S)?

前言 是想要去学习这个技术的,就不要只看文章,不动手去实践。 只是想做了解的,那么则要重点结合图一起看故事。 在进行Kubernetes(K8S)实验时,Pod等没有运行起来,那么则使用kubectl describe pod pod名查看是否是镜像下载的问题,如果是镜像下载的问题,具体参考《Kubernetes(K8S)入门到运维( 二 ) > 部署及Doc...

Su_Levi_Wei的博客 5317

离线安装4:kubernetes(k8s)离线安装_kubernetes 离线安装

firewall-cmd --zone=public --add-port=10257/tcp --permanent # kube-controller-manager 自身。firewall-cmd --zone=trusted --add-source=192.168.80.60 --permanent # 信任集群中各个节点的IP。firewall-cmd --zone=public --add-port=10259/tcp --permanent # kube-scheduler 自身。

2401_87034001的博客 2759

简单聊聊k8s,和docker之间的关系

随着云原生和微服务架构的快速发展,Kubernetes和Docker已经成为了两个重要的技术。但是有小伙伴通常对这两个技术的关系产生疑惑:既然有了docker,为什么又出来一个k8s?它俩之间是竞品的关系吗?傻傻分不清。学习一门技术我们要学会类比,这里我给你们打个比方:将Kubernetes与Docker的关系类比为Spring MVC与Servlet或MyBatis与JDBC的关系。Docker像是Servlet或JDBC,提供了基础的容器化技术。

G探险者的博客 2163

从Linux到K8s:Docker容器化与Kubernetes集群实战指南

容器化技术通过操作系统级虚拟化实现应用与运行环境的隔离,其核心原理是基于Linux内核的命名空间和控制组机制。这种技术为现代软件部署带来了革命性价值,显著提升了资源利用率、部署效率和跨环境一致性。在微服务架构、持续集成和云原生应用等场景中,容器化已成为基础支撑技术。Docker作为最流行的容器运行时,简化了镜像构建和容器管理流程;而Kubernetes则进一步解决了容器编排、服务发现和自动扩缩容等分布式系统难题。本文聚焦Docker镜像管理和Kubernetes集群搭建等热词内容,通过完整实战演示帮助读者掌

weixin_33691700的博客 534

使用Kubernetes之前是否需要掌握Docker?其实并不必要

通过上述示例,我们可以看到在使用Kubernetes之前,了解Docker的基本概念和操作是有帮助的。而Docker是一种流行的容器化平台,它可以将应用程序及其依赖打包成一个独立的容器,以便在不同的环境中运行。因此,虽然不必要要求您在开始学习和使用Kubernetes之前掌握Docker,但对Docker有一定的了解将有助于您更好地理解和运用Kubernetes。上述Dockerfile定义了一个基于Node.js 14的镜像,将应用程序文件复制到容器中,安装依赖,并设置应用程序的启动命令。

HackCyberX的博客 364

Kubernetes K8S 基于 Docker 安装部署

在 Docker 容器技术被炒得热火朝天之时,大家发现,如果想要将 Docker 应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对 Docker 及容器进行更高级更灵活的管理。就在这个时候,K8S 出现了。K8S,就是基于容器的集群管理平台,它的全称,是 Kubernetes。 本次主题将会为你分享: K8S 起源 K8S 集群 为什...

GitChat 1万+

STM32 使用IO口模拟I2C时序

上一篇《I2C协议详解》 我们了解了I2C的操作流程,这一篇,我们就使用I2C,来对EEPROM进行操作吧。 我们做两种选择: 1.时序由IO口模拟高低电平,需要了解协议并按照协议操作相应的IO口。 2.时序由硬件自行产生,不需要人工干预; 由硬件产生的I2C时序,我们借助Stm32Cube配置实现便可,我们这一篇,抛开Stm32Cube,手撕代码,根据I2C的时序,一步步地实现I2C对...

8937

【K8s】什么是Docker和K8S(Kubernetes)

原文: Docker和容器技术为什么会这么火爆?说白了,就是因为它“轻”。 在容器技术之前,业界的网红是虚拟机。虚拟机技术的代表,是VMWare和OpenStack。 相信很多人都用过虚拟机。虚拟机,就是在你的操作系统里面,装一个软件,然后通过这个软件,再模拟一台甚至多台“子电脑”出来。 虚拟机,类似于“子电脑” 在“子电脑”里,你可以和正常电脑一样运行程序,例如开QQ。如果你愿意,你可以变出好几个“子电脑”,里面都开上QQ。“子电脑”和“子电脑”之间,是相互.....

我的笔记本 1万+

小白学电路之cadance搭建buffer电路

Buffer(缓冲器)是一种放大器或驱动电路,主要用于隔离输入和输出,以防止负载对前级电路造成干扰或影响。本文作者在电路方面是小白水平,目前正在学习,有不足之处欢迎指正。3.创建新的cellview,对此buffer进行仿真验证。2.创建buffer的symbol。电路中的V2的详细参数。

weixin_58051657的博客 1992

AI视频生成技术研究报告:现状、挑战与展望

AI 视频生成技术概述:介绍 AI 视频生成技术的基本概念,回顾其发展历程,从早期依赖图像拼接的简单生成方式,到如今融合多种先进技术的复杂模型应用,梳理技术演进的关键节点和重要突破。同时,分析该技术在当前阶段的特点,包括生成视频的质量、速度、灵活性等方面,以及与传统视频制作方式的差异,阐述 AI 视频生成技术如何改变视频创作的流程和模式。技术实现路径分析。

daqsdfas的博客 4588

Mac Docker Desktop 搭建 Kubernetes 环境

学习 kubernetes (下文简称为 k8s)的前提是需要一个 k8s 运行环境。k8s 官网上推荐使用 minikube 开始 k8s 的学习之旅。由于自己的 mac 上已安装了 docker desktop(下文简称 desktop),且 desktop 集成了 kubernetes 功能,可以满足最快完成 k8s 学习环境的搭建的需求。 安装/更新 docker desktop 如果没有安装 docker desktop,可以直接下载最新版本进行安装。如果已安装 docker,为了更新至最新版本,

Leo的博客 4442

Lattice FPGA 开发工具Diamond使用流程总结——工具使用

本文介绍了一般的Diamond开发流程,包括工程创建、文件输入、IP使用、约束、管脚分配、和布线布局等流程

weixin_41895751的博客 2万+

kubernetes (k8s) 与 Docker 关系

kubernetes (k8s) 与 Docker 关系 简要介绍 Docker就像飞机,而Kubernetes就像飞机场。 Docker: 是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化。 kubernetes: 是一个开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。 kubernet...

zf_yusen的专栏 1万+

Python爬虫实战:西瓜视频m3u8解析与FFmpeg下载合并

网络爬虫与流媒体解析是Python工程实践中的常见需求,其核心在于通过HTTP请求获取数据并解析特定格式。m3u8作为HLS协议索引文件,将视频切分为ts分片,便于流式传输。结合FFmpeg的多线程处理能力,可高效完成分片下载与合并,技术价值在于提升视频处理效率。典型应用场景包括视频下载、离线缓存等。本文以西瓜视频为例,详细讲解如何使用requests库提取m3u8地址,并调用FFmpeg批量下载ts分片合并为mp4,涵盖请求伪装、索引解析及常见问题排查。

weixin_31856057的博客 15万+

AgentVerse实战:构建多智能体协作系统的关键技术与应用场景

本文深入探讨了AgentVerse框架在构建多智能体协作系统中的关键技术及应用场景。通过分析智能体通信协议、环境交互机制和任务分解算法,展示了如何利用大型语言模型(LLM)实现智能体间的专业化分工与动态协作。文章还提供了智能软件开发团队和智能客服系统等典型应用案例,以及部署优化实践,为开发者构建高效的多智能体系统提供实用指导。

weixin_29254029的博客 361

Kubernetes-mac上安装docker以及k8s

Kubernetes-mac上安装docker以及k8s安装 Docker Desktop下载kubernetes镜像开启kubernetes使用 dashboard mac电脑重做系统后,发现之前mac上安装k8s的方法已经失效,特写一篇博文记录下安装过程。 安装 Docker Desktop 下载 Docker Desktop 按提示进行安装。 这块不再赘述。 配置Docker镜像国内加速: 加入一行:“https://docker.mirrors.ustc.edu.cn” 也可选择其他源。 下载ku

adson1987的博客 7894

基于Python的房地产评估数据抓取与分析 —— 房价走势与市场报告

在房地产行业中,了解和分析房产价格的变化趋势、各个地区的房价差异以及市场评价报告,可以帮助投资者、购房者以及政策制定者做出更加明智的决策。本文介绍了如何使用Python爬虫技术抓取房地产平台上的房产评估报告、价格走势等数据,并对抓取的数据进行分析。通过这些技术,您可以自动化抓取房地产平台的数据,分析房价走势,获取市场报告,为房地产投资决策提供数据支持。假设我们要从链家网抓取某个房产的价格、房产描述以及历史成交价格,首先需要获取目标房产页面的URL,并发送HTTP请求。伪装为常见浏览器,避免被识别为爬虫。

2201_76125261的博客 848

Docker是什么?和Kubernetes(K8s)是什么关系?

从一次"100个容器手动管理崩溃"的运维灾难出发,深度剖析Docker与Kubernetes的定位和协作关系。通过容器编排、服务发现、自动扩缩容的实战案例,以及Docker Compose到K8s的架构演进,揭秘为什么Docker解决打包问题、K8s解决编排问题、以及为什么微服务必须用容器编排平台。配合架构图展示容器调度流程,给出从单机到集群的容器化路线图。

比较是偷走幸福的小偷 4428

【linux】解决报错:Network error: Connection refused

【linux】解决报错:Network error: Connection refused

weixin_44502754的博客 4941

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

k8s kubernetes

(Container Runtime Interface): 容器运行时接口,用来运行容器,k8s通过这个接口去兼容不同的容器,目前主要的CRI有CRI-O和containered,dockershim在k8s的1.24版本后从kubelet中剥离出来,主要由docker维护(不是亲儿子k8s也不会管了):containerd由docker开发,是docker用来操作runc的handler,与docker平级,docker生成的images等资源与containerd生成的images等资源不共享。

六月长安的博客 2738

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图

docker爆火的原因——轻!,K8S,就是基于容器的集群管理平台,Build、Ship and Run”(构建、运输(发送)、运行)、“Build Once, Run anywhere”(一次构建,多处运行)

A-Itfuture的博客 2969

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【云原生】详解Kubernetes、详解k8s,什么是k8s,k8s有什么用;k8s集群是什么、有什么用?

Kubernetes 是Google开源的分布式容器管理平台,是为了更方便的在服务器中管理我们的容器化应用。Kubernetes 简称 K8S,为什么会有这个称号?因为K和S是 Kubernetes 首字母和尾字母,而K和S中间有八个字母,所以简称 K8S,加上 Kubernetes比较绕口,所以一般使用简称 K8S。Kubernetes 即是一款容器编排工具,也是一个全新的基于容器技术的分布式架构方案,在基于Docker的基础上,可以提供从 一系列服务,提高了容器集群管理的便捷性。大家可以先看一下,下面一

点赞的都能无bug通过! 3980

Kubernetes(1)——什么是虚拟化技术,什么是容器,什么是Docker,什么是K8S

写在前面 今天菜白要开始学习K8S了,其实在很古早的时候菜白就微微看过一点点K8S的内容,但是一直没有深入研究(其实就是没有研究)。现在等于从零开始学习,如果你也想从零开始学习不要错过这篇文章(真没有别的意思)。 什么是虚拟化技术,什么是容器,什么是Docker,什么是K8S? 如果不知道虚拟化,不知道容器,不知道Docker,直接学K8S,就好比没活过尿泥就像盖摩天大楼(我瞎比的)。因此我...

i_beidou的博客 2248
上一篇: 处理接口幂等性的两种常见方案
下一篇: 「图解」ThreadLocal 在并发问题中的应用
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值