SuperMap iManager for K8s 离线环境镜像仓库 Containerd 部署

SuperMap iManager for K8s 的离线镜像仓库,如何使用 containerd 进行部署?一起来看看吧!

  • containerd:containerd.io 1.6.33
  • 操作系统:openEuler 24.03 (LTS-SP1)

1、下载镜像仓库包

  • 参考下方链接:入门 -> 安装部署 -> 部署iManager -> 可视化安装 -> 部署中心下载与安装 -> 获取安装包

https://help.supermap.com/iManager_K8S/1201/zh/GettingStarted/DownloadandInstall.htmhttps://help.supermap.com/iManager_K8S/1201/zh/GettingStarted/DownloadandInstall.htm

2、部署镜像仓库

  • 解压后进入 images 目录,导入 registry.tar(registry.tar 为镜像仓库镜像)
bash 复制代码
# 在 k8s.io 空间中导入 registry.tar,不加 -n k8s.io 则导入 default
ctr -n k8s.io image import registry.tar
# 验证镜像导入成功
ctr -n k8s.io image list |grep registry:2.6.0
  • 启动镜像仓库
bash 复制代码
# 启动镜像仓库
ctr -n k8s.io run -d  --mount type=bind,src=/data/supermap-imanager-for-kubernetes-registry-all-11.1.1-230920-121-linux-x64/images/imanager_registry,dst=/var/lib/registry,options=rbind:rw --net-host docker.io/library/registry:2.6.0 todel

# 查看容器启动成功
ctr -n k8s.io containers ls |grep todel

### ctr run 参数解释 ###
# -d:后台运行
# --mount xxx:卷挂载
# --net-host:使用主机网络模式
# docker.io/library/registry:2.6.0:镜像地址
# todel:容器名称

3、拉取镜像

  • docker 方式
bash 复制代码
# docker 方式
docker pull 172.16.13.95:5000/supermap/scratch:latest-amd64
  • ctr 方式
bash 复制代码
# ctr 方式
ctr image pull 172.16.13.95:5000/supermap/scratch:latest-amd64
# 使用 --hosts-dir 指定 registry 配置 
ctr image pull --hosts-dir /etc/containerd/certs.d 172.16.13.95:5000/supermap/scratch:latest-amd64
  • ps:常见报错
bash 复制代码
### 常见报错 ###
# 报错日志:"PullImage from image service failed" err="rpc error: code = Unknown desc = failed to pull and unpack image \"172.16.13.95:5000/supermap/scratch:latest-amd64\": failed to resolve reference \"172.16.13.95:5000/supermap/scratch:latest-amd64\": failed to do request: Head \"https://172.16.13.95:5000/v2/supermap/scratch/manifests/latest-amd64\": http: server gave HTTP response to HTTPS client" image="172.16.13.95:5000/supermap/scratch:latest-amd64"
# 原因:containerd 默认要求使用 HTTPS,但 registry 使用的是 HTTP,需要配置客户端以允许不安全的 registry
# 解决办法:
  ## 创建 hosts 目录配置(需根据实际镜像仓库地址修改)
sudo mkdir -p /etc/containerd/certs.d/172.16.13.95:5000
  ## 创建 hosts.toml 配置文件(需根据实际镜像仓库地址修改)
sudo tee /etc/containerd/certs.d/172.16.13.95:5000/hosts.toml > /dev/null <<EOF
server = "http://172.16.13.95:5000"
[host."http://172.16.13.95:5000"]
  capabilities = ["pull", "resolve"]
  skip_verify = true
EOF
  ## 重启 containerd
systemctl restart containerd
  ## 拉取镜像
ctr image pull --hosts-dir /etc/containerd/certs.d 172.16.13.95:5000/supermap/scratch:latest-amd64

4、其他

  • 若不再使用离线镜像仓库,可进行卸载
bash 复制代码
# 查看容器正在运行
ctr -n k8s.io containers ls |grep todel
# 停止容器
ctr -n k8s.io task kill todel
# 删除容器
ctr -n k8s.io container rm todel
# 验证容器删除完成
ctr -n k8s.io containers ls |grep todel
# 最后将安装目录删除即可
相关推荐
会飞的小蛮猪3 小时前
Ubuntu24.04 基于Containerd部署K8s1.34(私服部署)
docker·云原生·kubernetes
间彧14 小时前
Kubernetes滚动发布详解
kubernetes
间彧15 小时前
在实际生产环境中,Kubernetes声明式API如何实现蓝绿部署、金丝雀发布等高级部署策略?
kubernetes
间彧15 小时前
Kubernetes声明式API相比传统命令式API在故障恢复场景下的具体优势有哪些?
kubernetes·github
间彧15 小时前
为什么说Kubernetes的API设计是其成功的关键因素之一?
kubernetes
间彧15 小时前
Kubernetes Deployment 配置简化实战:从复杂到高效
kubernetes
可爱的小小小狼19 小时前
k8s:服务网格Service Mesh(服务网格)istio和envoy
kubernetes·istio·service_mesh
稚辉君.MCA_P8_Java1 天前
Gemini永久会员 containerd部署java项目 kubernetes集群
后端·spring cloud·云原生·容器·kubernetes
间彧2 天前
Helm深度解析:Kubernetes应用管理的利器
kubernetes