目的
- 構(gòu)建一個(gè)虛擬機(jī),為后續(xù)搭建環(huán)境提供Node模板
- 盡量避免對(duì)科學(xué)上網(wǎng)的依賴
依賴
- VirtualBox 5.2.16
- Ubuntu Sever 16.04 x64
- Docker 18.06.0-ce
- kubernetes v1.11.1
準(zhǔn)備docker鏡像倉(cāng)庫(kù)
提前準(zhǔn)備好kube鏡像,防止搭建環(huán)境時(shí)下載不到鏡像而失敗
-
k8s.gcr.io鏡像列表
注意:鏡像版本與Kuberneters版本保持一致
"kube-proxy-amd64:v1.11.1"
"kube-controller-manager-amd64:v1.11.1"
"kube-scheduler-amd64:v1.11.1"
"kube-apiserver-amd64:v1.11.1"
"kubernetes-dashboard-amd64:v1.8.3"
"coredns:1.1.3"
"etcd-amd64:3.2.18"
"pause:3.1"
在阿里云平臺(tái)上準(zhǔn)備一臺(tái)按量付費(fèi)的海外云服務(wù)器(用完就可以釋放),并在此服務(wù)器上下載上述docker鏡像然后推送到自己的容器鏡像服務(wù)中,參考阿里云容器鏡像服務(wù)
-
拉取鏡像
#! /bin/bash
images=(
"kube-proxy-amd64:v1.11.1"
"kube-controller-manager-amd64:v1.11.1"
"kube-scheduler-amd64:v1.11.1"
"kube-apiserver-amd64:v1.11.1"
"kubernetes-dashboard-amd64:v1.8.3"
"coredns:1.1.3"
"etcd-amd64:3.2.18"
"pause:3.1"
)
for image in ${images[@]}
do
docker pull k8s.gcr.io/$image
done
-
推送鏡像
#! /bin/bash
images=(
"kube-proxy-amd64:v1.11.1"
"kube-controller-manager-amd64:v1.11.1"
"kube-scheduler-amd64:v1.11.1"
"kube-apiserver-amd64:v1.11.1"
"kubernetes-dashboard-amd64:v1.8.3"
"coredns:1.1.3"
"etcd-amd64:3.2.18"
"pause:3.1"
)
mirror=your_registry_server
ns=your_registry_namespace
echo "[[mirror=$mirror, namespace=$ns"
for image in ${images[@]}
do
echo "[[push image - $image"
# tag gcr image
docker tag k8s.gcr.io/$image $mirror/$ns/$image
# push gcr image
docker push $mirror/$ns/$image
done
-
其他選擇
可以將鏡像全部打包存儲(chǔ)在自己的硬盤上,需要的時(shí)候在解包到docker所在的機(jī)器上
# 打包
sudo docker save $image > $image.tar
tar zcvf images.tar.gz *.tar
# 下載到本地硬盤
wget images.tar.gz
# 上傳到模板機(jī)器上再解包
upload images.tar.gz
sudo docker load -i $image.tar
# 如果需要,重新打標(biāo)簽
# sudo docker tag
構(gòu)建模板
制作一個(gè)模板虛擬機(jī),方便在搭建環(huán)境時(shí)直接根據(jù)此模板生成Node虛擬機(jī)
新建vbox虛擬機(jī)并安裝Ubuntu Server
無(wú)
安裝docker-ce
關(guān)閉交換分區(qū)
sudo swapoff -a
也可以在啟動(dòng)腳本(如/etc/init.d/rc.local)中,啟動(dòng)時(shí)自動(dòng)關(guān)閉
修改網(wǎng)絡(luò)配置
參考如下命令
sudo -s
echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
sysctl -p
安裝Kubernetes
sudo -s
apt-get update && apt-get install -y apt-transport-https
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb [arch=amd64] https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
準(zhǔn)備docker鏡像
拉取前面所將的鏡像倉(cāng)庫(kù)中的docker鏡像并重新打標(biāo)簽
#! /bin/bash
images=(
"kube-proxy-amd64:v1.11.1"
"kube-controller-manager-amd64:v1.11.1"
"kube-scheduler-amd64:v1.11.1"
"kube-apiserver-amd64:v1.11.1"
"kubernetes-dashboard-amd64:v1.8.3"
"coredns:1.1.3"
"etcd-amd64:3.2.18"
"pause:3.1"
)
mirror=your_registry_server
ns=your_registry_namespace
echo "[[mirror=$mirror, namespace=$ns"
for image in ${images[@]}
do
echo "[[pull image - $image"
docker pull $mirror/$ns/$image
docker tag $mirror/$ns/$image k8s.gcr.io/$image
done
完成
接下來(lái)我們就用這個(gè)模板來(lái)創(chuàng)建kuberneters集群節(jié)點(diǎn)主機(jī),并搭建集群環(huán)境
我已準(zhǔn)備好的鏡像
registry.cn-hangzhou.aliyuncs.com/kuberneters/kube-proxy-amd64:v1.11.1
registry.cn-hangzhou.aliyuncs.com/kuberneters/kube-controller-manager-amd64:v1.11.1
registry.cn-hangzhou.aliyuncs.com/kuberneters/kube-scheduler-amd64:v1.11.1
registry.cn-hangzhou.aliyuncs.com/kuberneters/kube-apiserver-amd64:v1.11.1
registry.cn-hangzhou.aliyuncs.com/kuberneters/kubernetes-dashboard-amd64:v1.8.3
registry.cn-hangzhou.aliyuncs.com/kuberneters/coredns:1.1.3
registry.cn-hangzhou.aliyuncs.com/kuberneters/etcd-amd64:3.2.18
registry.cn-hangzhou.aliyuncs.com/kuberneters/pause:3.1