跳到主要内容

kubeadm

Kubeadm

tstmp_20230213160940

img

Kubeadm 是一个安装 K8s 集群的工具包,可帮助你以更简单、合理安全和可扩展的方式引导最佳实践 Kubernetes 群集。它还支持为你管理 Bootstrap Tokens 并升级/降级集群。

Kubeadm 的目标是建立一个通过 Kubernetes 一致性测试的最小可行集群 ,但不会安装其他功能插件。在设计上并未安装网络解决方案,所以需要用户自行安装第三方符合 CNI 的网络解决方案(如 flanal,calico 等)。此外 Kubeadm

可以在多种设备上运行,可以是 Linux 笔记本电脑、虚拟机、物理/云服务器或 Raspberry Pi,这使得 Kubeadm 非常适合与不同种类的配置系统(例如 Terraform,Ansible 等)集成。

Kubeadm 在 2018 年 12 月 3 日发布的 Kubernetes 1.13 版本中就已经宣布 GA 了,所以可以支持生产环境。

现在我们就来使用 Kubeadm 从头搭建一个使用 Containerd 作为容器运行时的 K8s 集群,这里我们安装的是最新稳定版 v1.25.4 版本。

注意:禁用节点swap原因

[节点] KEP-2400: 节点 Swap 内存支持 Beta

在 Kubernetes 1.22 之前,节点不支持使用内存交换,如果在节点上检测到交换,kubelet 将默认无法启动。每个系统管理员或 Kubernetes 用户在设置和使用 Kubernetes 方面都采用同一种方式:禁用交换空间。

从 1.22 开始,可以在每个节点上启用内存交换 Alpha 功能支持。此更改允许管理员选择在 Linux 节点上配置交换,将块存储的一部分视为额外的虚拟内存。要在节点上启用交换,必须在 kubelet 上启用 NodeSwap 功能门,并且 --fail-swap-on 命令行标志或 failSwapOn 配置设置必须设置为 false。

在 1.28 版本,该功能被升级为 Beta,功能门默认为关闭,该功能仅支持应用于 Bustable 类型的容器组且仅支持 Cgroup v2 (对 v1 的支持将被删除)。对于 BestEffort 类型的容器组,在存在节点压力的情况下应该被驱逐,Swap 交换区将被禁用。

Burstable 类型的容器组的 Swap 限制的公式为:(<容器内存请求>/< 节点内存容量 >)*< 节点交换容量 >。此外,内存限制等于内存请求的容器也无法访问 Swap 交换区。

image-20230827143222595

1