1. 环境准备
在开始部署Kubernetes集群之前,我们需要确保Ubuntu 24.04.2系统已经做好了充分的准备。这部分工作看似简单,但却是整个部署过程的基础,稍有不慎就可能导致后续步骤失败。我曾在多个项目中因为环境准备不充分而踩过坑,所以特别强调这部分内容的重要性。
首先,我们需要检查系统的基本信息。打开终端,执行以下命令查看系统版本和硬件配置:
hostnamectl
free -h
df -Th
这些命令会显示主机名、内存使用情况和磁盘空间等信息。Kubernetes对硬件有一定要求,建议至少2核CPU、4GB内存和20GB磁盘空间。如果是生产环境,建议配置更高。
接下来是关键的准备工作:
- 禁用交换分区:Kubernetes默认不支持交换内存,我们需要永久禁用交换分区。执行以下命令:
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab
- 加载内核模块:Kubernetes需要一些内核模块支持,特别是网络相关的模块。创建配置文件并加载模块:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
- 配置系统参数:调整内核参数以满足Kubernetes的网络需求:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
- 设置主机名解析:确保每个节点都能正确解析主机名。可以修改/etc/hosts文件,或者配置DNS服务器。如果是单节点测试,可以直接在/etc/hosts中添加记录:
echo "127.0.0.1 $(hostname)" | sudo tee -a /etc/hosts
- 安装基础工具:安装一些常用的工具方便后续操作:
sudo apt update
sudo apt install -y curl wget vim net-tools
这些准备工作完成后,建议重启系统以确保所有配置生效。我曾经遇到过因为没重启导致内核参数不生效的情况,浪费了不少时间排查问题。
2. 安装和配置Containerd
Containerd作为Kubernetes推荐的容器运行时,相比Docker更加轻量级,资源占用更少。这部分我会详细介绍如何从零开始安装和配置Containerd,包括一些优化配置。
首先,我们需要安装Containerd及其相关组件。官方提供了几种安装方式,这里我们选择直接下载二进制包的方式,这样可以获得最新版本:
# 下载Containerd
wget https://github.com/containerd/containerd/releases/download/v1.7.24/containerd-1.7.24-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local containerd-1.7.24-linux-amd64.tar.gz
接下来安装runc,这是Containerd依赖的容器运行时:
wget https://github.com/opencontainers/runc/releases/download/v1.2.3/runc.amd64
sudo install -m 755 runc.amd64 /usr/local/sbin/runc
然后安装CNI插件,这是Kubernetes网络的基础:
wget https://github.com/containernetworking/plugins/releases/download/v1.4.0/cni-plugins-linux-amd64-v1.4.0.tgz
sudo mkdir -p /opt/cni/bin
sudo tar Cxzvf /opt/cni/bin cni-plugins-linux-amd64-v1.4.0.tgz
创建Containerd的systemd服务文件:
cat <<EOF | sudo tee /etc/systemd/system/containerd.service
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.targe


478

被折叠的 条评论
为什么被折叠?



