跳到主要内容

39.codec

PR #806

Rename Encoding to Codec, Versioning to ResourceVersioner. Add GoDoc. Add Delete(key, recursive) to EtcdHelper

PR #688

Volume reconciliation loop

这里的 CreateVolumeCleaner 函数根据 volume 的类型(kind)创建对应的数据卷清理器(Cleaner),当前仅支持 "empty" 类型的 volume,其实现为 EmptyDirectory 结构。如果传入的 kind 不支持,就会返回一个 ErrUnsupportedVolumeType 错误。

GetCurrentVolumes 函数会读取给定的 rootDirectory,检查挂载的数据卷,然后创建对应的清理器。这个函数返回一个映射,其中键为 volume 的标识符(由 pod ID 和 volume 名称组合而成),值为对应的清理器。

PR #825

add support for "run in"

在Docker的早期版本中,execdriver 是 Docker 使用的一个概念,用来表示Docker如何和操作系统进行交互,创建和管理容器。Docker支持多种 exec 驱动程序,如 native、lxc 等。

native exec driver 是 Docker 默认使用的驱动程序。它使 Docker 直接与 Linux 内核交互,使用内核中的 namespaces、cgroups 等特性来隔离和限制容器。

/var/lib/docker/execdriver/native 这个目录是 Docker 在使用 native exec driver 时创建和管理容器所用的目录。每个容器都会在这个目录下有一个子目录,子目录的名称通常是容器的 ID。

在这个目录中,Docker会存储与容器相关的各种信息,例如容器的配置、状态、日志等。

请注意,从 Docker 1.11 开始,Docker 引入了一个新的架构,被称为 containerd,它取代了旧的 execdriver 体系。在新的架构中,Docker 直接与 containerd 交互,由 containerd 负责与操作系统交互来创建和管理容器。在这个架构中,/var/lib/docker 目录的结构也有所改变。

PR #807

Decouple apiserver from codec implementation The apiserver on initialization must be provided with a codec for encoding and decoding all handled objects including api.Status and api.ServerOp. In addition, RESTStorage objects may now optionally implement Extract() or instead rely on the codec to decode for them.

apiserver:在 Kubernetes 生态系统中,API 服务器是中心管理实体,处理和验证各种 Kubernetes 资源(如 Pods、Services 等)的 REST 请求。

codec:在这里,codec 可能指的是能够编码和解码数据的一种软件。API 服务器需要这样的编解码器来正确处理它需要处理的各种对象。当客户端的数据被接收时,它需要从其传输格式(通常是 JSON 或者 YAML)解码成内部对象。反之,当数据要发给客户端时,它需要被编码(或者序列化)成 JSON 或 YAML。

RESTStorage objects:这是 Kubernetes API 服务器的核心组件,负责存储和检索 API 对象。这些对象可以实现 Extract() 方法来自己处理解码,或者依赖 codec 为它们进行解码。

api.Status 和 api.ServerOp:这些是 Kubernetes API 中的特定对象类型,它们也需要被正确地编码和解码。api.Status 用于表示 API 调用的结果状态,而 api.ServerOp 用于表示服务器操作。

PR #830

If we ever see the net container die, we need to restart all containers in the pod. Delete containers for a pod if we have to create the network container.

PR #835

Centralize path magic in apiserver into the New method.