【k8s】离线部署方案二:搭建自主可控的软件仓库和镜像仓库(repo节点)

news/2024/10/18 8:32:37/

离线部署的两种方法:

  • 方法一:直接将相关安装依赖包上传到各个节点
  • 方法二:搭建自主可控的软件仓库和镜像仓库(repo节点)

此篇主要记录方法二的实现步骤,参考思路如下:

  • k8S之Centos离线安装_k8s离线安装_RocWay007的博客-CSDN博客
  • 注意:自己试了试,其中仅镜像仓库部分的内容能用,其他多少都有点坑,因此这里仅参考整体思路,具体实现还是参考了n篇教程 TAT

目录

  • 离线部署方案二:搭建自主可控的软件仓库和镜像仓库(repo节点)
    • 一、整体思路
    • 二、安装环境说明
    • 三、建立自主可控的软件仓库
      • 1. 整体思路
      • 2. repo节点
      • 3. k8s集群节点
    • 四、建立自主可控的镜像仓库
      • 1. 整体思路
      • 2. 方案一:Registry镜像建立镜像仓库
      • 2. 方案二:Harbor镜像仓库

离线部署方案二:搭建自主可控的软件仓库和镜像仓库(repo节点)

一、整体思路

即:在局域网内(k8s集群之外),搭建一台仓库节点repo,作为软件/镜像仓库,其他节点从它这里获取资源。
部分参考:https://blog.csdn.net/Harry_z666/article/details/128564336(中间有小坑,已修改)

二、安装环境说明

虚拟机:VMware Pro 16
操作系统:CentOS7.x-86_x64
repo:192.168.253.172
master:192.168.253.173
node1:192.168.253.174
node2:192.168.253.175

三、建立自主可控的软件仓库

最开始全部节点,都要关闭防火墙:

systemctl stop firewalld
systemctl disable firewalld
sed -i 's/enforcing/disabled/' /etc/selinux/config
sed -ri 's/.*swap.*/#&/' /etc/fstab

1. 整体思路

整体思路:在一台内网机器(repo)上构建一个yum仓库,并在所有节点上配置yum访问该yum仓库。存在两个方案:

  • 方案一:在repo节点中下载k8s所需的软件包及其所有依赖,并复制到内网上述yum仓库中;
  • 方案二:repo节点下载一个Centos完整镜像包(包含了常用的rpm包),将其挂载出来,再利用nginx去访问即可。

本篇文章使用方案一进行。

2. repo节点

补充:使用yum下载命令 yum install ${软件} --downloadonly --downloaddir=${指定目录}
eg:
yum -y install httpd --downloadonly --downloaddir=/data/repo
yum -y install autossh --downloadonly --downloaddir=/data/repo

下载所需工具依赖包

yum install --downloadonly --downloaddir=/opt/repo ntpdate wget httpd createrepo vim telnet netstat lrzsz

配置国内yum源

yum clean all
yum makecache
yum install -y wget
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install --downloadonly --downloaddir=/opt/repo docker-ce

配置国内kubernetes源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

下载好kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0所需要的依赖包

yum install --downloadonly --downloaddir=/opt/repo  kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
wget --no-check-certificate https://docs.projectcalico.org/v3.25/manifests/calico.yaml
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml

将下载软件包的目录制作为yum源

createrepo /opt/repo/
createrepo --update /opt/repo
cd /opt/repo
yum install -y httpd
systemctl start httpd && systemctl enable httpd
ln -s /opt/repo /var/www/html/
cd ~

3. k8s集群节点

在每个节点创建离线环境repo源

cat > /etc/yum.repos.d/local.repo << EOF
[local]
name=local
baseurl=http://192.168.253.172/repo/
enabled=1
gpgcheck=0
EOF
yum clean all && yum makecache

测试

yum -y install docker-ce

其余安装步骤,见之前普通安装k8s集群教程:【k8s】VMware16搭建k8s集群(亲试无坑)

四、建立自主可控的镜像仓库

1. 整体思路

同样在repo节点上构建一个镜像仓库,并在所有节点上配置docker访问该镜像仓库。在能连接公网的repo节点上 ,将所需的各镜像复制到内网,并部署到上述镜像仓库。有两种方案:

  • 方案一:使用docker官方提供的Registry镜像建立镜像仓库
  • 方案二:harbor镜像仓库

2. 方案一:Registry镜像建立镜像仓库

安装docker(仓库和节点)

yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y

启动docker(仓库和节点)

systemctl start docker
systemctl status docker

使用registry制作镜像仓库(仓库)

docker pull registry
docker save -o registry.tar registry
docker load -i registry.tar
docker run -d -p 5000:5000 --restart=always --name registry registry

修改配置文件(仓库和节点)

vim /etc/docker/daemon.json
{
"registry-mirrors":["https://registry.docker-cn.com"],
"insecure-registries":["192.168.253.172:5000"]
}

重启docker(仓库和节点)

systemctl restart docker

拉取镜像(仓库)

docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0

下载镜像(仓库)

docker save -o kube-apiserver.tar registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver
docker load -i kube-apiserver.tar

重新打tag(仓库)

docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.21.0 192.168.253.172:5000/kube-apiserver:hd

上传镜像(仓库)

docker push 192.168.253.172:5000/kube-apiserver:hd

拉取镜像(节点)

docker pull 192.168.253.172:5000/kube-apiserver:hd

2. 方案二:Harbor镜像仓库

在repo节点上,首先下载harbor的压缩包:https://github.com/goharbor/harbor(2.3.2)
然后,解压harbor压缩包到/usr/local目录下面(其他目录也行)

tar -zvxf harbor-offline-installer-v2.3.2.tgz
cd /harbor

修改harbor配置文件harbor.yml(先复制harbor.yml.tmplharbor.yml

cp harbor.yml.tmpl harbor.yml
vim harbor.yml
hostname: 192.168.253.172(本机ip)data_volume: /data/harbor/data# https related config
# https:# https port for harbor, default is 443# port: 443# The path of cert and key files for nginx# certificate: /your/certificate/path# private_key: /your/private/key/path

先安装docker和docker-compose

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce
systemctl start docker
systemctl enable docker
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

安装harbor服务

sh /install.sh(可能需要执行几遍)
docker-compose ps(验证启动情况)

浏览器登录:
输入IP访问:http://192.168.253.172
输入用户名admin和密码Harbor12345即可登录

docker登录:
需要先修改配置文件:vim /usr/lib/systemd/system/docker.service

# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H fd:// --insecure-registry 192.168.253.172 --containerd=/run/containerd/containerd.sock
systemctl daemon-reload
systemctl restart docker
docker-compose up -d(需要在harbor目录(/usr/local/harbor,即docker-compose.yml所在的目录)下执行,启动harbor)
docker login -u admin -p Harbor12345 http://192.168.253.172(可能需要执行几遍)

harbor仓库的使用:

# harbor如何停止与启动
cd harbor       //切换到harbor安装包目录
docker-compose stop   //停止Harbor
docker-compose start  //启动Harbor
# 上传下载镜像
docker tag nginx 192.168.253.172/test/nginx:test(repo节点)
docker push 192.168.253.172/test/nginx:test(repo节点)docker pull 192.168.253.172/test/nginx:test(k8s集群节点)

http://www.ppmy.cn/news/64586.html

相关文章

小灰的基金,亏了67W。。。

2022年基金市场有多差&#xff1f;相信大家都有目共睹。小灰的基金在去年也赔得很惨&#xff0c;还每次写过几篇文章&#xff1a; 跌吧&#xff0c;继续跌吧&#xff0c;小灰的基金已亏损64万。。。 基金亏损84万&#xff0c;小灰反手把银行客户经理投诉了 今年是疫情结束的第一…

“裸奔”时代下该如何保护网络隐私

随着信息技术的普及和发展&#xff0c;个人隐私和数据安全问题也日益受到威胁。“裸奔”时代下&#xff0c;我们该如何有效应对网络攻击、数据泄露和隐私侵犯&#xff0c;有哪些实用的技巧和工具可以帮助我们呢。欢迎大家一起讨论保护网络隐私的方法与策略。 一、引言 随着互联…

招投标系统源码 java招投标系统 招投标系统简介 招投标系统功能设计

项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&#xff0c;以及…

4.HIVE函数

1.hive函数 1.1 空值替换 两个输入&#xff1a;nvl(col,default_num) : 如果colum不为null&#xff0c;返回col.否则返回default_num 多个输入&#xff1a;coalesce(col1, col2, col3, ....) &#xff1a;从左到右找第一个不为null的值 例如&#xff1a;求所有员工的平均薪…

MySQL基础(十)创建和管理表

1. 基础知识 1.1 一条数据存储的过程 存储数据是处理数据的第一步。只有正确地把数据存储起来&#xff0c;我们才能进行有效的处理和分析。否则&#xff0c;只能是一团乱麻&#xff0c;无从下手。 那么&#xff0c;怎样才能把用户各种经营相关的、纷繁复杂的数据&#xff0c…

【LLM】LangChain基础使用(构建LLM应用)

note LangChain应用开发框架&#xff0c;支持python和typescript语言&#xff1b;可以帮助生成prompt模板&#xff0c;并通过代理充当其他组件&#xff08;如提示模板、其他大语言模型、外部数据和其他工具&#xff09;的中央接口。LangChain可以直接与 OpenAI 的 text-davinc…

unity航点寻径

一、游戏框架&#xff1a;设置了六个路标&#xff0c;角色会在这六个路标之间一次移动&#xff0c;当移动到第六个路标后又会返回第一个路标&#xff0c;继续依次移动。 road&#xff1a; 道路&#xff0c;由五个立方体组成 sign&#xff1a;路标&#xff0c;由六个胶囊组成 …

SFP+高速线缆VS 10G SFP+电口模块VS SFP+光模块区别比较

在之前的推文中我们有介绍到千兆和万兆电口模块&#xff0c;其中有小伙伴留言说想了解高速线缆、电口模块和光模块之间的区别&#xff0c;今天易天光通信将从连接方式、使用场景、特点和优势等方面为大家展开详细介绍。 一、连接方式区别 1、SFP高速线缆连接方式&#xff1a; …