Ubuntu 14.04主機上部署k8s集群


部署結構

  1. 3台虛擬機,其中1台作為master,2台作為minion,都安裝了最新版本的docker engine(目前是1.11.2)
  2. k8s版本是1.3.0

主要問題

部署步驟基本按照官方文檔:http://kubernetes.io/docs/getting-started-guides/ubuntu/,但是有兩個主要問題

  1. 國內下載安裝包太慢

    安裝腳本使用curl下載k8s的release tar包(1.3.0的release包有1.4G),經常timeout中斷安裝
     
  2. GFW限制了對gcr.io的訪問

    k8s在創建Pod的時候,需要從gcr.io下載一個helper鏡像(目前是 gcr.io/google_containers/pause-amd64:3.0 )。這個問題會導致無法下載該鏡像,然后Pod一直處於ContainerCreating狀態。

 

這里主要介紹一下如何解決這兩個問題。

部署步驟

1. 在部署機上下載k8s,並編譯。

部署機需要安裝docker engine(1.11.2)和go(1.6.2)

$git clone https://github.com/kubernetes/kubernetes.git
$cd kubernetes
$make release-skip-tests
$mv _output/release-stage/full/kubernetes/server/kubernetes-server-linux-amd64.tar.gz cluster/ubuntu/

Note

除了linux/amd64,默認還會為其他平台做交叉編譯。為了減少編譯時間,可以修改hack/lib/golang.sh,把KUBE_SERVER_PLATFORMS, KUBE_CLIENT_PLATFORMS和KUBE_TEST_PLATFORMS中除linux/amd64以外的其他平台注釋掉。

2. 下載etcd,flannel安裝包

復制代碼
$ETCD_VERSION=${ETCD_VERSION:-"2.3.1"}
$ETCD="etcd-v${ETCD_VERSION}-linux-amd64"
$curl -L https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/${ETCD}.tar.gz -o cluster/ubuntu/etcd.tar.gz
 
$FLANNEL_VERSION=${FLANNEL_VERSION:-"0.5.5"}
$curl -L  https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-${FLANNEL_VERSION}-linux-amd64.tar.gz -o cluster/ubuntu/flannel.tar.gz
復制代碼

 3. 解壓縮安裝包

復制代碼
$cd cluster/ubuntu
$mkdir -p binaries/master
$mkdir -p binaries/minion
 
$ tar xzf etcd.tar.gz
$ cp ${ETCD}/etcd ${ETCD}/etcdctl binaries/master
$ echo ${ETCD_VERSION} > binaries/.etcd
 
$tar xzf flannel.tar.gz
$cp flannel-${FLANNEL_VERSION}/flanneld binaries/master
$cp flannel-${FLANNEL_VERSION}/flanneld binaries/minion
$echo ${FLANNEL_VERSION} > binaries/.flannel
 
$KUBE_VERSION=1.3.0
$tar xzf kubernetes-server-linux-amd64.tar.gz
$cp kubernetes/server/bin/kube-apiserver kubernetes/server/bin/kube-controller-manager kubernetes/server/bin/kube-scheduler binaries/master
$cp kubernetes/server/bin/kubelet kubernetes/server/bin/kube-proxy binaries/minion
$cp kubernetes/server/bin/kubectl binaries/
$echo ${KUBE_VERSION} > binaries/.kubernetes
復制代碼

4. 安裝

復制代碼
$ cd ../
 
$export nodes="ubuntu@10.1.9.2 ubuntu@10.1.9.3 ubuntu@10.1.9.4"
$export role="ai i i"
$export NUM_NODES=${NUM_NODES:-3}
$export SERVICE_CLUSTER_IP_RANGE=192.168.3.0/24
$export FLANNEL_NET=172.16.0.0/16
 
$KUBERNETES_PROVIDER=ubuntu ./kube-up.sh
復制代碼

5. 解決不能從gcr.io下載pause-amd64:3.0 鏡像的問題

1) 在可以訪問gcr.io的地方

docker pull gcr.io/google_containers/pause-amd64:3.0

傳到私有docker registry

docker tag gcr.io/google_containers/pause-amd64:3.0 k8s-docker.mydomain.com/google_containers/pause-amd64:3.0

docker push k8s-docker.mydomain.com/google_containers/pause-amd64:3.0

2) 在所有的k8s節點

docker pull k8s-docker.mydomain.com/google_containers/pause-amd64:3.0

docker tag k8s-docker.mydomain.com/google_containers/pause-amd64:3.0 gcr.io/google_containers/pause-amd64:3.0

Note

不通過私有registry中轉,而是使用docker save/load應該也可以,只是要把save導出的文件復制到所有節點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM