此笔记抄袭并借鉴了

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 是没有密码的,所以你得先给它设一个。

  1. 在终端输入:

    sudo passwd root
  2. 输入你当前用户的密码。

  3. 系统会提示 New password:,输入你想给 root 设置的密码(建议简单点,比如 123456,反正是实验环境)。

  4. 再次输入确认。
    看到 password updated successfully 表示成功。

第二步:修改 SSH 配置文件

你需要告诉 SSH 服务:“允许老板(root)直接远程进公司”。

  1. 编辑配置文件:

    sudo nano /etc/ssh/sshd_config
  2. 在文件中找到这一行(通常在中间位置):

    #PermitRootLogin prohibit-password
  3. 修改它(要把前面的 # 去掉,并把后面改成 yes):
    修改后应该长这样(注意颜色变亮了):

    PermitRootLogin yes

    (提示:按键盘方向键移动光标,直接打字修改)

  4. 保存并退出:

    • 按 Ctrl + O (保存)

    • 按 Enter (确认文件名)

    • 按 Ctrl + X (退出)

第三步:重启 SSH 服务

配置改完了,要重启服务才能生效。

输入:

sudo systemctl restart ssh

第四步:在 MobaXterm 中测试连接

现在你的服务器已经准备好了,但你的 MobaXterm 还在用旧用户登录。

  1. 在 MobaXterm 左侧列表,右键点击你的会话 -> Edit session。

  2. 把 Specify username(指定用户名)改成:root。

  3. 点击 OK。

  4. 双击会话连接,输入你刚才在第一步设置的 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 又会自动挂载。

  1. 打开配置文件

    nano /etc/fstab
  2. 找到 Swap 那一行
    在 Ubuntu 24.04 中,这一行通常长这样(也可能是 /dev/sdaX 开头):

    /swap.img      none    swap    sw      0       0
  3. 注释掉它
    在这一行的最前面加一个 # 号,把它变成注释:

    # /swap.img      none    swap    sw      0       0
  4. 保存并退出

    • 按 Ctrl + O (保存)

    • 按 Enter (确认文件名)

    • 按 Ctrl + X (退出)


第三步:验证是否成功

执行以下命令查看内存情况:

free -h

如何判断成功?
请看输出结果的 Swap 那一行:

  • 如果 TotalUsedFree 全都是 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的安装及其所需要的插件已经安装完毕,下一节记录主从节点的相关配置,形成一个完整的工作集群。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