2. Docker和k8s(Kubernetes)有啥关系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2. Docker和k8s(Kubernetes)有啥关系相关的知识,希望对你有一定的参考价值。

参考技术A 首先看看k8s[中间8个字母,数过了(逃](Kubernetes)是什么以及为啥会出现这个东西。

总的来说,k8s的出现和使用容器进行部署的趋势是分不开的。

总的来说,app的部署大致分为三个阶段。

最传统的方式中,所有app公用一个物理系统,这种方式会造成很多资源分配上的冲突。

而后进入了虚拟机部署的时代,各个app运行在其自己的VM上,允许一个物理服务器上运行多个系统,并提供了一定的安全级别(各个VM相互隔离)。

现如今,更流行使用容器进行部署。容器类似于 VM(见前文详细比较),但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统(OS)。因此,容器被认为是轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。

在使用容器进行app部署的今天,需要一个平台对容器进行管理:

通俗一点,我理解的k8s就是对容器进行管理的工具。其中提供的很多功能能够提升部署的鲁棒性以及整体的运行效率:

至此,Docker和k8s的关系也就明了了:

Docker隔离并打包applications及依赖项。

Kubernetes部署协调管理容器,并提供一些其他的相关功能。

docker标签和kubernetes标签之间的区别?

我看到的使用命令“ docker inspect”的标签比“ kubectl describe”或“ kubectl get pods --show-labels”中显示的kubernetes标签更多。是否可以使用kubectl命令查看所有相同的docker标签,或者由于docker标签与kubernetes中的pod标签无关,所以这不可能吗?

答案

两个标签仅由键值对组成。

在Kubernetes中,附加到对象(例如豆荚)的标签。标签旨在用于指定对用户有意义且与用户相关的对象的标识属性,但并不直接暗示核心系统的语义。标签可用于组织和选择对象的子集。因此,例如,如果您使用规则将部署标记为在特定节点上安排Pod的部署,则可以使用该规则。举例来说,如果某个广告连播可以从某个带有标签XYZ的特定服务进入流量,则可以使用标签来完成。您可以通过多种方式使用它。

[另一方面,Docker提供了将标签添加到图像中的支持,以在图像上以及您提到的Dockerfile中添加自定义元数据的方式:

LABEL <key>=<value> <key>=<value> <key>=<value>

它将存储数据为:

LABEL multi.label1="value1" \
      multi.label2="value2" \
      other="value3"

您可以按以下方式检查它:

docker inspect \
       --format " index .Config.Labels \"multi.label2\""
       <your image>

根据docker文档指南是:https://docs.docker.com/config/labels-custom-metadata/

链接http://label-schema.org/rc1/对于标记也很有用。构建时间标签在这里定义良好:

http://label-schema.org/rc1/#build-time-labels

我认为访问docker的标签是不可行的,因为它不会通过Kubernetes API公开。

以上是关于2. Docker和k8s(Kubernetes)有啥关系的主要内容,如果未能解决你的问题,请参考以下文章

docker和k8s的关系

再战 k8s:k8s 概述

1.k8s部署(安装Docker/kubeadm/kubelet, 部署Kubernetes Master, 加入Kubernetes Node, 部署容器网络(CNI),测试kubernetes集)

1.k8s部署(安装Docker/kubeadm/kubelet, 部署Kubernetes Master, 加入Kubernetes Node, 部署容器网络(CNI),测试kubernetes集)

1.k8s部署(安装Docker/kubeadm/kubelet, 部署Kubernetes Master, 加入Kubernetes Node, 部署容器网络(CNI),测试kubernetes集)

k8s和docker区别是啥?