2026/1/24 5:45:09
网站建设
项目流程
上海老闵行网站建设,百度排行榜风云榜,网站设计鉴赏,江西省住房和城乡建设厅目录
1. 准备与传输镜像
2. 导入镜像
3. 部署应用
4. 技巧与注意事项 在 Containerd 运行时的 K8S 集群中离线导入应用镜像#xff0c;关键在于将镜像正确导入到 containerd 的 k8s.io命名空间#xff0c;并确保 K8S部署时能使用这些本地镜像。
1. 准备与传输镜像
首先…目录1. 准备与传输镜像2. 导入镜像3. 部署应用4. 技巧与注意事项在 Containerd 运行时的 K8S 集群中离线导入应用镜像关键在于将镜像正确导入到 containerd 的k8s.io命名空间并确保 K8S部署时能使用这些本地镜像。1. 准备与传输镜像首先你需要在可以访问互联网的环境中准备好要部署的应用镜像。拉取并保存镜像使用 Docker 拉取镜像重新标记为符合 K8s 需求的标签如需然后导出为.tar文件。docker pull 原镜像名称:标签 docker tag 原镜像名称:标签 新镜像名称:标签 # 可选使镜像标签符合部署要求 docker save -o 镜像文件名.tar 新镜像名称:标签docker pull nginx:latest docker save -o nginx.tar nginx:latest提示docker save保存的是展开后的格式文件可能较大。虽然docker save也支持输出为.tar.gz但ctr image import命令不支持直接导入压缩格式如果得到的是.tar.gz文件需要先解压 。举例如需部署nginx:latest操作如下传输镜像文件将生成的.tar文件复制到离线环境中的 K8s 工作节点如果需要部署到多个节点则每个节点都需要复制。scp 镜像文件名.tar 用户名节点IP:目2. 导入镜像这是最关键的一步需要将镜像导入到 containerd 的正确命名空间中。导入镜像登录到目标 K8s 节点使用ctr命令导入镜像。务必使用-n k8s.io参数这能确保镜像被导入到 Kubernetes 使用的命名空间 。ctr -n k8s.io image import 镜像文件名.tar注意如果镜像文件是.tar.gz格式需要先解压验证导入导入完成后使用以下命令检查镜像是否存在。# 使用 ctr 查看 ctr -n k8s.io images list | grep 镜像名称 # 或者使用与 CRI 接口兼容的 crictl 查看 crictl images | grep 镜像名称3. 部署应用镜像准备就绪后就可以在 K8s 集群中部署你的应用了。创建部署配置文件编写一个 K8s 的 Deployment YAML 文件。关键点在于需要设置imagePullPolicy: IfNotPresent或imagePullPolicy: Never。这会指示 Kubelet 不要尝试从远程仓库拉取镜像而是直接使用本地已存在的镜像 。apiVersion: apps/v1 kind: Deployment metadata: name: your-app spec: replicas: 1 selector: matchLabels: app: your-app template: metadata: labels: app: your-app spec: containers: - name: your-app-container image: 你在节点上导入的完整镜像名称和标签 # 例如: nginx:latest imagePullPolicy: IfNotPresent # 重要 ports: - containerPort: 80应用配置使用kubectl部署你的应用。kubectl apply -f your-deployment.yaml4. 技巧与注意事项批量操作如果需要导入多个镜像可以写一个简单的循环脚本 。for image in /path/to/your/*.tar; do ctr -n k8s.io image import $image done镜像已经存在如果导入时提示镜像已存在可以使用ctr -n k8s.io images rm 镜像名先删除旧镜像再导入或者使用--force选项强制替换如果ctr版本支持。