ubantu 24.04.4离线安装k3s

ubantu 24.04.4离线安装k3s

离线安装k3s。

集群规划(3 节点)

master节点,主机名:k8s-master-01,ip:172.29.128.1

工作节点1:主机名:k8s-worker-01,ip:172.29.132.68 

工作节点2:主机名:k8s-worker-02,ip:172.29.132.69 

 

一,前置统一操作(所有 3 台节点全部执行)

1.1 分别设置每台机器主机名

# master节点执行
hostnamectl set-hostname k8s-master-01# worker01节点执行
hostnamectl set-hostname k8s-worker-01# worker02节点执行
hostnamectl set-hostname k8s-worker-02

 

1.2 所有节点统一写入 /etc/hosts

cat >> /etc/hosts <<EOF
172.29.128.1    k8s-master-01
172.29.132.68   k8s-worker-01
172.29.132.69   k8s-worker-02
EOF

 

1.3. 关闭防火墙、SELinux、swap(K3s 强制要求)

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld# 关闭selinux(centos/rhel系,ubuntu可忽略)
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config# 永久关闭swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

 

1.4. 内核参数(容器网络必需)

modprobe overlay
modprobe br_netfiltercat >> /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
sysctl --systemcat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF
sysctl -p

 

1.5 4. 时间同步(避免证书过期、节点失联)

yum install chrony -y || apt install chrony -y
systemctl enable --now chronyd

 

二,下载k3s离线包

下载k3s二进制:https://github.com/k3s-io/k3s/releases/download/v1.33.6+k3s1/k3s

下载airgap镜像包:https://github.com/k3s-io/k3s/releases/latest/download/k3s-airgap-images-amd64.tar

下载官方安装脚本:https://get.k3s.io

将安装脚本保存为 k3s-install.sh 文件

将下载的三个文件:k3s、k3s-airgap-images-amd64.tar、k3s-install.sh 上传到所有节点

在powershell窗口扫行:

#上传到k8s-master-01节点
scp D:\softs\k3s\k3s-airgap-images-amd64.tar root@121.40.63.235:/data/k3s
scp D:\softs\k3s\k3s-install.sh root@121.40.63.235:/data/k3s
scp D:\softs\k3s\k3s root@121.40.63.235:/data/k3s#上传到k8s-worker-01节点
scp D:\softs\k3s\k3s-airgap-images-amd64.tar root@116.62.212.143:/data/k3s
scp D:\softs\k3s\k3s-install.sh root@116.62.212.143:/data/k3s
scp D:\softs\k3s\k3s root@116.62.212.143:/data/k3s#上传到k8s-worker-02节点
scp D:\softs\k3s\k3s-airgap-images-amd64.tar root@121.199.21.41:/data/k3s
scp D:\softs\k3s\k3s-install.sh root@121.199.21.41:/data/k3s
scp D:\softs\k3s\k3s root@121.199.21.41:/data/k3s

 

在三个节点上都要查看,确保文件已上传:

image

 

 三,部署k3s (master节点)

1. 分发二进制、离线镜像、授权安装脚本

# 1. 将k3s二进制复制到系统全局PATH
cp /data/k3s/k3s /usr/local/bin/
chmod +x /usr/local/bin/k3s# 2. 创建镜像自动加载目录,拷贝离线镜像包
mkdir -p /var/lib/rancher/k3s/agent/images/
cp /data/k3s/k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/# 3. 脚本增加执行权限,校验版本
chmod +x /data/k3s/k3s-install.sh
k3s --version

 

2,Master 节点(172.29.128.1)执行安装

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC="server \
--cluster-init \
--server https://172.29.128.1:6443 \
--tls-san 172.29.128.1 \
--airgap \
--write-kubeconfig-mode 644" \
/data/k3s/k3s-install.sh

 

3,查看 k3s 服务运行状态

systemctl status k3s
kubectl get nodes

 

4,配置 kubectl 管理凭证(在master 节点上执行)

mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sed -i 's/127.0.0.1/172.29.128.1/g' ~/.kube/config

 

 

image

 

image

 

四,部署k3s工作工点

1,在master节点上获取 Worker 节点接入 Token(保存,两台 worker 都要用)

cat /var/lib/rancher/k3s/server/node-token

 

 

2,两台 Worker 节点分别执行安装(替换 Token)

INSTALL_K3S_SKIP_DOWNLOAD=true \
INSTALL_K3S_EXEC="agent \
--server https://172.29.128.1:6443 \
--token 替换为你的token" \
bash /data/k3s/k3s-install.sh

 

如果输出下面的错误,说明是windows换行符导致的。

: invalid optionstall.sh: line 2: set: -
set: usage: set [-abefhkmnptuvxBCEHPT] [-o option-name] [--] [-] [arg ...]
: invalid option name.sh: line 3: set: noglob
/data/k3s/k3s-install.sh: line 4: $'\r': command not found
/data/k3s/k3s-install.sh: line 101: $'\r': command not found
/data/k3s/k3s-install.sh: line 105: $'\r': command not found
/data/k3s/k3s-install.sh: line 107: syntax error near unexpected token `$'\r''
'data/k3s/k3s-install.sh: line 107: `info()

解决方式:

第一步:修复 Windows 换行符(CRLF→LF,根治 \r 报错)

sed -i 's/\r$//' /data/k3s/k3s-install.sh

第二步:拷贝二进制到系统目录(必须先执行)

cp /data/k3s/k3s /usr/local/bin/
chmod +x /usr/local/bin/k3s
mkdir -p /var/lib/rancher/k3s/agent/images/
cp /data/k3s/k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
chmod 755 /data/k3s/k3s-install.sh

第三步,重新执行:

INSTALL_K3S_SKIP_DOWNLOAD=true \
INSTALL_K3S_EXEC="agent \
--server https://172.29.128.1:6443 \
--token 替换为你的token" \
bash /data/k3s/k3s-install.sh

 

3,安装完成验证

systemctl start k3s-agent
systemctl status k3s-agent

 

4,在master节点验证

kubectl get nodes

 

image

  

五,运维启停 / 卸载命令

# Master节点操作
systemctl restart k3s
/usr/local/bin/k3s-uninstall.sh# Worker节点操作
systemctl restart k3s-agent
/usr/local/bin/k3s-agent-uninstall.sh