前言
k8s 集群部署是个老生常谈的问题,网上资料一大把,各路大神祭出了各种方案:
- 使用 linux 发行版提供的包管理器(比如 centos yum)
- 使用 第三方工具包(脚本)
- 使用 第三方二次开发包
本文介绍在 浏览 k8s 源代码过程中发现的 k8s 的一种半手工的部署方法
源头
浏览源代码的过程中发现有这么个目录
# /opt/kubernetes-src/src/k8s.io/cluster/centos drwxrwxr-x 4 xingpingz xingpingz 4096 12月 4 13:31 ./ drwxrwxr-x 21 xingpingz xingpingz 4096 12月 4 13:31 ../ -rwxrwxr-x 1 xingpingz xingpingz 4305 12月 4 11:37 build.sh* -rwxrwxr-x 1 xingpingz xingpingz 1763 12月 4 11:40 config-build.sh* -rwxrwxr-x 1 xingpingz xingpingz 4899 12月 4 13:31 config-default.sh* -rw-rw-r-- 1 xingpingz xingpingz 747 12月 4 11:37 config-test.sh -rwxrwxr-x 1 xingpingz xingpingz 2739 12月 4 11:40 deployAddons.sh* -rw-rw-r-- 1 xingpingz xingpingz 175 12月 4 11:37 .gitignore drwxrwxr-x 3 xingpingz xingpingz 4096 12月 4 11:37 master/ drwxrwxr-x 4 xingpingz xingpingz 4096 12月 4 11:37 node/ -rwxrwxr-x 1 xingpingz xingpingz 12319 12月 4 11:37 util.sh*
一看就知道这些 shell 脚本应该是用于在 centos 中自动下载,安装 k8s 的
查看一下配置文件 config-build.sh,这里可以配置要下载的 k8s 各个组件的版本
RELEASES_DIR=${RELEASES_DIR:-/tmp/downloads} # Define docker version to use. DOCKER_VERSION=${DOCKER_VERSION:-"1.12.1"} # Define flannel version to use. FLANNEL_VERSION=${FLANNEL_VERSION:-"0.6.1"} # Define etcd version to use. ETCD_VERSION=${ETCD_VERSION:-"3.0.9"} # Define k8s version to use. K8S_VERSION=${K8S_VERSION:-"1.3.7"} DOCKER_DOWNLOAD_URL=\ "https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz" FLANNEL_DOWNLOAD_URL=\ "https://github.com/coreos/flannel/releases/download/v${FLANNEL_VERSION}/flannel-v${FLANNEL_VERSION}-linux-amd64.tar.gz" ETCD_DOWNLOAD_URL=\ "https://github.com/coreos/etcd/releases/download/v${ETCD_VERSION}/etcd-v${ETCD_VERSION}-linux-amd64.tar.gz" # TODO(#33726): switch to dl.k8s.io K8S_CLIENT_DOWNLOAD_URL=\ "https://storage.googleapis.com/kubernetes-release/release/v${K8S_VERSION}/kubernetes-client-linux-amd64.tar.gz" K8S_SERVER_DOWNLOAD_URL=\ "https://storage.googleapis.com/kubernetes-release/release/v${K8S_VERSION}/kubernetes-server-linux-amd64.tar.gz"
从 github 上下载的组件还好说,但是从 storage.googleapis.com 拉东西下来估计够呛