K8s集群搭建学习记录-2.安装k8s以及所需插件
本文记录了在Ubuntu 24.04系统上搭建Kubernetes集群的详细步骤。主要内容包括:1) 配置root权限和SSH访问;2) 进行主机名解析、时间同步、防火墙和swap关闭等前期准备;3) 安装containerd容器运行时并配置cgroup驱动;4) 添加Kubernetes阿里云源并安装kubelet、kubeadm和kubectl三大组件;5) 进行内核参数调优和CRI工具配置。
此笔记抄袭并借鉴了
https://blog.csdn.net/zwj202101/article/details/157400736?spm=1001.2014.3001.5502
https://blog.csdn.net/tn1949/article/details/141855970
以及黑马程序员k8s教程相关内容
系统版本:ubuntu24.04(内核版本:6.14.0-29-generic)
软件版本:虚拟机软件:VMware Workstation Pro
远程终端工具:MobaXterm
虚拟机内所用软件:containerd :v2.2.1、k8s及其三件套:v1.35.0、cilium:v1.18.5
先给三个节点设置root权限,方便后续操作
在 Ubuntu 中,默认是为了安全禁用 root 用户直接登录的。
第一步:给 root 用户设置密码
默认情况下 root 是没有密码的,所以你得先给它设一个。
-
在终端输入:
sudo passwd root -
输入你当前用户的密码。
-
系统会提示 New password:,输入你想给 root 设置的密码(建议简单点,比如 123456,反正是实验环境)。
-
再次输入确认。
看到 password updated successfully 表示成功。
第二步:修改 SSH 配置文件
你需要告诉 SSH 服务:“允许老板(root)直接远程进公司”。
-
编辑配置文件:
sudo nano /etc/ssh/sshd_config -
在文件中找到这一行(通常在中间位置):
#PermitRootLogin prohibit-password -
修改它(要把前面的 # 去掉,并把后面改成 yes):
修改后应该长这样(注意颜色变亮了):PermitRootLogin yes(提示:按键盘方向键移动光标,直接打字修改)
-
保存并退出:
-
按 Ctrl + O (保存)
-
按 Enter (确认文件名)
-
按 Ctrl + X (退出)
-
第三步:重启 SSH 服务
配置改完了,要重启服务才能生效。
输入:
sudo systemctl restart ssh
第四步:在 MobaXterm 中测试连接
现在你的服务器已经准备好了,但你的 MobaXterm 还在用旧用户登录。
-
在 MobaXterm 左侧列表,右键点击你的会话 -> Edit session。
-
把 Specify username(指定用户名)改成:root。
-
点击 OK。
-
双击会话连接,输入你刚才在第一步设置的 root 密码。
如果提示符变成了 # 而不是 $,恭喜你,你已经是这台机器的最高统治者了!
一、前期准备工作
1)点击MultiExec(三个终端可以同时输入)

