容器和K8s常见概念

【容器】

1、Open Container Initiative(OCI):制定和推动容器格式和运行时的开放标准。容器运行时需要遵循此标准。主要的产出物包括:

  • OCI Image Specification: 定义容器镜像格式的规范,统一描述容器镜像的内容和结构。
  • OCI Runtime Specification: 定义容器运行时的规范,包括容器的创建、启动、停止以及生命周期管理等方面的标准。
  • OCI Distribution Specification: 定义容器镜像的分发规范,使得镜像可以便捷地从各种来源获取和使用。

2、常见容器运行时:containerd(docker)、cri-o(CRI-O 是为 Kubernetes 设计的一个独立的容器运行时,而不是专门为 Docker 设计的。)

3、runc:对符合 Open Container Initiative(OCI)规范的容器运行时的管理工具。实现Linux上容器的隔离,namespace、cgroup以及其他系统级别隔离,还有容器的生命周期管理。

4、容器运行时和runc关系:运行时会调用runc。

5、市面上的很多容器标准都是基于runc实现的,比如Pouch 是由阿里巴巴开源的轻量级容器引擎,遵循 OCI 标准,并且支持 Kubernetes CRI(容器运行时接口)。

【Docker】

1、docker组件:

https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/%E7%94%B1%E6%B5%85%E5%85%A5%E6%B7%B1%E5%90%83%E9%80%8F%20Docker-%E5%AE%8C/11%20%20%E7%BB%84%E4%BB%B6%E7%BB%84%E6%88%90%EF%BC%9A%E5%89%96%E6%9E%90%20Docker%20%E7%BB%84%E4%BB%B6%E4%BD%9C%E7%94%A8%E5%8F%8A%E5%85%B6%E5%BA%95%E5%B1%82%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86.md

2、Docker 最初使用了自己的容器运行时,但后来将其核心容器运行时组件 containerd 开源,其默认的容器运行时切换为 containerd。

【K8s】

1、Kubernetes 使用 CRI(Container Runtime Interface)作为容器运行时的接口,通过该接口与容器运行时进行通信。

2、概论 : Kubernetes中概念的简要概述:

  • Cluster : 集群是指由Kubernetes使用一系列的物理机、虚拟机和其他基础资源来运行你的应用程序。
  • Node : 一个node就是一个运行着Kubernetes的物理机或虚拟机,并且pod可以在其上面被调度。.
  • Pod : 一个pod对应一个由相关容器和卷组成的容器组 (了解Pod详情
  • Label : 一个label是一个被附加到资源上的键/值对,譬如附加到一个Pod上,为它传递一个用户自定的并且可识别的属性.Label还可以被应用来组织和选择子网中的资源(了解Label详情)
  • selector是一个通过匹配labels来定义资源之间关系得表达式,例如为一个负载均衡的service指定所目标Pod.(了解selector详情)
  • Replication Controller : replication controller 是为了保证一定数量被指定的Pod的复制品在任何时间都能正常工作.它不仅允许复制的系统易于扩展,还会处理当pod在机器在重启或发生故障的时候再次创建一个(了解Replication Controller详情
  • Service: 一个service定义了访问pod的方式,就像单个固定的IP地址和与其相对应的DNS名之间的关系。(了解Service详情
  • Volume: 一个volume是一个目录,可能会被容器作为未见系统的一部分来访问。(了解Volume详情
  • Kubernetes volume 构建在Docker Volumes之上,并且支持添加和配置volume目录或者其他存储设备。
  • Secret : Secret 存储了敏感数据,例如能允许容器接收请求的权限令牌。
  • Name : 用户为Kubernetes中资源定义的名字
  • Namespace : Namespace 好比一个资源名字的前缀。它帮助不同的项目、团队或是客户可以共享cluster,例如防止相互独立的团队间出现命名冲突
  • Annotation : 相对于label来说可以容纳更大的键值对,它对我们来说可能是不可读的数据,只是为了存储不可识别的辅助数据,尤其是一些被工具或系统扩展用来操作的数据

【总结】

搬运图:

【进一步理解】

1、kubectl describe node xxx,一般会看到的返回:

Container Runtime Version: docker://18.9.0 这是传统的 Docker 引擎运行时。

Container Runtime Version: containerd://1.5.8 docker切换到containerd运行时。

相关推荐
十年磨一剑~7 分钟前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs801402 小时前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui3 小时前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘3 小时前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
鸿儒5175 小时前
MR-50国产化GPU docker配置方法
docker·容器·mr
Zhu7587 小时前
在k8s集群部署ApacheHadoop单节点单数据副本
云原生·容器·kubernetes
Akamai中国7 小时前
Akamai收购安全企业浏览器提供商LayerX
人工智能·云原生·云计算·云服务
摇滚侠7 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 51-60
java·云原生·kubernetes
bukeyiwanshui7 小时前
20260703 K8s ECShop商城项目
云原生·容器·kubernetes