环境准备和服务器规划部署前提已知条件:


环境准备与服务器规划总表

类别

配置项

详细信息

操作系统

版本

Ubuntu 25.04(所有节点)

容器运行时

Docker 版本

Docker 24.0.6(所有节点)

Kubernetes

版本

Kubernetes 1.23(所有节点)

服务器角色

节点名称与IP

Master: k8s-master1 (192.168.100.10)

Node1: k8s-node1 (192.168.100.11)

Node2: k8s-node2 (192.168.100.12)

网络规划

Pod 子网

10.244.0.0/16

 

Service 子网

10.96.0.0/12 (默认)

防火墙

需开放端口

- Master: 6443, 2379-2380, 10250-10255

- Node: 10250, 30000-32767

系统配置

禁用 Swap

所有节点需关闭 Swap 并永久禁用

 

主机名与 hosts 解析

所有节点需配置 /etc/hosts 包含各节点 IP 与主机名映射

离线仓库

本地 APT 仓库

所有节点通过 /opt/local-apt-repo 安装依赖包

 

私有镜像仓库地址

192.168.100.10:5000(运行在 Master 节点)


服务器节点明细表

节点名称

角色

IP 地址

核心组件

k8s-master1

Master

192.168.100.10

kube-apiserver, kube-controller-manager,
kube-scheduler, etcd, Docker, kubeadm, kubelet, kubectl, 私有镜像仓库

k8s-node1

Worker

192.168.100.11

Docker, kubeadm, kubelet

k8s-node2

Worker

192.168.100.12

Docker, kubeadm, kubelet


依赖资源说明

  1. 外网机器
    • 需临时连接外网以下载所有依赖包和镜像(仅需一台机器操作,后续离线使用)。
  2. 文件传输
    • 离线包 offline-k8s.tar.gz 需通过 U盘/SCP 分发到所有节点。
  3. 系统一致性
    • 所有节点需保持时间同步(建议安装 chrony 或 ntp)。

此表格可作为部署前的检查清单,确保所有环境和规划符合要求后再执行后续步骤。

以下是Ubuntu 25.04离线部署Kubernetes
1.23集群的详细步骤:


