容器和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运行时。

相关推荐
angushine2 分钟前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
孔令飞1 小时前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go
玄明Hanko1 小时前
Quarkus+Docker最全面完整教程:手把手搞定Java云原生
后端·docker·云原生
SimonLiu0092 小时前
清理HiNas(海纳斯) Docker日志并限制日志大小
java·docker·容器
高峰君主5 小时前
Docker容器持久化
docker·容器·eureka
能来帮帮蒟蒻吗5 小时前
Docker安装(Ubuntu22版)
笔记·学习·spring cloud·docker·容器
言之。9 小时前
别学了,打会王者吧
java·python·mysql·容器·spark·php·html5
秦始皇爱找茬12 小时前
docker部署Jenkins工具
docker·容器·jenkins
hoho不爱喝酒14 小时前
微服务Nacos组件的介绍、安装、使用
微服务·云原生·架构
樽酒ﻬق16 小时前
Kubernetes 常用运维命令整理
运维·容器·kubernetes