简单说明:

  • 部署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)
do
  Path=$(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]

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