一、外网环境准备(需连接外网的机器k8s-master1

1. 下载所有依赖包及镜像

bash

# 创建缓存目录

mkdir -p
/opt/offline/{debs,docker,images,k8s}

cd /opt/offline

# 添加Kubernetes
APT仓库(Ubuntu 25.04可能需要调整版本代号)

cat <<EOF >
/etc/apt/sources.list.d/kubernetes.list

deb [arch=amd64] https://apt.kubernetes.io/
kubernetes-xenial main

EOF

curl -s
https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

# 更新并下载kubeadm/kubelet/kubectl
1.23.x

apt-get update

apt-get download kubeadm=1.23.*
kubelet=1.23.* kubectl=1.23.*

# 递归下载依赖

apt-get install -y --download-only docker.io=24.0.6*
kubeadm=1.23.*

cp /var/cache/apt/archives/*.deb ./debs/

# 下载Docker镜像

docker pull registry:2

docker save registry:2 -o
./images/registry.tar

# 下载Kubernetes镜像

kubeadm config images list
--kubernetes-version 1.23.0 > ./k8s-images.txt

while read img; do

docker pull $img

docker save $img -o ./images/$(basename $img | sed 's/:/_/').tar

done < ./k8s-images.txt

2. 打包文件并传输到离线环境

bash

tar czvf offline-k8s.tar.gz /opt/offline

# 使用U盘或SCP将offline-k8s.tar.gz复制到各节点


二、离线环境配置(所有节点执行)

1. 解压离线包并创建本地APT仓库

bash

# 解压到各节点

tar xzvf offline-k8s.tar.gz -C /opt

# 创建本地APT源

apt-get install -y dpkg-dev

mkdir -p /opt/local-apt-repo

cp /opt/offline/debs/*.deb
/opt/local-apt-repo/

cd /opt/local-apt-repo

dpkg-scanpackages . /dev/null | gzip -9c
> Packages.gz

# 配置APT源

cat <<EOF >
/etc/apt/sources.list.d/local-apt.list

deb [trusted=yes] file:/opt/local-apt-repo
./

EOF

apt-get update

2. 安装Docker和Kubernetes工具

bash

# 安装Docker

apt-get install -y docker.io=24.0.6*

# 安装kubeadm/kubelet/kubectl

apt-get install -y kubeadm=1.23.*
kubelet=1.23.* kubectl=1.23.*

# 启动服务

systemctl enable docker kubelet

systemctl start docker

3. 配置私有镜像仓库

bash

# 导入Registry镜像

docker load -i
/opt/offline/images/registry.tar

docker run -d -p 5000:5000 --restart=always
--name registry registry:2

# 配置Docker信任私有仓库

cat <<EOF >
/etc/docker/daemon.json

{

"insecure-registries": ["192.168.100.10:5000"]

}

EOF

systemctl restart docker

# 导入Kubernetes镜像到仓库

for img in /opt/offline/images/k8s/*.tar;
do

docker load -i $img

image_name=$(docker inspect --format='{{.RepoTags}}' $(tar xO $img
manifest.json | jq -r '.[0].Config') | sed 's/[\[\]"]//g')

new_tag="192.168.100.10:5000/$(basename $image_name | sed
's|/|_|g')"

docker tag $image_name $new_tag

docker push $new_tag

done


三、Kubernetes集群初始化

1. Master节点配置

bash

# 生成kubeadm配置文件

cat <<EOF > kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta3

kind: InitConfiguration

nodeRegistration:

kubeletExtraArgs:

pod-infra-container-image: "192.168.100.10:5000/pause:3.6"

---

apiVersion: kubeadm.k8s.io/v1beta3

kind: ClusterConfiguration

imageRepository:
"192.168.100.10:5000"

kubernetesVersion: "1.23.0"

networking:

podSubnet: "10.244.0.0/16"

EOF

# 初始化Master

kubeadm init --config=kubeadm-config.yaml

# 配置kubectl

mkdir -p $HOME/.kube

cp /etc/kubernetes/admin.conf
$HOME/.kube/config

chown $(id -u):$(id -g) $HOME/.kube/config

# 安装网络插件(Flannel)

kubectl apply -f
https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

2. Node节点加入集群

bash

# 在Master节点查看加入命令

kubeadm token create --print-join-command

# 在Node节点执行加入命令(示例)

kubeadm join 192.168.100.10:6443 --token
<token> --discovery-token-ca-cert-hash sha256:<hash>


四、验证集群状态

bash

# 在Master节点执行

kubectl get nodes

kubectl get pods -A


关键说明

  1. 网络规划:确保所有节点间网络互通,防火墙开放6443、2379-2380、10250-10255等端口。
  2. 镜像替换:所有Kubernetes组件镜像会自动从私有仓库192.168.100.10:5000拉取。
  3. 离线维护:后续新增镜像需在外网环境下载后,通过相同流程导入私有仓库。
  4. 系统配置:所有节点需关闭swap并设置正确的hosts解析:

bash

echo "192.168.100.10 k8s-master1

192.168.100.11 k8s-node1

192.168.100.12 k8s-node2" >>
/etc/hosts

swapoff -a

sed -i '/ swap / s/^/#/' /etc/fstab

此方案通过本地APT仓库和私有镜像仓库实现完全离线部署,适用于严格的内网环境。

unbuntu离线部署K8S集群的更多相关文章

  1. Ansible自动化部署K8S集群

    Ansible自动化部署K8S集群 1.1 Ansible介绍 Ansible是一种IT自动化工具.它可以配置系统,部署软件以及协调更高级的IT任务,例如持续部署,滚动更新.Ansible适用于管理企 ...

  2. 【02】Kubernets:使用 kubeadm 部署 K8S 集群

    写在前面的话 通过上一节,知道了 K8S 有 Master / Node 组成,但是具体怎么个组成法,就是这一节具体谈的内容.概念性的东西我们会尽量以实验的形式将其复现. 部署 K8S 集群 互联网常 ...

  3. 部署K8S集群

    1.Kubernetes 1.1.概念 kubernetes(通常称为k8s)用于自动部署.扩展和管理容器化应用程序的开源系统.它旨在提供“跨主机集群的自动部署.扩展以及运行应用程序容器的平台”.支持 ...

  4. 菜鸟系列k8s——快速部署k8s集群

    快速部署k8s集群 1. 安装Rancher Rancher是业界唯一完全开源的企业级容器管理平台,为企业用户提供在生产环境中落地使用容器所需的一切功能与组件. Rancher2.0基于Kuberne ...

  5. 使用RKE快速部署k8s集群

    一.环境准备 1.1环境信息 IP地址 角色 部署软件 10.10.100.5 K8s Master Etcd.Control 10.10.100.17 K8s Worker1 Worker 10.1 ...

  6. 使用kubeadm部署k8s集群[v1.18.0]

    使用kubeadm部署k8s集群 环境 IP地址 主机名 节点 10.0.0.63 k8s-master1 master1 10.0.0.63 k8s-master2 master2 10.0.0.6 ...

  7. centos7.8 安装部署 k8s 集群

    centos7.8 安装部署 k8s 集群 目录 centos7.8 安装部署 k8s 集群 环境说明 Docker 安装 k8s 安装准备工作 Master 节点安装 k8s 版本查看 安装 kub ...

  8. 二进制方法-部署k8s集群部署1.18版本

    二进制方法-部署k8s集群部署1.18版本 1. 前置知识点 1.1 生产环境可部署kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kuberadm Kubea ...

  9. 通过kubeadm工具部署k8s集群

    1.概述 kubeadm是一工具箱,通过kubeadm工具,可以快速的创建一个最小的.可用的,并且符合最佳实践的k8s集群. 本文档介绍如何通过kubeadm工具快速部署一个k8s集群. 2.主机规划 ...

  10. kubernetes系列03—kubeadm安装部署K8S集群

    本文收录在容器技术学习系列文章总目录 1.kubernetes安装介绍 1.1 K8S架构图 1.2 K8S搭建安装示意图 1.3 安装kubernetes方法 1.3.1 方法1:使用kubeadm ...

随机推荐

  1. DOS批处理小案例应用分享 - 整理桌面

    想必大多数办公的同志都有个习惯----往桌面上堆放文件,各种文件.几天下来桌面就杂乱无章,乱七八糟的.能做一个快速清理的功能,是很有实用价值的.比如采用Windows自带的DOS批处理系统,就可快速搭 ...

  2. Vulnhub-Node

    利用信息收集拿到路径得到账户密码,下载备份文件,base64解密后,利用fcrackzip爆破zip压缩包,得到一个文件,查看app.js,发现泄露的账户密码,连接ssh,成功连接,利用ubuntu历 ...

  3. Selenium KPI接口 窗口句柄

    应用场景: 当单击主页上的链接时,将打开一个新窗口.在新打开的窗口中,无法执行任何操作,因为焦点仍然在主页Web驱动程序上. 这时候,我们需要把焦点定位到新打开的页面上. 先获取所有窗口a=drive ...

  4. uniapp 截屏扫码

    最近开发功能遇到个需求,用户点击某个操作之后,需要截取当前屏幕内容,并扫码识别屏幕截图中的二维码,代码如下: 首先将代码抽离到外部文件中,以便复用: // 截图 export function tak ...

  5. 解决 Mac(M1/M2)芯片,使用node 14版本

    前言 nvm 在安装 Node.js v14.21.3 时,报错: nvm install 14 Downloading and installing node v14.21.3... Downloa ...

  6. 无法解析@NotBlank

    当碰到无法解析的时候,一般都是地址写错了,找不到相应的路劲 我是全局能搜到这个包@NotBlank,在jakarta.validation-api包里面,但是我网上搜https://www.cnblo ...

  7. 【Linux】3.6 组管理和权限管理

    组管理和权限管理 1. Linux组基本介绍 Linux中每个用户属于一个组,不能独立于组以外.所以在Linux中每个文件存在组的概念: 所有者 所在组 其他组 改变用户所在组 2. 文件/目录所有者 ...

  8. 【Maven】POM基本概念

    目前的技术在开发中存在的问题: 一个项目就是一个工程 如果项目非常庞大,就不适合继续使用 package 来划分模块.最好是每一个模块对应一个工程,利于分工协作. 借助于 Maven 就可以将一个项目 ...

  9. Debian 下安装 Nginx

    Debian 下安装 Nginx 非常容易. apt update apt install nginx 输入以下命令查看是否可以正常访问, 顺便验证下安装是否成功. curl -I 127.0.0.1 ...

  10. CoreOS 更新重启后, 所有容器服务全部停掉了

    今天有几个服务出问题了,上去看了下,这台 CoreOS 下的所有容器服务竟然全部停掉了,好奇怪,启动容器时明明加了--detach参数了呀. 问题原因 想了想,会不是是 CoreOS 更新重启导致的, ...