离线安装Kubernetes v1.17.1 - 准备离线资源包

目标

在没有互联网到企业内网部署Kubernetes集群

目录

环境

  • CentOS Linux release 7.7.1908 (Core)
  • Docker 19.03.5
  • Kubernetes 1.17.1

准备安装包

Docker

Kubernetes

获取yum 依赖包

首先在一台能联网Centos 7中下载依赖包,注意这个系统要是全新minimal安装的,如果已经通过yum安装过一些软件,下载的依赖包可能不完整。

所有依赖包会下载到/root/k8sOfflineSetup/packages目录。

# 使用阿里云镜像源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 创建本地仓库包
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    createrepo

# 实用工具
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    yum-utils \
    nfs-utils \
    wget

# docker 依赖包
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    device-mapper-persistent-data \
    lvm2

# 添加阿里云Docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# docker
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    docker-ce-19.03.5 \
    docker-ce-cli-19.03.5 \
    containerd.io

# 时间同步
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    chrony

# HAProxy 和 KeepAlived
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    haproxy \
    keepalived

# 配置K8S的yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

# kubelet
yum install --downloadonly --downloaddir=/root/k8sOfflineSetup/packages \
    kubelet-1.17.1 \
    kubeadm-1.17.1 \
    kubectl-1.17.1

获取kubeadm依赖镜像

获取kubeadm用到的镜像列表,这步操作要在一台安装好Docker环境的计算机上进行,拉取完成后打包复制到资源包/root/k8sOfflineSetup/images目录中。

kubeadm config images list

得到的结果是以下这些镜像,因为镜像的服务器都在国外,下载速度慢或者根本无法下载。所以,我们先在阿里云上获取镜像后再改名放到资源包中。

  • k8s.gcr.io/kube-apiserver:v1.17.1
  • k8s.gcr.io/kube-controller-manager:v1.17.1
  • k8s.gcr.io/kube-scheduler:v1.17.1
  • k8s.gcr.io/kube-proxy:v1.17.1
  • k8s.gcr.io/pause:3.1
  • k8s.gcr.io/etcd:3.4.3-0
  • k8s.gcr.io/coredns:1.6.5
# 从阿里云拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.17.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager:v1.17.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler:v1.17.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.17.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/etcd:3.4.3-0
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.5

# 重新tag镜像
docker images \
    | grep registry.cn-hangzhou.aliyuncs.com/google_containers \
    | sed 's/registry.cn-hangzhou.aliyuncs.com\/google_containers/k8s.gcr.io/' \
    | awk '{print "docker tag " $3 " " $1 ":" $2}' \
    | sh

# 删除旧镜像
docker images \
    | grep registry.cn-hangzhou.aliyuncs.com/google_containers \
    | awk '{print "docker rmi " $1 ":" $2}' \
    | sh

# 在当前目录导出镜像为压缩包
docker save -o kube-controller-manager-v1.17.1.tar k8s.gcr.io/kube-controller-manager:v1.17.1
docker save -o kube-apiserver-v1.17.1.tar k8s.gcr.io/kube-apiserver:v1.17.1
docker save -o kube-scheduler-v1.17.1.tar k8s.gcr.io/kube-scheduler:v1.17.1
docker save -o kube-proxy-v1.17.1.tar k8s.gcr.io/kube-proxy:v1.17.1
docker save -o coredns-1.6.5.tar k8s.gcr.io/coredns:1.6.5
docker save -o etcd-3.4.3-0.tar k8s.gcr.io/etcd:3.4.3-0
docker save -o pause-3.1.tar k8s.gcr.io/pause:3.1

calico网络插件依赖镜像

Quickstart for Calico on Kubernetes找到calico.yaml文件,命名为calico-v3.10.3.yaml保存到资源包/root/k8sOfflineSetup/plugins目录中。

cat calico-v3.10.3.yaml | grep image: | awk '{print $2}'

从文件中搜索image关键字找到如下依赖镜像。

  • calico/cni:v3.10.3
  • calico/pod2daemon-flexvol:v3.10.3
  • calico/node:v3.10.3
  • calico/kube-controllers:v3.10.3
# 拉取全部镜像
cat calico-v3.10.3.yaml \
    | grep image: \
    | awk '{print "docker pull " $2}' \
    | sh

