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)有啥关系的主要内容,如果未能解决你的问题,请参考以下文章
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集)