• 使用docker hub获取kubernetes各个组件的镜像


    要部署kubernetes的话,无论手动安装kubernetes还是使用kubeadm安装kubernetes,都需要以下各模块的docker镜像。而国内的网络被墙的原因,在搭建环境时,经常无法pull到这些镜像。那我们可以考虑曲线救国,利用Docker Hub搭建自己的镜像仓库。

    通过科学上网的方式可以查看到kubernetes各个组件的docker镜像,通过这些镜像我们使用docker hub来构建自定义的k8s镜像。

    k8s镜像官方地址:https://console.cloud.google.com/gcr/images/google-containers/GLOBAL?location=GLOBAL&project=google-containers

    要使用docker hub来获取kubernetes镜像的话,前提要有github和docker hub的账号(注册即可)。docker hub通过关联github后自动构建docker镜像。在docker hub中构建好docker镜像后,就可以使用docker pull 拉取这些镜像并对拉取下来的镜像做tag处理便可正式部署kubernetes了。

    步骤演示如下:

    1、登录github,创建仓库名称为mykubernetes

     

    2、克隆这个仓库,以备后期上传kubernetes各个组件的dockerfile文件使用

    [root@linux-node2 ~]# git  clone https://github.com/goser1158/mykubernetes.git
    

     在clone的时候可能会报错,解决办法:yum update -y nss curl libcurl 

    3、编写kubernetes各个组件docker镜像对应的各个dockerfile

    [root@linux-node2 ~]# cd  mykubernetes/
    #创建各个组件dockerfile文件对应的目录
    [root@linux-node2 mykubernetes]# mkdir {kube-apiserver-amd64,kube-controller-manager-amd64,kube-scheduler-amd64,kube-proxy-amd64,etcd-amd64,pause-amd64,kubernetes-dashboard-amd64,k8s-dns-sidecar-amd64,k8s-dns-kube-dns-amd64,k8s-dns-dnsmasq-nanny-amd64,flannel}
    #编写各个镜像对应的Dockerfile文件
    [root@linux-node2 mykubernetes]# cat  kube-apiserver-amd64/Dockerfile 
    FROM gcr.io/google_containers/kube-apiserver-amd64:v1.10.1
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  kube-scheduler-amd64/Dockerfile 
    FROM gcr.io/google_containers/kube-scheduler-amd64:v1.10.1
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  kube-controller-manager-amd64/Dockerfile 
    FROM gcr.io/google_containers/kube-controller-manager-amd64:v1.10.1
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  kube-proxy-amd64/Dockerfile 
    FROM gcr.io/google_containers/kube-proxy-amd64:v1.10.1
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  etcd-amd64/Dockerfile 
    FROM gcr.io/google_containers/etcd-amd64:3.1.12
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  kubernetes-dashboard-amd64/Dockerfile 
    FROM gcr.io/google_containers/kubernetes-dashboard-amd64:v1.8.3
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  k8s-dns-dnsmasq-nanny-amd64/Dockerfile 
    FROM gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.8
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  k8s-dns-kube-dns-amd64/Dockerfile 
    FROM gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.8
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  k8s-dns-sidecar-amd64/Dockerfile 
    FROM gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.8
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  pause-amd64/Dockerfile 
    FROM gcr.io/google_containers/pause-amd64:3.1
    MAINTAINER goser
    [root@linux-node2 mykubernetes]# cat  flannel/Dockerfile 
    FROM quay.io/coreos/flannel:v0.9.1-amd64
    MAINTAINER goser
    

     说明:v1.10.1是镜像tag,这里你应该修改为你需要的版本号。例如kubernetes v1.10.1对应的kubernetes-apiserver-amd64版本为v1.10.1

    4、创建好Dockerfile文件后,将其push到自己新建的github仓库mykubernetes中

    [root@linux-node2 mykubernetes]# git add .
    [root@linux-node2 mykubernetes]# git  commit -m  "add  kubernetes:v1.10.1-images Dockerfile"
    [root@linux-node2 mykubernetes]# git remote add origin https://github.com/goser1158/mykubernetes.git
    [root@linux-node2 flannel]# git push -u origin master
    

    5、在GitHub上可以查询到你的commit上传的文件

    6、登录Docker Hub配置Automated Build镜像

     点击Create下的Create Automated Build

     这个时候会提示要求绑定github仓库,如果之前未绑定,会提示绑定,按照步骤提示操作即可

      选择你创建的GitHub上的仓库mykubernetes

     填写Name及Short Description,点击Create按钮,切换到Build Setting栏

     填写Dockerfile Location及Docker Tag Name,点击Save Change,然后点击上方的Trigger,就触发构建镜像。

     切换到Build Details栏,会看到Queue->Building->Success或者Error

     这样一个kube-apiserver-amd64:v1.10.1的docker镜像使用docker  hub的自动构建完成了,当你修改了Dockerfile文件重新commit到GitHub上时,Docker Hub就自动开始构建新的镜像。

     按照构建kube-apiserver-amd64:v1.10.1的镜像方式构建kubernetes其他组件的docker镜像。在kubernetes各个组件的docker镜像构建完成后,就可以正式部署kubernetes了

    7、将构建出的Kubernetes镜像pull到本地主机,并重新tag为kubernetes要求定义的镜像名

     创建一个可以拉取kubernetes组件docker镜像同时修改tag的脚本pull-k8s.sh

    [root@linux-node2 ~]# vim  pull-k8s.sh
    #!/bin/bash
    images=(kube-proxy-amd64:v1.10.1 kube-scheduler-amd64:v1.10.1 kube-controller-manager-amd64:v1.10.1 kube-apiserver-amd6
    4:v1.10.1 etcd-amd64:3.1.12 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube
    -dns-amd64:1.14.8 k8s-dns-dnsmasq-nanny-amd64:1.14.8)
    for image in ${images[@]} ; do
      docker pull goser/$image
      docker tag goser/$image gcr.io/google_containers/$image
      docker rmi goser/$image
    done
    # pull flannel && tag flannel
    docker pull goser/flannel:v0.9.1-amd64 && docker tag goser/flannel:v0.9.1-amd64 quay.io/coreos/flannel:v0.9.1-amd64 &&
    docker rmi goser/flannel:v0.9.1-amd64
    

     运行pull-k8s.sh后,检查pull的镜像

    [root@linux-node2 ~]# sh pull-k8s.sh
    [root@linux-node2 ~]# docker images   
    REPOSITORY                                               TAG                 IMAGE ID            CREATED             SIZE
    quay.io/coreos/flannel                                   v0.9.1-amd64        c309cd26d428        8 hours ago         51.3 MB
    gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64     1.14.8              14a4f52fa725        8 hours ago         40.9 MB
    gcr.io/google_containers/kubernetes-dashboard-amd64      v1.8.3              f9b7e7a05753        8 hours ago         102 MB
    gcr.io/google_containers/etcd-amd64                      3.1.12              2f7b9681bfac        9 hours ago         193 MB
    gcr.io/google_containers/kube-proxy-amd64                v1.10.1             3f1425ae677b        9 hours ago         97.1 MB
    gcr.io/google_containers/kube-controller-manager-amd64   v1.10.1             a6368b54f5e1        9 hours ago         148 MB
    gcr.io/google_containers/kube-apiserver-amd64            v1.10.1             7c9017884357        9 hours ago         225 MB
    gcr.io/google_containers/kube-scheduler-amd64            v1.10.1             34dea3bc0ba7        9 hours ago         50.4 MB
    gcr.io/google_containers/pause-amd64                     3.1                 c2b09938bcb8        9 hours ago         742 kB
    gcr.io/google_containers/k8s-dns-kube-dns-amd64          1.14.8              1f5bd4ca55be        9 hours ago         50.5 MB
    gcr.io/google_containers/k8s-dns-sidecar-amd64           1.14.8              ff06e2ddc9fe        9 hours ago         42.2 MB
    

    8、pull完kubernetes各个组件的docker镜像后,就可以正式部署kubernetes了。。。

     至于如何部署kubernetes,参考:https://www.cnblogs.com/goser/articles/9361338.html

  • 相关阅读:
    Java垃圾回收
    Android Starting Window(Preview Window)
    JVM虚拟机结构
    表驱动法 -《代码大全》读书笔记
    快速Android开发系列网络篇之Retrofit
    快速Android开发系列网络篇之Volley
    快速Android开发系列网络篇之Android-Async-Http
    清除Android工程中没用到的资源
    快速Android开发系列通信篇之EventBus
    Android点击列表后弹出输入框,所点击项自动滚动到输入框上方
  • 原文地址:https://www.cnblogs.com/goser/p/9365937.html
Copyright © 2020-2023  润新知