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

离线部署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-

相关文章:

  • 使用localStorage的方式存储数据,刷新之后,无用户消息,需要重新登录,,localStorage 与 sessionStorage 的区别
  • 深度学习前沿 | TransNeXt:仿生聚合注意力引领视觉感知新时代
  • [Mac] 使用homebrew安装miniconda
  • 发币流程是什么,需要多少成本?
  • Sass的学习
  • SiamMask中的分类分支、回归分支与Mask分支,有何本质差异?
  • Java大师成长计划之第2天:面向对象编程在Java中的应用
  • Vue实战(08)解决 Vue 项目中路径别名 `@` 在 IDE 中报错无法识别的问题
  • Python爬虫实战:移动端逆向工具Fiddler调试详解
  • Python 爬虫实战 | 企名科技
  • 【产品经理从0到1】原型及Axure介绍
  • 前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程
  • http协议、全站https
  • 【盈达科技】GEO(生成式引擎优化)底层逻辑
  • 【MongoDB】卸载、安装低版本
  • 如何管理“完美主义”导致的进度拖延
  • Spring boot 中的IOC容器对Bean的管理
  • GNOME扩展入门:日期时间
  • MODBUS转EtherNetIP边缘计算网关配置优化:Logix5000与ATV340高效数据同步与抗干扰方案
  • shadcn/radix-ui的tooltip高度定制arrow位置
  • 五粮液一季度净利增长5.8%,今年营收与宏观经济指标保持一致
  • 刘非履新浙江省委常委、杭州市委书记,曾在吉湘云多省任职
  • 政治局会议:要提高中低收入群体收入,设立服务消费与养老再贷款
  • 因商标近似李小龙形象被裁定无效,真功夫起诉国家知产局,法院判了
  • “五一”前多地市监部门告诫经营者:对预订客房不得毁约提价
  • 证券时报:落实“非禁即入” ,让创新活力充分涌流