K8S(Kubernetes) 笔记

  • ~1.76K 字
  • 次阅读

没空系统性整理,所以先记笔记好了

最新版的Kubernetes 已不再使用 Docker

Kubernetes v1.24+ 移除了 dockershim,不再直接依赖 Docker Engine 来作为容器运行时,并且推荐使用像 containerd 这样的 CRI 运行时。同时安装 Docker Engine 和独立的 containerd (被 Kubernetes 使用) 确实可能会导致一些混淆或潜在的冲突,但这并不意味着完全不能安装 Docker,或者某些教程推荐安装 Docker 就是完全错误的。
这里需要澄清几个关键点,解释为什么有些教程可能仍然会提到安装 docker.io (或 docker-ce):
历史原因和习惯延续:
在 Kubernetes v1.23 及更早版本,Docker Engine 是最主流的容器运行时。大量的旧教程和很多人的经验都是基于 Docker 的。
即使 dockershim 被移除,Docker Engine 本身的核心运行时就是 containerd。所以,安装 Docker Engine 实际上也会安装和运行 containerd。
Docker CLI 的便利性:
很多人习惯使用 docker命令行工具 (docker ps, docker images, docker build 等) 来进行本地镜像构建、容器调试等操作。
即使 Kubernetes 使用独立的 containerd 实例,管理员或开发者可能仍然希望在节点上拥有 docker CLI 以便进行一些辅助操作。
crictl 是与 CRI 运行时(如 containerd)交互的标准工具,但其命令和用户体验与 docker CLI 不同,后者更为用户熟知。
误解或简化教程:
有些教程可能没有完全更新到最新的 Kubernetes 架构变化,或者为了简化步骤,直接让用户安装 Docker,因为 Docker 安装后,其内部的 containerd 可以被配置为 Kubernetes 的 CRI 运行时。
关键点在于如何配置 kubelet: 如果安装了 Docker Engine,kubelet 必须被配置为不使用已废弃的 dockershim,而是直接与 Docker Engine 内部的 containerd 的 CRI socket (/run/containerd/containerd.sock,如果 Docker 将其暴露出来并与 Kubernetes 期望的一致) 通信。
Docker 仍然是构建镜像的主流工具:
虽然 Kubernetes 运行容器不直接依赖 Docker Engine,但构建容器镜像的生态系统仍然以 Dockerfile 和 docker build (或兼容工具如 buildah, kaniko) 为主。
因此,在开发环境或CI/CD流程中,Docker Engine 仍然扮演重要角色。有些教程可能会将节点准备和镜像构建环境的准备步骤混合在一起。

Helm Charts

Helm 是 Kubernetes 的包管理器,目前唯一安装 Kubernetes Dashboard 的方式

Charts (Helm 包): Helm 使用一种称为 "Charts" 的打包格式。一个 Chart 就是一个描述了一组相关 Kubernetes 资源的文件集合。它可以包含 Deployment, Service, ConfigMap, Secret, Ingress 等等,以及这些资源的配置模板。Charts 通常允许用户通过一个 values.yaml 文件或命令行参数来定制安装,而无需直接修改 Chart 的模板文件。Helm 会跟踪应用的版本,并允许你轻松地将应用回滚到之前的版本。
仓库 (Repositories): Helm Charts 可以存储在称为 "仓库" 的地方,你可以添加这些仓库来访问社区或组织维护的 Charts。

注意事项

  • pause 的镜像地址定义在 containerd 配置中
  • containerd 的 config.toml 可以配置镜像源
打赏
打赏提示信息
分享
分享提示信息