离线部署kubernetes

news2025/4/25 11:14:38

麒麟Linux服务器 AMR架构

🧰 离线部署 Kubernetes v1.25.9(麒麟系统 + Docker)

一、验证Docker部署状态 ‌检查Docker服务运行状态‌

systemctl status docker 预期输出应显示 Active: active (running),表明服务已启动‌18。 ‌运行测试容器验证功能‌

docker run --rm hello-world 若输出包含 Hello from Docker!,表明Docker引擎及容器运行时正常‌8。 ‌查看Docker版本信息‌

docker version 确认 Client 和 Server 版本信息一致且无报错‌18。

✅ 你需要准备的资源(在联网的 Windows 上下载)

{ "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"], "exec-opts": ["native.cgroupdriver=cgroupfs"] }

  1. Kubernetes 安装包

    • 下载 Linux 版二进制工具: https://dl.k8s.io/release/v1.25.9/bin/linux/amd64/

      • kubeadm

      • kubelet

      • kubectl

    • 或通过离线 yum 源(我可以帮你整理)

  2. Kubernetes 必需镜像 使用以下命令获取 Kubernetes 所需镜像列表(版本 1.25.9):

    bash
    ​
    ​
    复制编辑
    kubeadm config images list --kubernetes-version=v1.25.9

    输出大概是:

    bash复制编辑registry.k8s.io/kube-apiserver:v1.25.9
    registry.k8s.io/kube-controller-manager:v1.25.9
    registry.k8s.io/kube-scheduler:v1.25.9
    registry.k8s.io/kube-proxy:v1.25.9
    registry.k8s.io/pause:3.8
    registry.k8s.io/etcd:3.5.4-0
    registry.k8s.io/coredns/coredns:v1.9.3

    然后:

    • 在 Windows 上用 WSL/Docker Desktop 拉取这些镜像;

    • docker save 保存成 tar 包:

      bash
      ​
      ​
      复制编辑
      docker save -o k8s-images.tar <镜像列表>
  3. 网络插件 Flannel(或 Calico)

    • 推荐下载 flannel yaml: https://github.com/flannel-io/flannel/releases

    • 或使用这个命令保存 YAML 文件:

      bash
      ​
      ​
      复制编辑
      curl -O https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

💾 将这些文件复制到麒麟系统中

推荐用以下方式之一:

  • U 盘或移动硬盘;

  • Windows → Linux 的 scp

  • WinSCP 工具图形化上传;


🏗️ 麒麟服务器离线安装步骤

前提:在麒麟服务器上新建一个目录存放所有离线资源:

mkdir -p /root/k8s-offline

cd /root/k8s-offline

1️⃣ 安装 kubelet/kubectl/kubeadm

将下载好的三大组件移动到 /usr/bin/ 目录,并赋予执行权限:

chmod +x kubeadm kubelet kubectl
mv kubeadm kubelet kubectl /usr/bin/

2️⃣ 配置 systemd 启动 kubelet

2.1 创建 systemd 配置目录

sudo mkdir -p /etc/systemd/system/kubelet.service.d

2.2 创建 kubelet 配置文件

编辑 /etc/systemd/system/kubelet.service.d/10-kubeadm.conf,内容如下:

sudo vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

[Service] Environment="KUBELET_KUBEADM_ARGS=--container-runtime-endpoint=unix:///var/run/cri-dockerd.sock --cgroup-driver=cgroupfs/systemd" ExecStart= ExecStart=/usr/bin/kubelet $KUBELET_KUBEADM_ARGS

检查docker采取哪个驱动:docker info | grep -i "Cgroup Driver"

2.3 创建主服务文件

编辑 /etc/systemd/system/kubelet.service,内容如下:

[Unit] Description=kubelet: The Kubernetes Node Agent Documentation=Kubernetes Documentation | Kubernetes After=network.target

[Service] ExecStart=/usr/bin/kubelet Restart=always StartLimitInterval=0 RestartSec=10

[Install] WantedBy=multi-user.target

2.4 重载并启用服务

systemctl daemon-reexec systemctl daemon-reload systemctl enable kubelet

3️⃣ 加载镜像

删除镜像 docker rmi <镜像名或镜像ID>  
​
docker load -i kube-apiserver-v1.25.9-arm64.tar
docker load -i kube-controller-manager-v1.25.9-arm64.tar
docker load -i kube-scheduler-v1.25.9-arm64.tar
docker load -i kube-proxy-v1.25.9-arm64.tar
docker load -i pause-3.8-arm64.tar
docker load -i etcd-3.5.6-0-arm64.tar
docker load -i coredns-v1.9.3-arm64.tar
​
​
加载完成后,你可以通过以下命令来确认镜像的架构:
docker inspect <镜像名> | grep Architecture
例如:docker inspect kube-apiserver:v1.25.9 | grep Architecture     --"Architecture": "arm64"

