openshift4 OADP Operator 离线安装

Operator离线安装


前言

OADP安装:
全程参考红帽官方文档:
https://access.redhat.com/documentation/zh-cn/openshift_container_platform/4.6/html-single/operators/index#olm-restricted-networks
强烈推荐操作系统使用REHL8。(安装过程避免依赖错误)


一、登陆红帽镜像仓库

通过 registry.redhat.io 进行身份验证(使用docker和podman都可以):

 docker login registry.redhat.io

会提示输入红帽账号密码,没有账号的密码的自行进行申请在红帽官网。

二、查看软件包列表。

其实就是所有operator 安装源,因为全量很多很大需要进行裁剪 ,本次我需要离线安装OADP。

运行您要修剪容器中的源索引镜像。例如:
运用可以加上 -d 后台运行

 docker run -p50051:50051 \
    -it  -d registry.redhat.io/redhat/redhat-operator-index:v4.6

输出示例

Trying to pull registry.redhat.io/redhat/redhat-operator-index:v4.6...
Getting image source signatures
Copying blob ae8a0c23f5b1 done
...
INFO[0000] serving registry                              database=/database/index.db port=50051

三、安装 opm,grpcurl

opm:用来同步镜像

wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/4.7.6/opm-linux-4.7.6.tar.gz

grpcurl :用来查看安装源列表

wget https://github.com/fullstorydev/grpcurl/releases/download/v1.8.0/grpcurl_1.8.0_linux_x86_64.tar.gz

在这里插入图片描述

四、裁剪软件包列表

在一个单独的终端会话中,使用 grpcurl 命令获取由索引提供的软件包列表:
这个列表红帽所有operators列表。

grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out

由于默认软件包比较多所有需要裁剪,留下自己需要的依赖源。
** registry.example.com/redhat-operator-index:v4.6 这个换成你自己的镜像仓库。**

  sudo ./opm index prune     -f registry.redhat.io/redhat/redhat-operator-index:v4.6     -p redhat-oadp-operator -i registry.redhat.io/openshift4/ose-operator-registry:v4.6     -t registry.example.com/zpf-redhat/redhat-operator-index:v4.6 -c docker

使用rehl8 不会遇到此问题,直接可以跳过,或者opm指令正常运行直接跳过
在这里插入图片描述

报错 解决方案:升级glibc到2.28版本 make –j2 时间有点长
在这里插入图片描述

安装glibc 编译失败需要升级GMP 4.2+,MPFR 2.4.0+ MPC 0.8.0+

在这里插入图片描述

最终解决方案:https://blog.csdn.net/wangying202/article/details/113178159

还有报错如下:
在这里插入图片描述

解决方案:

在这里插入图片描述

在这里插入图片描述

不报错以后继续进行裁剪:
默认是podman 我用的docker 使用 –c 来进行切换

 sudo ./opm index prune     -f registry.redhat.io/redhat/redhat-operator-index:v4.6     -p redhat-oadp-operator -i registry.redhat.io/openshift4/ose-operator-registry:v4.6     -t registry.example.com/zpf-redhat/redhat-operator-index:v4.6 -c docker

成功显示以下:

在这里插入图片描述

docker images 查看刚生成的镜像(生成的镜像作用就是里面有你需要安装的operator安装源,后面使用这个镜像来进行同步)然后重新运行,检查是否裁剪成功,(我刚才只保存oadp正常只有一个)

 docker run -p50051:50051     -it  -d registry.example.com/zpf-redhat/redhat-operator-index:v4.6
grpcurl -plaintext localhost:50051 api.Registry/ListPackages > packages.out

在这里插入图片描述

已上镜像裁剪成功!!!!

五、配置访问harbor证书

配置docker证书 dockerx509问题
/etc/docker/certs.d/
复制CA file到以上目录
如果是自签发镜像仓库证书
cp /root/ca.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust
执行update-ca-trust 更新证书
然后重新登陆镜像仓库
docker login --username pop --password xxx registry.example.com

六、同步镜像

把本地镜像同步到harbor仓库

./oc adm catalog mirror  (本地images)registry.example.com/zpf-test/redhat-operator-index:v4.6     (远程镜像仓库地址)registry.example.com/zpf-test     --insecure

需要漫长的时间(1.5G 2个小时待优化)
在这里插入图片描述

七、镜像地址映射

虽然导入到本地镜像仓库,但是ocp集群还是会去联网下载镜像,所以需要加一下映射管理,把外网的地址映射到本地的harborr镜像仓库中。

