Kubernetes 1.20+ 在 Ubuntu 20.04 LTS 上的管理节点初始化(不使用 Docker)

作者: iEdon 分类: 文章列表 发布时间: 2021-04-14 16:37

前言

想要部署自己的私有容器了,听说 Kubernetes(后文可能简称“K8S”) 大红大紫,当然要试试。然而,2021 年年初的 K8S 版本已经开始弃用 Docker。在了解了社区 这么做的理由 后,当然要跟一把风弃用 Docker 了(反正早晚会被逼迫迁移)。

环境:Hyper-V 下的 Ubuntu 20.04 LTS amd64; 6GB RAM

步骤

1. 前期准备

重要:我在这里遇到了一个坑,为了后续使 K8S 管理节点初始化正常,我们还需让 containerd 使用 systemd 的 cgroups,否则可能会初始化失败。这一点在网上很多 guide 中没有被提及。

来自 Wiki 的解释:

When systemd is chosen as the init system for a Linux distribution, the init process generates and consumes a root control group (cgroup) and acts as a cgroup manager. Systemd has a tight integration with cgroups and allocates a cgroup per systemd unit. It’s possible to configure your container runtime and the kubelet to use cgroupfs. Using cgroupfs alongside systemd means that there will be two different cgroup managers.

2.  让 containerd 使用 systemd cgroups

3. 安装 Kubernetes

4. 安装前的准备

5. 设置 IP 与主机名

6. 关闭 Swap

7. 初始化 K8S 管理节点

8. 如果没有报错的话,即代表管理节点成功初始化了。在使用前,我们可能还需要进一步准备。

参考

  1. How to install Kubernetes on Ubuntu Server without Docker, TechRepublic, https://www.techrepublic.com/article/how-to-install-kubernetes-on-ubuntu-server-without-docker/
  2. Container Runtimes, Kubernetes Documentation, https://kubernetes.io/docs/setup/production-environment/container-runtimes/
  3. Configure a cgroup driver, Kubernetes Documentation, https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/
  4. Don’t Panic: Kubernetes and Docker, Kubernetes Blog, https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/