4️⃣ 关闭 swap、优化内核

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
modprobe br_netfilter
sysctl -w net.bridge.bridge-nf-call-iptables=1
sysctl -p

5️⃣ 初始化 Kubernetes

kubeadm init --kubernetes-version=1.25.9 \
  --apiserver-advertise-address=192.168.1.210 \
  --pod-network-cidr=10.244.0.0/16
  
kubeadm init --kubernetes-version=1.25.9 \
  --apiserver-advertise-address=172.20.10.9 \
  --pod-network-cidr=10.244.0.0/16
  
  
如果有报错:!!    [ERROR CRI]: container runtime is not running: output: time="2025-04-18T00:03:22-07:00" level=fatal msg="unable to determine runtime API version: rpc error: code = Unavailable desc = connection error: desc = \"transport: Error while dialing dial unix /var/run/dockershim.sock: connect: no such file or directory\""
​
一.安装 crictl
打开浏览器,访问 https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.25.0/crictl-v1.25.0-linux-amd64.tar.gz(已下载)
下载后解压,得到一个可执行文件 crictl
把 crictl 拷贝到你的 Kylin 服务器,比如你现在的 /k8s-offline 目录。
然后在服务器执行:
chmod +x crictl
mv crictl /usr/bin/
验证:
which crictl
crictl --version
​
​
二.安装cri-dockerd   Kubernetes v1.24 起,默认已移除对 Docker 的直接支持(即 Dockershim 被移除了)。
​
1. 你需要准备以下资源并从外网下载 ()cri-dockerd文件
2.创建 cri-dockerd.service
sudo tee /etc/systemd/system/cri-dockerd.service > /dev/null <<EOF
[Unit]
Description=CRI interface for Docker Application Container Engine
Documentation=https://docs.mirantis.com
After=network.target docker.service
Requires=docker.service
​
[Service]
Type=notify
--ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd://
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint=unix:///var/run/cri-dockerd.sock
ExecReload=/bin/kill -s HUP \$MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-999
​
[Install]
WantedBy=multi-user.target
EOF
3. 创建 cri-dockerd.socket
sudo tee /etc/systemd/system/cri-dockerd.socket > /dev/null <<EOF
[Unit]
Description=CRI Docker Socket for the API
PartOf=cri-dockerd.service
​
[Socket]
ListenStream=/var/run/cri-dockerd.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
​
[Install]
WantedBy=sockets.target
EOF
​
修改完重启:
sudo systemctl daemon-reload
sudo systemctl restart cri-docker.service
sudo systemctl restart kubelet
​
​
​
​
4.# 移动可执行文件
install -o root -g root -m 0755 cri-dockerd /usr/bin/cri-dockerd
5.# 安装 systemd 配置(如有)
cp cri-docker.service cri-docker.socket /etc/systemd/system/
​
三.安装 conntrack 的命令如下:
在联网的机器上执行: yum install --downloadonly --downloaddir=./conntrack conntrack
这将把 conntrack 的 RPM 包下载到当前目录。
安装:sudo rpm -ivh /root/rpms/conntrack-*.rpm  --修改自己的安装路劲
​
​
sudo rpm -ivh libnetfilter_cthelper-1.0.0-15.el8.aarch64.rpm \
             libnetfilter_cttimeout-1.0.0-11.el8.aarch64.rpm \
             libnetfilter_queue-1.0.4-3.el8.aarch64.rpm \
             conntrack-tools-1.4.4-11.el8.aarch64.rpm
​
​
四:部署 socat
先从联网机器下载 RPM 包 : yum install --downloadonly --downloaddir=./socat socat
安装: sudo rpm -ivh /root/rpms/socat-*.rpm    --修改自己的安装路劲
 
验证:
conntrack --version
socat -V
​
在联网的机器上执行:
​
​
6.# 重新加载 systemd 配置并启动
# 重新加载 systemd
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
​
# 启用服务开机自启
sudo systemctl enable cri-dockerd.socket
sudo systemctl enable cri-dockerd.service
​
# 启动服务
sudo systemctl start cri-dockerd.socket
sudo systemctl start cri-dockerd.service
​
# 查看状态(贴这个输出)验证
sudo systemctl status cri-dockerd.service
sudo systemctl status kubelet
systemctl status kubelet -l
journalctl -u kubelet -xe --no-pager
​
验证 kube-apiserver 容器是否运行
crictl ps | grep kube-apiserver
​
​
7.执行
kubeadm init \
  --kubernetes-version=1.25.9 \
  --apiserver-advertise-address=192.168.1.210 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock 
  
