简单说明:

  • 部署K8S最大的难题是镜像下载
  • 可以使用阿里云容器镜像服务由海外机器构建
  • 国内同时可以使用阿里云的镜像加速器加速镜像下载
  • 仅需要将含有相关镜像的Dockerfile提交到阿里云即可

申请云Code代码托管账号作为代码源

  • 可以绑定到阿里云镜像仓库的代码托管服务有很多,这里选用云Code
  • 登陆阿里云:https://www.aliyun.com
  • 打开云Code账户设置:https://code.aliyun.com/code_account/edit
  • 设置用户名和提交邮箱,建议设置一个私人令牌提高安全性
  • 创建一个新项目,私有或者公共均可,象操纵GitHub或者GitLab一样使用它

使用实验机部署该代码库

  • 找一台Linux机器,可以是一台环境干净的虚拟机进行配置,如我克隆了一台centos7实验机:
HOSTNAME=code
hostnamectl set-hostname "$HOSTNAME"
echo "$HOSTNAME">/etc/hostname
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
echo "$(ip a|grep "inet "|grep -v 127|awk -F'[ /]' '{print $6}') $HOSTNAME">>/etc/hosts# 安装git并克隆代码库,提交README
yum -y install git
git config --global user.name "zwjqb"
git config --global user.email "zwjqb@126.com"
cd /tmp/
git clone https://code.aliyun.com/zwjqb/docker.git
# 输入云Code的邮箱和私人令牌登陆
cd docker
echo '这是一个Docker镜像构建的Dockerfile中转站'>README.md
git add README.md
git commit -m "add README"
git push -u origin master# 参照《CentOS7使用Minikube搭建单节点K8S实验环境》获取构建K8S-v1.16.4所需的所有镜像:
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
EOF
yum clean all
yum makecache faster
yum -y install kubectl-1.16.4 kubeadm-1.16.4 kubelet-1.16.4
kubeadm config images list --kubernetes-version=v1.16.4
# 当然还有后续所需的两个镜像:
# quay.io/coreos/flannel:v0.11.0-amd64
# gcr.io/k8s-minikube/storage-provisioner:v1.8.1
# 创建规范的目录并生成Dockerfile
cd /tmp/docker
for image in $(kubeadm config images list --kubernetes-version=v1.16.4)
doPath=$(echo ${image}|awk -F':' '{print $1}')Version=$(echo ${image}|awk -F':' '{print $2}')mkdir -pv ${Path}echo "FROM ${image}">${Path}/Dockerfile
done
mkdir -pv quay.io/coreos/flannel
echo 'FROM quay.io/coreos/flannel:v0.11.0-amd64'>quay.io/coreos/flannel/Dockerfile
mkdir -pv gcr.io/k8s-minikube/storage-provisioner
echo 'FROM gcr.io/k8s-minikube/storage-provisioner:v1.8.1'>gcr.io/k8s-minikube/storage-provisioner/Dockerfile
# 提交到仓库
git add .
git commit -m "k8s-v1.16.4 doclerfile commit"
git push -u origin master

阿里云容器镜像配置

  • 打开阿里云容器镜像服务页面:https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
  • 底部的镜像加速器可以申请到一个加速镜像下载的url
  • 默认实例——>命名空间,创建一个公开类型的命名空间,如vinc-k8s
  • 默认实例——>镜像仓库,创建一个镜像仓库,仓库名称就以镜像名称命名,比如kube-apiserver,仓库类型选择公开
  • 代码源选择云code,需要相关绑定操作,勾选海外机器构建和不使用缓存
  • 创建后选择该仓库的管理功能,在基本信息中可以查看到该仓库的镜像拉取和推送等操作方法
  • 构建标签,添加构建规则,基于Branch的master分支构建,Dockerfile的目录要选择对,镜像版本统一填写latest
  • 点击立即构建进行测试,查看构建日志确认构建成功
  • 下载测试,并将镜像的tag更换成相应版本push回去
# 参照《CentOS7部署安装Docker和Docker Compose工具简录》部署docker环境
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver \registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver:v1.16.4
docker login --username=zwjqb@126.com registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver:v1.16.4
# 当然,镜像的删除只能手动登陆阿里云镜像仓库进行,好在相同的镜像不会重复存储

镜像自动构建测试

  • 镜像的构建是自动触发的,测试如下:
cd /tmp
rm -rf docker
git clone https://code.aliyun.com/zwjqb/docker.git
cd docker/
echo 'FROM k8s.gcr.io/kube-apiserver:v1.16.4 '>k8s.gcr.io/kube-apiserver/Dockerfile
# 只是将原Dockerfile内容加个空格,不做实质修改
git add .
git commit -m 'change k8s.gcr.io/kube-apiserver:v1.16.4'
git push -u origin master
  • 刷新构建标签,查看构建日志的时间戳和状态,然后下载测试