# 在当前目录导出镜像为压缩包
docker save -o calico-cni-v3.10.3.tar calico/cni:v3.10.3
docker save -o calico-pod2daemon-flexvol-v3.10.3.tar calico/pod2daemon-flexvol:v3.10.3
docker save -o calico-node-v3.10.3.tar calico/node:v3.10.3
docker save -o calico-kube-controllers-v3.10.3.tar calico/kube-controllers:v3.10.3

同样拉取完成后打包复制到资源包/root/k8sOfflineSetup/images目录中。

kubernetes dashboard

从GitHub上找到Dashboard最新版本部署文件。

下载v2.0.0-rc5,命名为dashboard-v2.0.0-rc5.yaml保存到资源包/root/k8sOfflineSetup/plugins目录中。

修改dashboard-v2.0.0-rc5.yaml的imagePullPolicy,默认是Always,注释掉。否则即使本地已有镜像dashboard启动时还是要从网上拉取。为了内网能正常运行,所以禁止每次运行都重新pull image。

  1. 找出镜像列表
cat dashboard-v2.0.0-rc5.yaml | grep image: | awk '{print $2}'

得到这两个镜像名称。

  • kubernetesui/dashboard:v2.0.0-rc5
  • kubernetesui/metrics-scraper:v1.0.3
  1. 拉取镜像
cat dashboard-v2.0.0-rc5.yaml \
    | grep image: \
    | awk '{print "docker pull " $2}' \
    | sh

# 在当前目录导出镜像为压缩包
docker save -o kubernetesui-dashboard-v2.0.0-rc5.tar kubernetesui/dashboard:v2.0.0-rc5
docker save -o kubernetesui-metrics-scraper-v1.0.3.tar kubernetesui/metrics-scraper:v1.0.3

同样拉取完成后打包复制到资源包/root/k8sOfflineSetup/images目录中。

Kuboard

查看Kuboard官网安装文档,从中获取到需要kuboard.yamlmetrics-server.yaml两个部署文件,中需要使用以下两个镜像,还是按前面到方法拉下来保存起来。

  • eipwork/kuboard:latest
  • registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6

# 拉取镜像
docker pull eipwork/kuboard:latest
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6

# 在当前目录导出镜像为压缩包
docker save -o kuboard-latest.tar eipwork/kuboard:latest
docker save -o kuboard-metrics-server-amd64-v0.3.6.tar registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64:v0.3.6

同样拉取完成后打包复制到资源包/root/k8sOfflineSetup/images目录中。

NGINX Ingress Controller

同样在官方网站找到部署yaml文件,并获取镜像列。

这里下载ingress-nginx-v0.29.0,命名为ingress-nginx-v0.29.0.yaml保存到资源包/root/k8sOfflineSetup/plugins目录中。

  1. 找出镜像列表
cat ingress-nginx-v0.29.0.yaml | grep image: | awk '{print $2}'

得到这两个镜像名称。

  • quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
  1. 拉取镜像
cat ingress-nginx-v0.29.0.yaml \
    | grep image: \
    | awk '{print "docker pull " $2}' \
    | sh

# 如果网络原因拉取速度太慢可从这儿拉取再重新tag
# docker pull quay.azk8s.cn/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
# docker tag quay.azk8s.cn/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
# docker rim quay.azk8s.cn/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0

# 在当前目录导出镜像为压缩包
docker save -o nginx-ingress-controller-0.29.0.tar quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0

同样拉取完成后打包复制到资源包/root/k8sOfflineSetup/images目录中。

资源包打包

将下载到packagesimageshttps://github.com/scfido/k8s-offline-setup仓库的文件合并,最后的目录应该是这样的

📁k8sOfflineSetup
├── 📁gpg
├── 📁plugins
├── 📁repos
├── 📁scripts
├── 📁packages
├── 📁images
├── 📃setup_master.sh
└── 📃setup_worker.sh

压缩资源包

cd /root/k8sOfflineSetup
tar -czf k8sOfflineSetup.tar.gz *

完成

现在你得到一个可以离线安装到Kubernetes单节点Master集群到资源包,下一步将介绍如何使用它。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351