Docker与K8s关系介绍不会Docker也可以使用K8s


Posted in Servers onJune 25, 2022

K8s和Docker 的关系

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

Docker与K8s关系介绍不会Docker也可以使用K8s

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

Docker与K8s关系介绍不会Docker也可以使用K8s

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

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

Docker与K8s关系介绍不会Docker也可以使用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 是典型的入门有点难,后面越用越香。

更多关于Docker与K8s关系的资料请关注三水点靠木其它相关文章!


Tags in this post...

Servers 相关文章推荐
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
Mar 09 Servers
nginx 防盗链防爬虫配置详解
Mar 31 Servers
小程序后台PHP版本部署运行 LNMP+WNMP
Apr 01 Servers
详解Nginx启动失败的几种错误处理
Apr 01 Servers
Linux中Nginx的防盗链和优化的实现代码
Jun 20 Servers
Nginx使用Lua模块实现WAF的原理解析
Sep 04 Servers
Nginx速查手册及常见问题
Apr 07 Servers
docker-compose部署Yapi的方法
Apr 08 Servers
Nginx 安装SSL证书完成HTTPS部署
Apr 28 Servers
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
Apr 29 Servers
centos7安装mysql5.7经验记录
May 02 Servers
Tomcat 与 maven 的安装与使用教程
Jun 16 Servers
Windows Server 修改远程桌面端口的实现
Windows server 2012 NTP时间同步的实现
windows server 2016 域环境搭建的方法步骤(图文)
Windows server 2022创建创建林、域树、子域的步骤
Windows Server 2022 超融合部署(图文教程)
win server2012 r2服务器共享文件夹如何设置
服务器SVN搭建图文安装过程
Jun 21 #Servers
You might like
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
js快速排序的实现代码
2013/12/08 Javascript
JS验证IP,子网掩码,网关和MAC的方法
2015/07/02 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
jQuery选择器总结之常用元素查找方法
2016/08/04 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
d3.js实现立体柱图的方法详解
2017/04/28 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
Python中列表元素转为数字的方法分析
2016/06/14 Python
python虚拟环境的安装配置图文教程
2017/10/20 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
Python读写操作csv和excle文件代码实例
2020/03/16 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
董事长职责范文
2013/11/08 职场文书
财务管理专业推荐信
2013/11/19 职场文书
期末自我鉴定
2014/02/02 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
物业管理专业自荐信
2014/07/01 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
办公室规章制度范本
2015/08/04 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书
汽车销售合同文本
2019/08/08 职场文书