---- 支持 amd64
离线文件准备 (本地个人电脑上准备)
```shell
git clone https://gitlab.orayer.com/qiushi/k3s-installer
cd k3s-installer
下载对应的离线文件 k3s到当前目录
wget https://github.com/k3s-io/k3s/releases/download/v1.23.16-rc2%2Bk3s1/k3s
下载对应的离线镜像文件到当前目录
wget https://github.com/k3s-io/k3s/releases/download/v1.23.16-rc2%2Bk3s1/k3s-airgap-images-amd64.tar
导出插件用到的docker镜像
sudo ./save_images.sh
然后把整个 k3s-installer 文件夹打包压缩,上传到所有需要部署的服务器上去。

需要确保图中那3个`红圈`中的文件存在
打包成 k3s-installer.tar.gz 压缩包上传到服务器上去
cd ../
tar -czvf k3s-installer.tar.gz k3s-installer
一、快速配置环境(每台服务器都要执行的部分):
bash init-config.sh
运行上述脚本,将执行下述内容:
+ 配置必要的内核加载
+ 配置必要的网络环境
+ 安装1.23.16版本的k3s工具
如果上述部分内容你已经有了,可以查看`init-config.sh`脚本,手动执行部分命令。
!!!!!!文件后缀说明!!!!!!
+ `online`: 在线安装,需要外网环境
+ `offline`: 离线安装。
每台机器都导入k3s环境用到的镜像(包括master和node)
```shell
将 k3s 离线镜像导入到机器
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s /usr/local/bin/k3s
sudo chmod +x /usr/local/bin/k3s
二、初始化你的 k3s 机器(master) 离线安装板
1. 修改 `config.yaml`文件,为你自己的配置
2. master节点的机器上执行:
安装k3s
sudo ./install-master_offline.sh
导入插件用到的镜像
sudo ./load_images.sh
导入 向日葵镜像。`docker load -i` 用k3s的命令 `k3s ctr image import` 代替
复制秘钥到当前账号
mkdir -p $HOME/.kube
sudo cp -i /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3. 安装web控制面板,这里使用的是Kuboard。
如果kubectl不存在。则用 `k3s kubectl` 来代替 kubectl
kubectl apply -f kuboard-v3.yaml
> 如果 `kubectl get pod -A` 看到有 kuboard-agent 的pod无法imagepull而报错。
> 你需要 `kubectl edit deployment -n kuboard kuboard-agent`
> 将 `imagePullPolicy` 从 `Always` 改成 `IfNotPresent`
> 你需要 `kubectl edit deployment -n kuboard kuboard-agent`
> 将 `imagePullPolicy` 从 `Always` 改成 `IfNotPresent`
安装完成后,进入 http://master_ip:30080 进入管理页面 账号 `admin`。密码 `Kuboard123`。
4. 安装ingress(1.3.0),这里有两种方式安装,二选一:
1. hostport。会占用本机的80和443端口。如果本机不需要nginx或者nginx配置成其他端口,可以使用。
kubectl apply -f ingress_hostport.yaml
2. nodeport。会随机生成两个端口,分别代表http和https端口。不会占用本机的80和443。
kubectl apply -f ingress_nodeport.yaml
> 安装完成后,执行 `kubectl get svc -n ingress-nginx` 可以看到 80和443分别映射出来的端口。
> 输入 `kubectl get pod -n ingress-nginx` 查看ingress的安装进度。等所有pod都ok了,就可以了。
#### 卸载说明
> `kubectl delete -f ingress_hostport.yaml` 或者 `kubectl delete -f ingress_nodeport.yaml` 填你安装的时候选择的方式。
三、初始化你的 k3s (node节点)机器
> 镜像导入流程和 master一致
1. 修改`install-node_offline.sh` 文件,`K3S_URL`的地址为你的 master的对应地址。
2. 执行`sudo ./install-node_offline.sh` 文件
3. 导入插件镜像 `sudo ./load_images.sh`
4. 因为导入镜像需要依赖k3s。因此这里开始导入 向日葵镜像. `docker load -i` 用k3s的命令 `k3s ctr image import` 代替
四、 卸载删除你的k3s服务
1.
`sudo k3s-killall.sh`
2.
`sudo k3s-uninstall.sh` (for master) or `sudo k3s-agent-uninstall.sh` (for node)
五、 关于ingress
进入到 ingress-nginx命名空间。
推荐使用hostport方式安装。如果你有2台机器,那么请将`ingress-nginx-controller`的副本数调整为2。
如果你是5台设备,对应副本数调整为5.确保每台机器上都运行一个`ingress-nginx-controller`。
六、 FAQ 一些简单问题解答
+ 遇到 'commond not found'、`invalid option 2: set: -` 这类问题
+ 一般是你的sh文件出问题了。尤其是windows下打开过。需要将他们从dos格式转成unix格式。尤其是 `k3s.sh`文件
+ 以下 awk 命令将 DOS 文件 windows.txt 转换为 Unix 格式文件 unix.txt。
awk '{ sub("\r$", ""); print }' windows.txt > unix.txt
1.自己新建的xxx.sh文件,创建/复制 完成后,记得 `chmod+x xxx.sh` 赋予其执行权限。
安装完环境后,用 `kubectl get pod -A` 看看所有的pod是否正常运行。只有complet和running的是属于正常的。
2.用 `kubectl get node` 查看所有 节点是否正常
kubectl get node
`cat /run/systemd/resolve/resolv.conf` 看看服务器的dns是否配置正常。如果缺失了dns配置
改 `/etc/systemd/resolved.conf`
#DNS=
改成 DNS=119.29.29.29
DNS=119.29.29.29

或者改成对应的内网dns地址。
改完后 `sudo systemctl restart systemd-resolved.service` 使其生效
2652