2) 主机名解析
为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器
vim /etc/hosts
·主机名称解析 编辑三台服务器的/etc/hosts文件,添加下面内容(ip地址换成自己的)
192.168.18.110 master
192.168.18.111 node1
192.168.18.112 node2
注:在vim中,a是插入,:wq是保存并退出,每次操作完按esc进行下一步操作
3) 时间同步
输入
date
查看三个终端的时间是否一致,不一致的话自行在网上寻找同步方法
4) 禁用防火墙服务并关闭swap
(1)关闭防火墙,并把 ufw 的后台服务彻底从开机启动项里移除
sudo ufw status
sudo systemctl disable --now ufw
(2)关闭swap
第一步:临时关闭(立刻生效)
在终端执行:
swapoff -a
这条命令会让系统现在的 Swap 立刻归零。
第二步:永久关闭(防止重启复活)—— 最关键的一步
你需要修改配置文件,否则下次开机 Swap 又会自动挂载。
-
打开配置文件:
nano /etc/fstab -
找到 Swap 那一行:
在 Ubuntu 24.04 中,这一行通常长这样(也可能是 /dev/sdaX 开头):/swap.img none swap sw 0 0 -
注释掉它:
在这一行的最前面加一个 # 号,把它变成注释:# /swap.img none swap sw 0 0 -
保存并退出:
-
按 Ctrl + O (保存)
-
按 Enter (确认文件名)
-
按 Ctrl + X (退出)
-
第三步:验证是否成功
执行以下命令查看内存情况:
free -h
如何判断成功?
请看输出结果的 Swap 那一行:
-
如果 Total、Used、Free 全都是 0B,那就说明彻底关闭成功了!
codeText
total used free shared buff/cache available
Mem: 3.8Gi 512Mi 2.8Gi 1.0Mi 500Mi 3.1Gi
Swap: 0B 0B 0B <-- 全是 0 就对了
5) 禁用selinux
selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题
# 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled # 注意修改完毕之后需要重启linux服务 SELINUX=disabled
6) 禁用swap分区
swap分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用
启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备
但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明
# 编辑分区配置文件/etc/fstab,注释掉swap分区一行 # 注意修改完毕之后需要重启linux服务 UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 # /dev/mapper/centos-swap swap swap defaults 0 0
7)修改linux的内核参数
直接在终端执行以下命令:
# 1. 加载必要的内核模块(让 Linux 知道怎么处理容器网络)
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
# 2. 手动加载模块(立即生效)
sudo modprobe overlay
sudo modprobe br_netfilter
# 3. 设置内核参数(开启转发功能)
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
# 4. 应用参数(无需重启)
sudo sysctl --system
二、正式开始安装(安装顺序:容器运行时-k8s组件-CNI):
1.安装容器运行时(这里选择containerd)
(1)安装依赖:
apt update
apt install -y ca-certificates curl gnupg lsb-release
(2)添加docker国内源(containerd在dorcker仓库里):
·注:高版本ubuntu一般自带keyrings文件夹,若不存在就自己建:
mkdir -p /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
·添加软件源地址(这是一个组合命令,它的核心作用是“写一行配置到文件里”)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
注:只要三个节点中只要有一个节点成功下载了,直接把对应的两个文件传输给另外两个节点即可。
需要传送的“两件套”:
docker.gpg:这是防伪印章(位于 /etc/apt/keyrings/)。
docker.list:这是下载地址列表(位于 /etc/apt/sources.list.d/)。
(3)安装containerd:
apt update
apt install -y containerd.io
验证版本:
containerd --version
注:此时/etc/containerd/config.toml该路径文件缺少必要参数,需要对其进行初始化。+
(4)初始化生成默认配置:
注:一般安装完该文件夹会自动生成,如果没有就自己建:
mkdir -p /etc/containerd
把 containerd 脑子里的默认配置“吐出来”,存成白纸黑字的文件,方便后面去修改关键参数(Cgroup 驱动)。
containerd config default > /etc/containerd/config.toml
(5)修改cgroup驱动
vi /etc/containerd/config.toml
找到[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]下的SystemdCgroup
将SystemdCgroup = false 改为 SystemdCgroup = true

(6)重载沙箱(pause)镜像
找到[plugins.'io.containerd.cri.v1.images'.pinned_images]修改sandbox(使用国内源)
sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10.1'

保存并退出。
(7)启动验证containerd:
·重新加载守护进程的配置
systemctl daemon-reload
·重启 containerd 服务
systemctl restart containerd
·启用 containerd 开机自启
systemctl enable containerd
·查看 containerd 的当前状态
systemctl status containerd
看是否active(running)
按q退出
(8)开启内核能力:
apt install -y linux-tools-common linux-tools-$(uname -r)
(9)添加kubernetes的阿里云源(Key + 源):
1)下载阿里云的 Kubernetes 公钥
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg
确保/etc/apt/keyrings目录下出现kubernetes.gpg
2)写入阿里云的仓库地址
echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.35/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
(10)安装cri-tools:
apt update
apt install -y cri-tools
生成crictl配置文件(没有什么实际作用,但每次使用crictl 命令查问题时就不会出现缺少配置文件的警告了)
crictl config \
--set runtime-endpoint=unix:///run/containerd/containerd.sock \
--set image-endpoint=unix:///run/containerd/containerd.sock
验证:
crictl version
如果能看到 RuntimeName: containerd,说明 CRI 链路完全正常。
(11)配置 crictl 默认 socket(指明containerd.sock,避免每次加参数):
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
二、安装kuberbetes:
(1)安装三大组件:
apt update
apt install -y kubelet kubeadm kubectl
验证版本:
kubeadm version
kubectl version --client
kubelet --version
(2)锁版本(防止自动升级出现版本问题):
apt-mark hold kubelet kubeadm kubectl
至此,k8s的安装及其所需要的插件已经安装完毕,下一节记录主从节点的相关配置,形成一个完整的工作集群。
更多推荐



所有评论(0)