目的
- 构建一个虚拟机,为后续搭建环境提供Node模板
- 尽量避免对科学上网的依赖
依赖
- VirtualBox 5.2.16
- Ubuntu Sever 16.04 x64
- Docker 18.06.0-ce
- kubernetes v1.11.1
准备docker镜像仓库
提前准备好kube镜像,防止搭建环境时下载不到镜像而失败
-
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"
在阿里云平台上准备一台按量付费的海外云服务器(用完就可以释放),并在此服务器上下载上述docker镜像然后推送到自己的容器镜像服务中,参考阿里云容器镜像服务
-
拉取镜像
#! /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
-
其他选择
可以将镜像全部打包存储在自己的硬盘上,需要的时候在解包到docker所在的机器上
# 打包
sudo docker save $image > $image.tar
tar zcvf images.tar.gz *.tar
# 下载到本地硬盘
wget images.tar.gz
# 上传到模板机器上再解包
upload images.tar.gz
sudo docker load -i $image.tar
# 如果需要,重新打标签
# sudo docker tag
构建模板
制作一个模板虚拟机,方便在搭建环境时直接根据此模板生成Node虚拟机
新建vbox虚拟机并安装Ubuntu Server
无
安装docker-ce
参考文档
关闭交换分区
sudo swapoff -a
也可以在启动脚本(如/etc/init.d/rc.local)中,启动时自动关闭
修改网络配置
参考如下命令
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 </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
准备docker镜像
拉取前面所将的镜像仓库中的docker镜像并重新打标签
#! /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
完成
接下来我们就用这个模板来创建kuberneters集群节点主机,并搭建集群环境
我已准备好的镜像
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