爲了將Kubeflow(https://github.com/kubeflow/kubeflow)/Kubernetes等鏡像放到本地集羣部署或者更新,須要一系列的操做。若是集羣的多個節點同時訪問外部鏡像服務,將帶來較大的併發網絡流量,不只速度慢、並且費用增長。所以我將其分爲兩個階段來進行,第一階段將鏡像下載到本地,第二階段各個節點從本地文件系統或鏡像服務來獲取鏡像的拷貝。git
這一階段其實也分爲兩個步驟。github
首先,從可以訪問到gcr的站點(https://www.katacoda.com)下載。如:redis
echo "" echo "=================================================================" echo "pull kubeflow images for system from gcr.io and hub.docker.com..." echo "This tools created by openthings, NO WARANTY. 2018.07.10." echo "=================================================================" echo "" echo "1. centraldashboard" docker pull gcr.io/kubeflow-images-public/centraldashboard:v0.2.1 echo "" echo "2. jupyterhub-k8s" docker pull gcr.io/kubeflow/jupyterhub-k8s:v20180531-3bb991b1 echo "" echo "3. tf_operator" docker pull gcr.io/kubeflow-images-public/tf_operator:v0.2.0 echo "" echo "4. ambassador" docker pull quay.io/datawire/ambassador:0.30.1 echo "" echo "5. redis" docker pull redis:4.0.1 echo "" echo "6. seldonio/cluster-manager" docker pull seldonio/cluster-manager:0.1.6 echo "" echo "Finished." echo ""
而後將鏡像推送到國內站點(如阿里雲-http://registry.cn-hangzhou.aliyuncs.com)。如docker
echo "" echo "=================================================================" echo "Push kubeflow images for system to aliyun.com ..." echo "This tools created by openthings, NO WARANTY. 2018.07.10." echo "=================================================================" MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings echo "" echo "1. centraldashboard" docker tag gcr.io/kubeflow-images-public/centraldashboard:v0.2.1 ${MY_REGISTRY}/kubeflow-images-public-centraldashboard:v0.2.1 docker push ${MY_REGISTRY}/kubeflow-images-public-centraldashboard:v0.2.1 echo "" echo "2. jupyterhub-k8s" docker tag gcr.io/kubeflow/jupyterhub-k8s:v20180531-3bb991b1 ${MY_REGISTRY}/kubeflow-jupyterhub-k8s:v20180531-3bb991b1 docker push ${MY_REGISTRY}/kubeflow-jupyterhub-k8s:v20180531-3bb991b1 echo "" echo "3. tf_operator" docker tag gcr.io/kubeflow-images-public/tf_operator:v0.2.0 ${MY_REGISTRY}/kubeflow-images-public-tf_operator:v0.2.0 docker push ${MY_REGISTRY}/kubeflow-images-public-tf_operator:v0.2.0 echo "" echo "4. ambassador" docker tag quay.io/datawire/ambassador:0.30.1 ${MY_REGISTRY}/quay-io-datawire-ambassador:0.30.1 docker push ${MY_REGISTRY}/quay-io-datawire-ambassador:0.30.1 echo "" echo "5. redis" docker tag redis:4.0.1 ${MY_REGISTRY}/redis:4.0.1 docker push ${MY_REGISTRY}/redis:4.0.1 echo "" echo "6. seldonio/cluster-manager" docker tag seldonio/cluster-manager:0.1.6 ${MY_REGISTRY}/seldonio-cluster-manager:0.1.6 docker push ${MY_REGISTRY}/seldonio-cluster-manager:0.1.6 echo "" echo "Finished." echo ""
而後,能夠從阿里雲下載到本地,恢復爲原始的名稱:shell
echo "" echo "=================================================================" echo "Pull kubeflow images for system from aliyun.com ..." echo "This tools created by openthings, NO WARANTY. 2018.11.28." echo "=================================================================" MY_REGISTRY=registry.cn-hangzhou.aliyuncs.com/openthings echo "" echo "1. centraldashboard" docker pull ${MY_REGISTRY}/kubeflow-images-public-centraldashboard:v0.2.1 docker tag ${MY_REGISTRY}/kubeflow-images-public-centraldashboard:v0.2.1 gcr.io/kubeflow-images-public/centraldashboard:v0.2.1 echo "" echo "2. jupyterhub-k8s" docker pull ${MY_REGISTRY}/kubeflow-jupyterhub-k8s:v20180531-3bb991b1 docker tag ${MY_REGISTRY}/kubeflow-jupyterhub-k8s:v20180531-3bb991b1 gcr.io/kubeflow/jupyterhub-k8s:v20180531-3bb991b1 echo "" echo "3. tf_operator" docker pull ${MY_REGISTRY}/kubeflow-images-public-tf_operator:v0.2.0 docker tag ${MY_REGISTRY}/kubeflow-images-public-tf_operator:v0.2.0 gcr.io/kubeflow-images-public/tf_operator:v0.2.0 echo "" echo "4. ambassador" docker pull ${MY_REGISTRY}/quay-io-datawire-ambassador:0.30.1 docker tag ${MY_REGISTRY}/quay-io-datawire-ambassador:0.30.1 quay.io/datawire/ambassador:0.30.1 echo "" echo "5. redis" docker pull ${MY_REGISTRY}/redis:4.0.1 docker tag ${MY_REGISTRY}/redis:4.0.1 redis:4.0.1 echo "" echo "6. seldonio/cluster-manager" docker pull ${MY_REGISTRY}/seldonio-cluster-manager:0.1.6 docker tag ${MY_REGISTRY}/seldonio-cluster-manager:0.1.6 seldonio/cluster-manager:0.1.6 echo "" echo "Finished." echo ""
從阿里雲下載到本地後,能夠推送到本地鏡像服務(如Harbor)或者打包爲*.tar文件。網絡
從本地Harbor中安裝,使用docker tag將鏡像更名後,就可使用了。能夠參考上面的從阿里雲下載的方法。併發
打包爲*.tar文件,參見:ssh
echo "===================================================================" echo "Save Kubeflow images to tar." echo "This tool created by https://my.oschina.net/u/2306127" echo "Please visit https://github.com/openthings/kubernetes-tools" echo "###################################################################" echo "Kubeflow 0.3.3 ML system images." echo "-------------------------------------------------------------------" echo "A1.>> centraldashboard" docker save gcr.io/kubeflow-images-public/centraldashboard:v0.2.1 -o A1-kubeflow-centraldashboard-v0.2.1.tar echo "" echo "A2.>> jupyterhub-k8s" docker save gcr.io/kubeflow/jupyterhub-k8s:v20180531-3bb991b1 -o A2-kubeflow-jupyterhub-k8s-v20180531-3bb991b1.tar echo "" echo "A3.>> tf_operator" docker save gcr.io/kubeflow-images-public/tf_operator:v0.2.0 -o A3-kubeflow-tf_operator-v0.2.0.tar echo "" echo "A4.>> ambassador" docker save quay.io/datawire/ambassador:0.30.1 -o A4-kubeflow-ambassador-0.30.1.tar echo "" echo "A5.>> redis" docker save redis:4.0.1 -o A5-kubeflow-redis-4.0.1.tar echo "" echo "A6.>> seldonio/cluster-manager" docker save seldonio/cluster-manager:0.1.6 -o A6-kubeflow-seldonio-cluster-manager-0.1.6.tar echo "" echo "==================================================================" echo "Kubeflow worker engine images......" echo "B1.>> Tensorflow notebook CPU" docker save gcr.io/kubeflow-images-public/tensorflow-1.12.0-notebook-cpu:v-base-76107ff-897 -o A6-kubeflow-tensorflow-1.12.0-notebook-cpu-v-base-76107ff-897.tar echo "" echo "B2.>> Tensorflow notebook GPU" docker save gcr.io/kubeflow-images-public/tensorflow-1.12.0-notebook-gpu:v-base-76107ff-897 -o A6-kubeflow-tensorflow-1.12.0-notebook-gpu-v-base-76107ff-897.tar echo "" echo "===================================================================" echo "Save Kubeflow images Finished." echo "This tool created by https://my.oschina.net/u/2306127" echo "Please visit https://github.com/openthings/kubernetes-tools" echo "===================================================================" echo ""
將全部的鏡像壓縮爲一個zip包,而後上傳到工做節點:google
echo "Uploading 10.1.1.202" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.202:/home/supermap/ echo "Uploading 10.1.1.203" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.203:/home/supermap/ echo "Uploading 10.1.1.142" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.142:/home/supermap/ echo "Uploading 10.1.1.193" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.193:/home/supermap/ echo "Uploading 10.1.1.234" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.234:/home/supermap/ echo "Uploading 10.1.1.205" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.205:/home/supermap/ echo "Uploading 10.1.1.112" sshpass -p xxxx scp kf-images-0.3.3.zip supermap@10.1.1.112:/home/supermap/ echo "Upload kf-images-0.3.3.zip Finished."
而後,在各個節點上恢復到Docker的原始鏡像名稱。以下:阿里雲
echo "===================================================================" echo "Load Kubeflow images from tar." echo "This tool created by https://my.oschina.net/u/2306127" echo "Please visit https://github.com/openthings/kubernetes-tools" echo "###################################################################" echo "Kubernetes core system images." echo "-------------------------------------------------------------------" echo "A1<< centraldashboard" sudo docker load -i A1-kubeflow-centraldashboard-v0.2.1.tar echo "" echo "A2<< jupyterhub-k8s" sudo docker load -i A2-kubeflow-jupyterhub-k8s-v20180531-3bb991b1.tar echo "" echo "A3<< tf_operator" sudo docker load -i A3-kubeflow-tf_operator-v0.2.0.tar echo "" echo "A4<< ambassador" sudo docker load -i A4-kubeflow-ambassador-0.30.1.tar echo "" echo "A5<< redis" sudo docker load -i A5-kubeflow-redis-4.0.1.tar echo "" echo "A6<< seldonio/cluster-manager" sudo docker load -i A6-kubeflow-seldonio-cluster-manager-0.1.6.tar echo "" echo "==================================================================" echo "Kubeflow worker engine images......" echo "B1<< Tensorflow notebook CPU" sudo docker load -i A6-kubeflow-tensorflow-1.12.0-notebook-cpu-v-base-76107ff-897.tar echo "" echo "B2<< Tensorflow notebook GPU" sudo docker load -i A6-kubeflow-tensorflow-1.12.0-notebook-gpu-v-base-76107ff-897.tar echo "" echo "===================================================================" echo "Load Kubeflow images Finished." echo "This tool created by https://my.oschina.net/u/2306127" echo "Please visit https://github.com/openthings/kubernetes-tools" echo "==================================================================="
在每個節點執行上面的腳本,也可使用 ansible來遠程批量執行。
ansible all -i hosts_ansible -m shell -a "unzip -u /home/supermap/kf-images-0.3.3.zip && cd /home/supermap/kf-images-0.3.3 && ./kf-images-load.sh" --ask-sudo-pass --become --become-method=sudo
上面的hosts_ansible爲ansible的hosts列表文件(請參考 Ansible快速開始-指揮集羣 )。
上面的這個過程也適用於Kubernetes自己鏡像的下載和更新。更多參考:
查看鏡像是否有新的版本: