当前位置: 首页 > news >正文

离线安装 K3S

一、前言

简要记录一下离线环境下 K3S 的搭建,版本为 v1.23.17+k3s1,使用外部数据库 MySQL
作元数据存储,禁用默认组件(corednsservicelbtraefiklocal-storagemetrics-server)并使用 Helm
单独安装(corednsmetrics-servertraefiklonghorn)。

需要一台联网主机(虚拟机),和多台未联网主机(服务器)。

二、联网虚拟机

2.1 快速引导一个单节点集群

curl -fsSL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.23.17+k3s1 bash -s - server \--data-dir /data/k3s/var/lib/rancher/k3s \--cluster-cidr 10.8.0.0/16 \--service-cidr 10.16.0.0/16 \--cluster-dns 10.16.0.10 \--service-node-port-range 1-65535 \--kube-proxy-arg proxy-mode=ipvs \--disable coredns \--disable servicelb \--disable traefik \--disable local-storage \--disable metrics-server

2.2 快速安装 Longhorn 的依赖

Installation Requirements

# yum
yum install iscsi-initiator-utils nfs-utils# ubuntu
apt install open-iscsi nfs-common# 启动
systemctl enable iscsid --now

2.3 快速安装应用(通过 Helm Controller)

### coredns
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:name: corednsnamespace: kube-systemlabels:app: coredns
spec:repo: https://coredns.github.io/helmchart: corednstargetNamespace: kube-systembootstrap: truevaluesContent: |-fullnameOverride: corednsserviceType: ClusterIPservice:clusterIP: 10.16.0.10name: corednsservers:- zones:- zone: .port: 53plugins:- name: errors- name: healthconfigBlock: |-lameduck 5s- name: ready- name: kubernetesparameters: cluster.local in-addr.arpa ip6.arpaconfigBlock: |-pods insecurefallthrough in-addr.arpa ip6.arpattl 30- name: prometheusparameters: 0.0.0.0:9153- name: forwardparameters: . /etc/resolv.conf- name: cacheparameters: 30- name: loop- name: reload- name: loadbalance###  metrics-server
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:name: metrics-servernamespace: kube-systemlabels:app: metrics-server
spec:repo: https://charts.bitnami.com/bitnamichart: metrics-servertargetNamespace: kube-systembootstrap: truevaluesContent: |apiService:create: trueextraArgs:- --kubelet-insecure-tls- --kubelet-use-node-status-port- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname- --metric-resolution=15s### traefik
---
apiVersion: v1
kind: Namespace
metadata:name: traefik-system---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:name: traefiknamespace: traefik-systemlabels:app: traefik
spec:repo: https://traefik.github.io/chartschart: traefiktargetNamespace: traefik-systembootstrap: truevaluesContent: |-deployment:kind: DeploymentingressClass:enabled: trueisDefaultClass: trueproviders:kubernetesCRD:enabled: trueallowCrossNamespace: trueallowExternalNameServices: trueallowEmptyServices: truekubernetesIngress:enabled: trueallowExternalNameServices: trueallowEmptyServices: truepublishedService:enabled: trueports:traefik:port: 9000protocol: TCPexpose: falseexposedPort: 9000metrics:port: 9100protocol: TCPexpose: falseexposedPort: 9100web:port: 80protocol: TCPexpose: trueexposedPort: 80nodePort: 30080websecure:port: 443protocol: TCPexpose: trueexposedPort: 443ndoePort: 30443tls:enabled: trueservice:type: NodePortsecurityContext:capabilities:drop: []add: [ALL]readOnlyRootFilesystem: falsepodSecurityContext:runAsGroup: 0runAsNonRoot: falserunAsUser: 0### longhorn
---
apiVersion: v1
kind: Namespace
metadata:name: longhorn-system---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:name: longhornnamespace: longhorn-systemlabels:app: longhorn
spec:repo: https://charts.longhorn.iochart: longhorntargetNamespace: longhorn-systembootstrap: truevaluesContent: |-persistence:defaultClassReplicaCount: 1csi:attacherReplicaCount: 1provisionerReplicaCount: 1resizerReplicaCount: 1snapshotterReplicaCount: 1defaultSettings:defaultDataPath: /data/longhorndefaultReplicaCount: 1deletingConfirmationFlag: truelonghornUI:replicas: 1longhornConversionWebhook:replicas: 1longhornAdmissionWebhook:replicas: 1longhornRecoveryBackend:replicas: 1ingress:enabled: truehost: longhorn.example.org
kubectl apply -f charts.yaml

