离线安装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
在三个节点上都要查看,确保文件已上传:

三,部署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


四,部署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

五,运维启停 / 卸载命令
# Master节点操作 systemctl restart k3s /usr/local/bin/k3s-uninstall.sh# Worker节点操作 systemctl restart k3s-agent /usr/local/bin/k3s-agent-uninstall.sh
