利用阿里云获取gcr.io的kubernetes镜像

因为众所周知的原因就不提原因了,这里只写是怎么操作过程

Kubernetes主要由以下几个核心组件组成:

  • etcd保存了整个集群的状态;
  • apiserver提供了资源操作的唯一入口,并提供认证、授权、访问控制、API注册和发现等机制;
  • controller manager负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

  • scheduler负责资源的调度,按照预定的调度策略将Pod调度到相应的机器上;
  • kubelet负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
  • Container runtime负责镜像管理以及Pod和容器的真正运行(CRI);
  • kube-proxy负责为Service提供cluster内部的服务发现和负载均衡;

除了核心组件,还有一些推荐的Add-ons:

  • kube-dns负责为整个集群提供DNS服务
  • Ingress Controller为服务提供外网入口
  • Heapster提供资源监控
  • Dashboard提供GUI
  • Federation提供跨可用区的集群

除了核心组件,还有一些推荐的Add-ons:

  • kube-dns 负责为整个集群提供DNS服务
  • Ingress Controller 为服务提供外网入口
  • Heapster 提供资源监控
  • Dashboard 提供GUI
  • Federation 提供跨可用区的集群
  • Fluentd-elasticsearch 提供集群日志采集、存储与查询

准备操作:阿里云账户,github账户

1、去gcr.io上看看的具体的地址和版本号,查看kubernetes版本号,具体地址如下:

https://console.cloud.google.com/gcr/images/google-containers/GLOBAL

Kubernetes v1.14.2

coredns v1.5.0

etcd-amd64 v3.3.10

kube-apiserver-amd64 v1.14.2

kube-controller-manager-amd64 v1.14.2

kube-proxy-amd64 v1.14.2

kube-scheduler-amd64 v1.14.2

kubernetes-dashboard-amd64 v1.10.1

pause-amd64 3.1

2、在Github上创建相应的Dockerfile

图省事儿就直接下载我的就行,欢迎Fork,地址如下:

https://github.com/luyouli/kubernetes-images

3、在阿里云上面操作

打开阿里云镜像服务,地址如下:

https://cr.console.aliyun.com/

首先创建一个命名空间,然后选择区域–>镜像仓库–>创建镜像仓库

选择GitHub,选择创建的命名空间和之前在github上创建的项目路径,勾选上“海外机器构建”, 勾选上“海外机器构建” , 勾选上“海外机器构建” ,重要的事情说三遍

创建完成之后,选择新建的仓库,选择构建 –> 添加规则

类型和Branch/Tag选择即可,目录和镜像版本需要填写,目录一定要跟github上一一对应,填写完成点确认,然后点击:立即构建。

如果构建没有问题的话,会显示成功

这个镜像版本就是上面自己填写的镜像版本,跟github上的镜像版本没有关系

在左侧的 镜像版本 中可以看到已经创建的镜像

4、配置镜像加速器

选择镜像加速器
看阿里云的操作文档即可

5、pull/push镜像

选择一个镜像仓库,在基本信息中就有推送和拉取镜像的具体教程,非常详细

6、下载镜像及修改TAG的脚本

SHELL版:

[root@local ~] # vim kubernetes_images_pull.sh
#!/bin/bash
# set -x

KUBE_VERSION=v1.14.2
KUBE_PAUSE_VERSION=3.1
ETCD_VERSION=3.3.10
COREDNS_VERSION=1.5.0

GCR_URL=gcr.io/google_containers
ALIYUN_URL=registry.cn-beijing.aliyuncs.com/luyouli

Images=(
kube-proxy-amd64:${KUBE_VERSION}
kube-scheduler-amd64:${KUBE_VERSION}
kube-controller-manager-amd64:${KUBE_VERSION}
kube-apiserver-amd64:${KUBE_VERSION}
pause-amd64:${KUBE_PAUSE_VERSION}
etcd-amd64:${ETCD_VERSION}
coredns:${COREDNS_VERSION}
)

for IMAGENAME in ${Images[@]}
do
# 下载阿里云上的容器镜像
docker pull $ALIYUN_URL/$IMAGENAME
# 把阿里云的tag改为gcr.io的,省着改kubernetes了
docker tag $ALIYUN_URL/${IMAGENAME} $GCR_URL/${IMAGENAME}
# 删除tag为阿里云的镜像,省空间
docker rmi $ALIYUN_URL/$IMAGENAME
done

Python 3.6版:

[root@localhost ~]# vim kubernetes_images_pull.py

#!/usr/bin/python3
import os

KUBE_VERSION = ‘v1.14.2’
KUBE_PAUSE_VERSION = ‘3.1’
ETCD_VERSION = ‘3.3.10’
COREDNS_VERSION = ‘1.5.0’

GCR_URL = ‘gcr.io/google_containers’
ALIYUN_URL = ‘registry.cn-beijing.aliyuncs.com/luyouli’

Images = [ “kube-proxy-amd64:%s” % (KUBE_VERSION),
“kube-scheduler-amd64:%s” % (KUBE_VERSION),
“kube-controller-manager-amd64:%s” % (KUBE_VERSION),
“kube-apiserver-amd64:%s” % (KUBE_VERSION),
“pause-amd64:%s” % (KUBE_PAUSE_VERSION),
“etcd-amd64:%s” % (ETCD_VERSION),
“coredns:%s” % (COREDNS_VERSION),
]

for line in Images:
os.system(“/usr/bin/docker pull %s/%s” % (ALIYUN_URL, line))
os.system(“/usr/bin/docker tag %s/%s %s/%s” % (ALIYUN_URL, line, GCR_URL, line))
os.system(“/usr/bin/docker rmi %s/%s” % (ALIYUN_URL, line))

本想用docker模块来处理,调试了两个小时始终调试不通,就放弃改用os模块了

时间太紧写的比较草,回头有空了再好好的整理一下

3 评论

  1. Good day! This is kind of off topic but I need some advice from an established blog.
    Is it difficult to set up your own blog?
    I’m not very techincal but I can figure things out pretty quick.
    I’m thinking about setting up my own but I’m not sure where to begin. Do you have any tips or suggestions?
    Cheers

留下评论

error: Content is protected !!