kubeadm init \
  --kubernetes-version=1.25.9 \
  --apiserver-advertise-address=172.20.10.9 \
  --pod-network-cidr=10.244.0.0/16 \
  --cri-socket=unix:///var/run/cri-dockerd.sock
  
  
  
如果需要重新初始化:-------
kubeadm reset -f
rm -rf /etc/cni/net.d /var/lib/etcd /etc/kubernetes
systemctl restart kubelet
​
​

6️⃣ 设置 kubectl 配置

mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

7️⃣ 安装 Flannel 网络插件

kubectl apply -f kube-flannel.yml

8️⃣ 去除 master 污点,让其也能跑 Pod:

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬虫学习——获取动态网页信息

对于静态网页可以直接研究html网页代码实现内容获取&#xff0c;对于动态网页绝大多数都是页面内容是通过JavaScript脚本动态生成(也就是json数据格式)&#xff0c;而不是静态的&#xff0c;故需要使用一些新方法对其进行内容获取。凡是通过静态方法获取不到的内容&#xff0c;…

创新项目实训开发日志4

一、开发简介 核心工作内容&#xff1a;logo实现、注册实现、登录实现、上传gitee 工作时间&#xff1a;第十周 二、logo实现 1.设计logo 2.添加logo const logoUrl new URL(/assets/images/logo.png, import.meta.url).href <div class"aside-first">…

常见接口测试常见面试题(JMeter)

JMeter 是 Apache 提供的开源性能测试工具&#xff0c;主要用于对 Web 应用、REST API、数据库、FTP 等进行性能、负载和功能测试。​它支持多种协议&#xff0c;如 HTTP、HTTPS、JDBC、SOAP、FTP 等。 在一个线程组中&#xff0c;JMeter 的执行顺序通常为&#xff1a;配置元件…

计算机组成与体系结构:缓存(Cache)

目录 为什么需要 Cache&#xff1f; &#x1f9f1; Cache 的分层设计 &#x1f539; Level 1 Cache&#xff08;L1 Cache&#xff09;一级缓存 &#x1f539; Level 2 Cache&#xff08;L2 Cache&#xff09;二级缓存 &#x1f539; Level 3 Cache&#xff08;L3 Cache&am…

Flutter 在全新 Platform 和 UI 线程合并后,出现了什么大坑和变化?

Flutter 在全新 Platform 和 UI 线程合并后&#xff0c;出现了什么大坑和变化&#xff1f; 在两个月前&#xff0c;我们就聊过 3.29 上《Platform 和 UI 线程合并》的具体原因和实现方式&#xff0c;而事实上 Platform 和 UI 线程合并&#xff0c;确实为后续原生语言和 Dart 的…

stm32之GPIO函数详解和上机实验

目录 1.LED和蜂鸣器1.1 LED1.2 蜂鸣器 2.实验2.1 库函数&#xff1a;RCC和GPIO2.1.1 RCC函数1. RCC_AHBPeriphClockCmd2. RCC_APB2PeriphClockCmd3. RCC_APB1PeriphClockCmd 2.1.2 GPIO函数1. GPIO_DeInit2. GPIO_AFIODeInit3. GPIO_Init4. GPIO_StructInit5. GPIO_ReadInputDa…

用 PyQt5 和 asyncio 打造接口并发测试 GUI 工具

接口并发测试是测试工程师日常工作中的重要一环&#xff0c;而一个直观的 GUI 工具能有效提升工作效率和体验。本篇文章将带你用 PyQt5 和 asyncio 从零实现一个美观且功能实用的接口并发测试工具。 我们将实现以下功能&#xff1a; 请求方法选择器 添加了一个下拉框 QComboBo…

Qt实战之将自定义插件(minGW)显示到Qt Creator列表的方法

Qt以其强大的跨平台特性和丰富的功能&#xff0c;成为众多开发者构建图形用户界面&#xff08;GUI&#xff09;应用程序的首选框架。而在Qt开发的过程中&#xff0c;自定义插件能够极大地拓展应用程序的功能边界&#xff0c;让开发者实现各种独特的、个性化的交互效果。想象一下…

【Vue】TypeScript与Vue3集成

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Vue 文章目录 1. 前言2. 环境准备与基础搭建2.1. 安装 Node.js 与 npm/yarn/pnpm2.2. 创建 Vue3 TypeScript 项目2.2.1. 使用 Vue CLI2.2.2. 使用 Vite&#xff08;推荐&#xff09;2.2.3. 目录结构简述 3. Vue3 TS 基础语法整…