三、资源准备

3.1 下载 Longhorn 依赖

  1. 查看服务器 glibc 版本

    ldd --version
    
    osos versionglibc version
    centos7.92.17
    centos8.42.28
    ubuntu18.042.27
    ubuntu20.042.31
    ubuntu22.042.35
  2. 创建对应 glibc 版本的容器

    # centos 7
    kubectl run centos --image=centos:7.9.2009 --command -- /bin/sleep infinity
    kubectl exec -it pod/centos -- /bin/bash# ubuntu 22
    kubectl run ubuntu --image=ubuntu:22.04 --command -- /bin/sleep infinity
    kubectl exec -it pod/ubuntu -- /bin/bash
    
  3. 下载依赖

    # yum
    yum install iscsi-initiator-utils nfs-utils --downloadonly --downloaddir=rpm -y
    tar -czvf ./rpm.tar.gz ./rpm# apt
    apt update && apt install open-iscsi nfs-common --download-only -y && mkdir -p deb && cp /var/cache/apt/archives/*.deb deb
    tar -czvf ./deb.tar.gz ./deb
    
  4. 复制出依赖

    # yum
    kubectl cp centos:/rpm.tar.gz ./rpm.tar.gz# apt
    kubectl cp ubuntu:/deb.tar.gz ./deb.tar.gz
    

3.2 下载 K3S 资源

参考文档:离线安装

wget https://github.com/k3s-io/k3s/releases/download/v1.23.17+k3s1/k3s-airgap-images-amd64.tar.gz
wget https://github.com/k3s-io/k3s/releases/download/v1.23.17+k3s1/k3s
wget https://get.helm.sh/helm-v3.12.2-linux-amd64.tar.gz
wget https://get.k3s.io -O install.sh

3.3 下载 HelmChart 和导出镜像

# 下载 helm chart 包
helm repo add coredns  https://coredns.github.io/helm     && helm pull coredns/coredns        --version 1.26.0
helm repo add bitnami  https://charts.bitnami.com/bitnami && helm pull bitnami/metrics-server --version 6.5.2
helm repo add traefik  https://traefik.github.io/charts   && helm pull traefik/traefik        --version 24.0.0
helm repo add longhorn https://charts.longhorn.io         && helm pull longhorn/longhorn      --version 1.5.1# 导出镜像
k3s ctr image ls -q | grep -v 'sha256' | sort -u | xargs k3s ctr image export image.tar

四、未联网服务器

4.1 准备 K3S 资源

# 准备 k3s 镜像
mkdir -p /data/k3s/var/lib/rancher/k3s/agent/images
cp ./k3s-airgap-images-amd64.tar.gz /data/k3s/var/lib/rancher/k3s/agent/images# 准备 k3s 二进制可执行文件
install ./k3s /usr/local/bin# 准备 helm 二进制可执行文件
tar -zxvf ./helm-v3.12.2-linux-amd64.tar.gz
install ./linux-amd64/helm /usr/local/bin# 准备 k3s 安装脚本
chmod +x ./install.sh

4.2 引导第一个 Server 节点启动

# 引导 Server
INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.23.17+k3s1 ./install.sh server \--data-dir /data/k3s/var/lib/rancher/k3s \--cluster-cidr 10.8.0.0/16 \--service-cidr 10.16.0.0/16 \--cluster-dns 10.16.0.10 \--service-node-port-range 1-65535 \--kube-proxy-arg proxy-mode=ipvs \--disable coredns \--disable servicelb \--disable traefik \--disable local-storage \--disable metrics-server \--datastore-endpoint="mysql://<USERNAME>:<PASSWORD>@tcp(<HOST>:3306)/<DATABASE>"# 查看 Token
cat /data/k3s/var/lib/rancher/k3s/server/token

4.3 引导其它 Server 节点加入

配置标识在所有 Server 节点必须是相同的。

INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.23.17+k3s1 ./install.sh server \--data-dir /data/k3s/var/lib/rancher/k3s \--cluster-cidr 10.8.0.0/16 \--service-cidr 10.16.0.0/16 \--cluster-dns 10.16.0.10 \--service-node-port-range 1-65535 \--kube-proxy-arg proxy-mode=ipvs \--disable coredns \--disable servicelb \--disable traefik \--disable local-storage \--disable metrics-server \--datastore-endpoint="mysql://<USERNAME>:<PASSWORD>@tcp(<HOST>:3306)/<DATABASE>" \--token <TOKEN>

4.4 引导 Agent 节点加入

INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.23.17+k3s1 ./install.sh server \--data-dir /data/k3s/var/lib/rancher/k3s \--datastore-endpoint="mysql://<USERNAME>:<PASSWORD>@tcp(<HOST>:3306)/<DATABASE>" \--token <TOKEN>

4.5 安装 Longhorn 依赖

# yum
tar -zxvf rpm.tar.gz
rpm -ivh ./rpm/*.rpm# apt
tar -zxvf deb.tar.gz
apt install ./deb/*.deb

4.4 导入镜像和安装应用

# 导出镜像
k3s ctr image import ./image.tar# coredns
helm install coredns coredns-1.26.0.tgz --namespace kube-system --values <VALUES_YAML_FILE>

相关文章:

离线安装 K3S

一、前言 简要记录一下离线环境下 K3S 的搭建&#xff0c;版本为 v1.23.17k3s1&#xff0c;使用外部数据库 MySQL 作元数据存储&#xff0c;禁用默认组件&#xff08;coredns、servicelb、traefik、local-storage、metrics-server&#xff09;并使用 Helm 单独安装&#xff08…...

Error系列-常见异常问题解决方案以及系统指令总结

前情提要 作为一名开发&#xff0c;日常工作中会遇到很多报错的情况&#xff0c;希望我的总结可以帮助到小伙伴们~日常工作中也会遇到需要部署项目或者登陆linux系统操作的情况&#xff0c;很多时候需要查找一些命令&#xff0c;于是我决定&#xff0c;要把我日常经常用到的一…...

c 各种例子

1. struct{ int code; float cost; }item,*ptrst; ptrst&item; prtst->code3451 // ptrst->codeitem.code(*ptrst).code 结构与union 的运算符相同&#xff0c;不同的是union 在同一时间内只能存储成员中的一种&#xff0c;其他的成员不真实。 2. c的修饰符声…...

Flowable主要子流程介绍

1. 内嵌子流程 &#xff08;1&#xff09;说明 内嵌子流程又叫嵌入式子流程&#xff0c;它是一个可以包含其它活动、分支、事件&#xff0c;等的活动。我们通常意义上说的子流程通常就是指的内嵌子流程&#xff0c;它表现为将一个流程&#xff08;子流程&#xff09;定…...

通过插件去除Kotlin混淆去除 @Metadata标记

在Kotlin中&#xff0c;Metadata是指描述Kotlin类的元数据。它包含了关于类的属性、函数、注解和其他信息的描述。Metadata的作用主要有以下几个方面&#xff1a; 反射&#xff1a;Metadata可以用于在运行时获取类的信息&#xff0c;包括类的名称、属性、函数等。通过反射&…...

【docker】容器跟宿主机、其他容器通信

说明 容器跟宿主机、其他容器通信的关键在于它们要在同一个网络&#xff0c;或者通过修改路由信息来可以让它们互相之间能够找得到对方的 IP。本文主要介绍让它们在同一个网络的方法。 Docker 自定义网络模式介绍 Docker容器可以通过自定义网络来与宿主机或其他容器进行通信…...

nginx重要配置参数

1、https配置证书 nginx配置https访问_LMD菜鸟先飞的博客-CSDN博客 2、同一个端口代理多个页面 nginx同一个地址端口代理多个页面_同一ip,端口,访问不同页面 nginx_LMD菜鸟先飞的博客-CSDN博客 3、nginx访问压缩数据&#xff0c;加快访问速度 #gzip模块设置gzip on; #开启g…...

Docker 部署 PostgreSQL 服务

拉取最新版本的 PostgreSQL 镜像&#xff1a; $ sudo docker pull postgres:latest在本地预先创建好 data 目录, 用于映射 PostgreSQL 容器内的 /var/lib/postgresql/data 目录。 使用以下命令来运行 PostgreSQL 容器: $ sudo docker run -itd --name postgres -e POSTGRES_…...

【通信误码】python实现-附ChatGPT解析

1.题目 通信误码 时间限制: 1s 空间限制: 32MB 限定语言: 不限 题目描述: 信号传播过程中会出现一些误码,不同的数字表示不同的误码ID, 取值范围为1~65535,用一个数组“记录误码出现的情况。 每个误码出现的次数代表误码频度, 请找出记录中包含频度最高误码的最小子数组长度…...

人与机器只能感知到可以分类的事物?

众所周知&#xff0c;人与机器都能够感知和分类事物。人类拥有感官系统&#xff0c;如视觉、听觉、嗅觉、触觉和味觉&#xff0c;可以通过感知事物的外部特征和属性来进行分类。机器可以通过传感器和算法来感知和分类事物&#xff0c;比如计算机视觉技术可以通过图像和视频数据…...

2023华为杯数学建模竞赛E题

一、前言 颅内出血&#xff08;ICH&#xff09;是由多种原因引起的颅腔内出血性疾病&#xff0c;既包括自发性出血&#xff0c;又包括创伤导致的继发性出血&#xff0c;诊断与治疗涉及神经外科、神经内科、重症医学科、康复科等多个学科&#xff0c;是临床医师面临的重要挑战。…...

AIX360-CEMExplainer: MNIST Example

CEMExplainer: MNIST Example 这一部分屁话有点多&#xff0c;导包没问题的话可以跳过加载MNIST数据集加载经过训练的MNIST模型加载经过训练的卷积自动编码器模型&#xff08;可选&#xff09;初始化CEM解释程序以解释模型预测解释输入实例获得相关否定&#xff08;Pertinent N…...

TouchGFX之自定义控件

在创建应用时&#xff0c;您可能需要TouchGFX中没有包含的控件。在创建应用时&#xff0c;您可能需要TouchGFX中没有包含的控件。但有时此法并不够用&#xff0c;当您需要全面控制帧缓冲时&#xff0c;您需要使用自定义控件法。 TouchGFX Designer目前不支持自定义控件的创建。…...

Python中match...case的用法

在C语言中有switch...case语句&#xff0c;Pthon3.10之前应该是没有类似语法&#xff0c;从Python3.10开始引入match...case与switch分支语句用法类似&#xff0c;但有细微差别&#xff0c;总结如下&#xff1a; 1.语法 肉眼可见的是关键词从switch变成了match&#xff0c;同…...

深度学习自学笔记二:逻辑回归和梯度下降法

目录 一、逻辑回归 二、逻辑回归的代价函数 三、梯度下降法 一、逻辑回归 逻辑回归是一种常用的二分类算法&#xff0c;用于将输入数据映射到一个概率输出&#xff0c;表示为属于某个类别的概率。它基于线性回归模型&#xff0c;并使用了sigmoid函数作为激活函数。 假设我们…...

【Element】通知 Notification

ElementUI 弹出通知 created() {const h this.$createElementconst that thisthis.$notify({onClose: function () {that.do()},type: warning,duration: 5000, // 5秒后隐藏offset: 0, // 距离顶部dangerouslyUseHTMLString: false, showClose: false,customClass: notify-…...

vue+express、gitee pm2部署轻量服务器(20230923)

一、代码配置 前后端接口都保持 127.0.0.1:3000 vue 项目 创建文件 pm2.config.cjs module.exports {apps: [{name: xin-web, // 应用程序的名称script: npm, // 启动脚本args: run dev, // 启动脚本的参数cwd: /home/vue/xin_web, // Vite 项目的根目录interpreter: none,…...

前端教程-H5游戏开发

Egret EGRETIA RC 版本正式发布 从端到云一站式区块链游戏开发工作流 官网 Laya Air 在渲染模式上&#xff0c;LayaAir 支持 Canvas 和 WebGL 两种方式&#xff1b;在工具流的支持程度上&#xff0c;主要是提供了 LayaAir IDE。LayaAir IDE 包括代码模式与设计模式&#xff…...

Nginx 关闭/屏蔽 PUT、DELETE、OPTIONS 请求

1、修改 nginx 配置 在 nginx 配置文件中&#xff0c;增加如下配置内容&#xff1a; if ($request_method !~* GET|POST|HEAD) {return 403; }修改效果如下&#xff1a; 2、重启 nginx 服务 systemctl restart nginx或者 service nginx restart3、功能验证 使用如下方式…...

【React】React概念、特点和Jsx基础语法

React是什么&#xff1f; React 是一个用于构建用户界面的 JavaScript 库。 是一个将数据渲染为 HTML 视图的开源 JS 库它遵循基于组件的方法&#xff0c;有助于构建可重用的 UI 组件它用于开发复杂的交互式的 web 和移动 UI React有什么特点 使用虚拟 DOM 而不是真正的 DO…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...