生成了一个文件imageContentSourcePolicy.yaml, mirror文件,用于导入到ocp 中,将外部仓库地址映射到我们的私有仓库

在这里插入图片描述

  oc create –f imageContentSourcePolicy.yaml

八、从索引镜像创建目录

创建一个 CatalogSource 对象来引用索引镜像。如果使用 oc adm catalog mirror 命令将目录镜像到目标 registry,您可以使用生成的 catalogSource.yaml 文件作为起点。

根据您的规格修改以下内容,并将它保存为 catalogSource.yaml 文件:

apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
  name: my-operator-catalog 
  namespace: openshift-marketplace 
spec:
  sourceType: grpc
  image: <registry>:<port>/<namespace>/redhat-operator-index:v4.6 
  displayName: My Operator Catalog
  publisher: <publisher_name> 
  updateStrategy:
    registryPoll: 
      interval: 30m
oc apply -f catalogSource.yaml

检查 pod:

 oc get pods -n openshift-marketplace

检查目录源:

 oc get catalogsource -n openshift-marketplace

检查软件包清单:

oc get packagemanifest -n openshift-marketplace

现在,您可以在 OpenShift Container Platform Web 控制台中通过 OperatorHub 安装 Operator。
在这里插入图片描述

在这里插入图片描述

九、重启集群

重启master、worker、infra、route
如果签发起始时间发生更新,运行业务准备好进行重启后,可开启MachineConfigPool的更新开关

oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/master
oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/worker
oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/infra
oc patch --type=merge --patch='{"spec":{"paused":false}}' machineconfigpool/router

主机全部重启完成后,使用同样的方法再将MachineConfigPool的更新开关关闭

oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/master
oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/worker
oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/infra
oc patch --type=merge --patch='{"spec":{"paused":true}}' machineconfigpool/router
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nvidia Docker是Nvidia公司开发的一款 Docker 容器技术,主要用于在Linux平台上运行CUDA GPU加速应用程序。相较于传统容器技术,它可以直接访问物理网卡和GPU资源,使得应用程序运行效率更高更稳定。 对于在没有联网的环境下需要安装Nvidia Docker的CentOS系统,可以使用以下步骤进行离线安装: 1. 下载所需的软件包,包括Docker-ce、Nvidia-container-toolkit和Nvidia-container-runtime。可以从官网上下载相应版本的软件包。 2. 将下载好的软件包在CentOS系统中进行安装。可以通过yum或rpm指令安装,注意安装顺序为Docker-ce -> Nvidia-container-toolkit -> Nvidia-container-runtime. 3. 安装完成后,需要配置Docker-ce和Nvidia-container-runtime的环境变量。 编辑/etc/docker/daemon.json文件,添加以下内容: ``` { "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } } } ``` 编辑/etc/sysconfig/docker文件,添加以下内容: ``` # 修改DOCKER_OPTIONS 添加 nvidia DOCKER_OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry=10.0.0.0/8 --insecure-registry=172.30.0.0/16 --insecure-registry=192.168.0.0/16 --insecure-registry=172.20.0.0/16 --insecure-registry=127.0.0.1:5000 --insecure-registry=docker-registry.default.svc:5000 --insecure-registry=docker-registry.default.svc.cluster.local:5000 --insecure-registry=docker-registry:5000 --insecure-registry=docker-registry.openshift-image-registry.svc:5000 --insecure-registry=docker-registry.openshift-image-registry.svc.cluster.local:5000 --insecure-registry=registry.access.redhat.com --insecure-registry=registry.redhat.io --insecure-registry=registry.connect.redhat.com -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock --containerd=/run/containerd/containerd.sock --exec-opt=native.cgroupdriver=systemd runtime=nvidia' ``` 4. 配置完成后,重启Docker服务,运行以下指令即可验证安装是否成功: ``` docker run --gpus all nvidia/cuda:11.0-base nvidia-smi ``` 运行成功后,应该能够看到GPU的详细信息。 Nvidia Docker的离线安装相比较于在线安装可能存在一定的困难,需要手动下载并且安装较为繁琐,但也有相应的好处。离线安装可以减少网络传输带来的风险与不稳定性,同时可以进行配置,更好地适应实际生产环境。总而言之,通过本文提供的方法,我们可以更好地将Nvidia Docker整合到CentOS系统当中,为应用程序的高效运行提供更好的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值