Linux之七大难命令(The Seven Difficult Commands of Linux)

Linux之七大难命令 、背景 作为Linux的初学者&#xff0c;肯定要先掌握高频使用的指令&#xff0c;这样才能让Linux的学习在短时间内事半功倍。但是&#xff0c;有些指令虽然功能强大&#xff0c;但因参数多而让初学者们很害怕&#xff0c;今天介绍Linux中高频使用&#xff0…

5.3.1 MvvmLight以及CommunityToolkit.Mvvm介绍

MvvmLight、CommunityToolkit.Mvvm是开源包,他们为实现 MVVM(Model-View-ViewModel)模式提供了一系列实用的特性和工具,能帮助开发者更高效地构建 WPF、UWP、MAUI 等应用程序。 本文介绍如下: 一、使用(旧)的MvvmLight库 其特点如下,要继承的基类是ViewModelBase;且使用…

Dbeaver 执行 SQL 语句和执行 SQL 脚本的区别

执行 SQL 语句 执行 SQL 语句对应图标&#xff1a; 适用于执行单个 SQL 的情形&#xff0c;默认是在光标处或选中的文本上执行 SQL 查询。 实际上同时选择多个 SQL 并通过该方式去执行也可能成功&#xff0c;只是有失败的风险。因此不建议使用它来同时执行多个 SQL 语句。 情况…

《Python3网络爬虫开发实战(第二版)》配套案例 spa6

Scrape | Moviehttps://spa6.scrape.center/ 请求影片列表api时&#xff0c;不仅有分页参数&#xff0c;还多了一个token&#xff0c;通过重发请求发现token有时间限制&#xff0c;所以得逆向token的生成代码。 通过xhr断点定位到接口请求位置 刷新页面或者点翻页按钮&#x…

Python基础语法:字面量,注释,关键字,标识符,变量和引用,程序执行的3大流程

目录 字面量&#xff08;数据的类型&#xff09; 字面量的含义 常见字面量类型&#xff08;6种&#xff09; 输出各类字面量&#xff08;print语句&#xff09; 注释&#xff08;单行和多行注释&#xff09; 注释的作用 单行注释和多行注释 单行注释&#xff08;ctrl/&a…

SPL 量化 获取数据

下载数据 我们将股票数据分享在百度网盘上供下载&#xff0c;每工作日更新。 目前可供下载的数据有 A 股的日 K 线数据、股票代码列表和上市公司的基本面数据 下载链接&#xff1a; 百度网盘 下载数据的文件格式为 btx&#xff0c;是 SPL 的特有二进制格式。 btx 称为集文…

Rust 学习笔记:安装 Rust

Rust 学习笔记&#xff1a;安装 Rust Rust 学习笔记&#xff1a;安装 Rust在 Windows 上安装 Rust命令行创建 Rust 项目在 Mac/Linux 上安装 Rust一些命令升级卸载cargo -hrustc -h 安装 RustRoverrust-analyzer Rust 学习笔记&#xff1a;安装 Rust 在 Windows 上安装 Rust …

编译 C++ 报错“找不到 g++ 编译器”的终极解决方案(含 Windows/Linux/macOS)

前言 在使用终端编译 C 程序时&#xff0c;报错&#xff1a; 或类似提示&#xff0c;意味着你的系统尚未正确安装或配置 g 编译器。本篇将从零手把手教你在 Windows / Linux / macOS 下安装并配置 g&#xff0c;适用于新手或 C 入门阶段的你。 什么是 g&#xff1f; g 是 GN…

html单页业务介绍源码

源码介绍 html单页业务介绍源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行 效果预览 源码免费获取 html单页业务介绍源码

单体OJ项目

单体项目版本、微服务版还需我再钻研钻研。 项目介绍 在系统前台&#xff0c;管理员可以创建、管理题目;用户可以自由搜索题目、阅读题目、编写并提交代码。 在系统后端&#xff0c;能够根据管理员设定的题目测试用例在代码沙箱 中对代码进行编译、运行、判断输出是否正确。 其…

豆包桌面版 1.47.4 可做浏览器,免安装绿色版

自己动手升级更新办法&#xff1a; 下载新版本后安装&#xff0c;把 C:\Users\用户名\AppData\Local\Doubao\Application 文件夹的文件&#xff0c;拷贝替换 DoubaoPortable\App\Doubao 文件夹的文件&#xff0c;就升级成功了。 再把安装的豆包彻底卸载就可以。 桌面版比网页版…