kubenetesKubernetes

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

2020-02-19  本文已影响0人  浮云_9046

目标

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

目录

环境

准备安装包

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

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

# 从阿里云拉取镜像
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关键字找到如下依赖镜像。

# 拉取全部镜像
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}'

得到这两个镜像名称。

  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两个部署文件,中需要使用以下两个镜像,还是按前面到方法拉下来保存起来。


# 拉取镜像
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}'

得到这两个镜像名称。

  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集群到资源包,下一步将介绍如何使用它。

上一篇下一篇

猜你喜欢

热点阅读