时间:2022-06-22来源:www.pcxitongcheng.com作者:电脑系统城
Docker 和 K8s 这两个经常一起出现,两者的Logo 看着也有一定联系一个是背上驮着集装箱的鲸鱼一个是船的舵轮。
不过两者不能放在一个维度上讨论,Docker 是当前流行的 Linux 容器解决方案,利用 Namespaces 、Cgroups 以及联合文件系统UnionFS 实现了同一主机上容器进程间的相互隔离。
而 K8s 是拥有容器编排能力的集群管理解决方案,可以按照应用的定义调度各个运行着应用组件 Docker 容器,但是 Docker 并不是 K8s 对容器的唯一选择,K8s 的 容器运行时支持对接多种容器 ,比如CoreOS公司的Rkt容器(之前称为Rocket,现更名为Rkt),Apache 开源的 Mesos 容器等。只要容器实现了 K8s 容器运行时的接口约定,都能让 K8s 进行调度。
Docker 公司也推出过自己的容器集群管理方案 Docker Swarm ,跟 K8s 算是竞品,但是在生产上几乎没人使用。
Docker Swarm 没有流行起来的深层次的原因就不深究了,从一些IT媒体的报道看,可能的原因是
看完 K8s 和 Docker 的关系后,我们已经有答案了,想学 K8s 不一定非得会 Docker。但是毕竟 Docker 还是目前最流行的 Linux 容器方案,绝大部分情况下我们还是会选择使用 Docker,那么我们 Docker 掌握到什么程度更易于我们学习 K8s 呢?
这个主要看我们想学会 K8s 干什么,即使运行在 K8s 之上的容器选择 Docker,如果我们是搭建一些基建类的软件,比如 MySQL、Redis之类的,因为这些组织已经提供了软件容器的镜像,我的使用体验是,完全用不到那些 Docker 的各种命令。
比如要在 K8s 集群上运行一个 MySQL 应用,写好应用的清单文件(就是各种配置和期望的状态),然后直接运行
kubectl apply -f mysql.yaml
就好,K8s 的容器运行时会根据清单文件里的镜像名,帮我们调 Docker 的接口去下载镜像、运行容器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
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 |
上面配置文件,有删减。完整可运行的案例,请参考:
kubernetes环境部署单节点redis数据库的方法
使用Kubernetes集群环境部署MySQL数据库
不过,我们使用 K8s 除了搭建这种基础软件外,学 K8s 更多是让自己开发的服务能依托 K8s 集群管理、调度的能力变的更具鲁棒性、更portable。这个时候 Docker 方面的技能掌握基本的 Dockerfile 编写、打包上传镜像的命令。这部分的几个简单的知识,感觉花个两小时就能掌握,这里推荐一下我以前的文章
基于Docker镜像部署go项目的方法步骤
Java 应用怎么打包成 Docker 镜像
学会这几个简单的Docker知识就完全够用,能支撑我们开始 K8s 的学习和练习啦,其他 Docker 相关的知识完全可以在做 K8s 练习时遇到问题、解决问题的过程中再学。
这篇文章把 Docker 和 K8s 的关系给大家做了一个解答,希望还在迟疑自己现有的知识储备能不能直接学 K8s 的,赶紧行动起来,K8s 是典型的入门有点难,后面越用越香。
2023-03-17
Nginx主机域名配置实现2023-03-17
Nginx配置-日志格式配置方式2023-03-17
Apache APISIX Dashboard 未授权访问漏洞分析(CVE-2021-45232)正常项目无法访问(Linux 服务器),启动tomcat时卡在下图位置,项目无法启动。1、先检查tomcat日志、项目日志没有报错信息,且没再产生新的日志信息。2、jdk、tomcat 、 jvm 配置,服...
2023-03-15
这篇文章主要介绍了Kubernetes中Nginx服务启动失败排查流程(Error: ImagePullBackOff),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以...
2023-03-15