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

离线部署kubernetes

麒麟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/16kubeadm 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.xdnf.cn/news/1681.html

相关文章:

  • DeepSeek系列(7):行业专属应用
  • Unity后处理全解析:从入门到优化
  • 序论文42 | patch+MLP用于长序列预测
  • C语言教程(十四):C 语言指针详解
  • 倚光科技:微透镜阵列低成本加工新范式
  • 【数据可视化-27】全球网络安全威胁数据可视化分析(2015-2024)
  • Linux基础命令
  • 容器修仙传 我的灵根是Pod 第10章 心魔大劫(RBAC与SecurityContext)
  • 免费版还是专业版?Dynadot 域名邮箱服务选择指南
  • 深度学习物理信息神经网络PINN+大模型辅助编程​
  • 如何在 Postman 中,自动获取 Token 并将其赋值到环境变量
  • 整平机:精密制造的“隐形守护者”
  • PCB封装主要组成元素
  • 10天学会嵌入式技术之51单片机-day-7
  • docker
  • 通付盾入选苏州市网络和数据安全免费体验目录,引领企业安全能力跃升
  • 智能小助手部署 Win10 + ollama的Deepseek + CentOS+ maxKB
  • C语言结构体和union内存对齐
  • 3.4/Q1,GBD数据库最新文章解读
  • 新增优惠券
  • 如何计算光伏电站的收益率
  • PyQt6基础_QProgressDialog
  • Discuz!+DeepSeek赋能虎跃办公:传统网址导航的智能进化之路
  • Python实例题:使用Pvthon3编写系列实用脚本
  • 【Java】jdk8安装——英文版
  • Java快速上手之实验4(接口回调)
  • 第13章:MCP服务端项目开发实战:向量检索
  • 如何在Spring Boot中配置自定义端口运行应用程序
  • 2025上海车展:光峰科技全球首发“灵境”智能车载光学系统
  • linux 中断子系统 层级中断编程