docker pull registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver
docker tag registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver \registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver:v1.16.4
docker login --username=zwjqb@126.com registry.cn-hangzhou.aliyuncs.com
docker push registry.cn-hangzhou.aliyuncs.com/vinc-k8s/kube-apiserver:v1.16.4
  • 虽然tag都是latest,但是如果是不同的镜像还是会下载并顶替掉原来的latest镜像
  • 只需要修改tag并push回去做一个标识即可,不必删除阿里云上的latest镜像
  • 相同的方法,添加K8S所需镜像的所有仓库并进行构建测试,构建出所需要的镜像,加速K8S的部署安装
  • 可以为仓库设置触发器,触发构建成功后的操作,如镜像自动拉取部署,如消息通知等

[TOC]

基于阿里云容器镜像服务加速K8S镜像下载相关推荐

  1. 基于阿里云容器镜像服务加速K8S镜像下载(二)

    简单说明 在<基于阿里云容器镜像服务加速K8S镜像下载>中介绍了使用阿里云镜像服务来解决一些不可达镜像的下载 但是需要反复在阿里云容器镜像控制台添加仓库,这种操作实在太傻,是电脑这头蠢驴该 ...

  2. 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker

    基于阿里云容器服务的微服务实践 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blo ...

  3. 阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能

    2023 年 3 月 23 日 14:00,NVIDIA GTC 开发者大会阿里云开发者社区观看入口正式开放,阿里云高级技术专家林立翔带来了题为<基于阿里云弹性 GPU 服务的神龙 AI 加速引 ...

  4. 使用阿里云容器监控服务与第三方监控框架集成搭建自己的容器看板

    一.概述 阿里云容器监控服务日前正式上线,容器监控服务提供了非常简单快速地与第三方开源监控方案集成的能力.本篇文章就带领大家一起试用阿里云容器监控服务,并使用目前比较流行的第三方开源监控框架做集成,搭 ...

  5. 基于阿里云ECS,Ubuntu系统搭建离线下载服务器

    基于阿里云ECS,Ubuntu系统搭建离线下载服务器 很开心能参加本次阿里云训练营,使用的ECS是阿里云,ubuntu系统 1.了解什么是CCAA CCAA 是服务器离线下载解决⽅案包,组件包含了Ar ...

  6. 一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用

    本文面向的读者 如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用.你无须提前准备任何的硬件资源或者下载任何的软件包.  如果您已经 ...

  7. Docker监控:基于阿里云容器服务构建自己的Docker监控框架

    微服务架构通过将一个复杂系统分解成一系列独立开发.部署和运维的服务,提升了整个系统的敏捷性,可以灵活的响应业务和规模的变化.而Docker技术则将服务的部署和环境完全解耦,利用Docker的可移植性和 ...

  8. 比心云平台基于阿里云容器服务 ACK 的弹性架构实践

    作者:韩韬|比心技术 前言 应用容器化改造后,不可避免地会面临这样一个问题:Kubernetes 集群的 Node 资源配置不足会导致 Pod 无法及时运行,购买过多的 Node 又会导致资源的闲置浪 ...

  9. 区块链应用@纸贵科技:基于阿里云容器服务护航内容版权

    摘要: 区块链如何护航内容版权? 区块链已经成为业界内外家喻户晓的一门技术,很多企业已经开始尝试将区块链应用于不同场景.目前,开源的Hyperledger Fabric区块链技术与容器技术的应用组合已 ...

最新文章

  1. FAST选址与三维仿真模拟研究
  2. Windows 10如何使用文件历史记录备份个人文件
  3. 图形颜色填充_Processing-2-基本图形绘制
  4. wangeditor 使用
  5. 信息学奥赛一本通(1212:LETTERS)
  6. 转:perror和strerror的区别
  7. 【统计学】三大相关系数之斯皮尔曼相关系数(spearman correlation coefficient)
  8. 怎样关闭计算机亮度自动调节,如何关闭计算机显示器的自动亮度调节功能
  9. [Win] 免登录百度网盘高速下载器 ENFI下载器 v1.3.1
  10. Matlab中gca、gcf、gco区别
  11. 【2019/02/18测试T3】飘雪圣域
  12. O2O之下,腾讯觊夺移动支付大数据,手Q支付出战支付宝
  13. GoogleChrome与Firefox的那些事
  14. ONF测试工作张攀:OpenFlow控制器性能测试工具进展
  15. 疯狂来往android版,疯狂来往下载app
  16. 2020面试要点大全
  17. slides.jquery.js快速实现轮播图效果
  18. jsp页面中Table表格首列合并同类项的脚本调用方法
  19. banner设圆角_illustrator大气、科技感的Banner设计教程
  20. html页面增加分页符

热门文章

  1. asp.net夜话之八:数据绑定控件
  2. 天球坐标系、地球坐标系、地理坐标系、投影坐标系...一次搞清
  3. SHU 第十届程序设计联赛(夏季赛) 解题报告
  4. 查询宿舍信息的c语言,学生宿舍管理系统 C语言编程
  5. java如何重写onestring,44 java toString 方法 重写equals 方法
  6. Linux系统中svn服务器设置开机启动
  7. [Xamarin.forms] FontAwesome图标字体库用法
  8. SR-ITM--融合超分辨率和逆色调映射(二)
  9. link和@import的区别:
  10. uni-app mqtt api 详解(不包含5.0版本)