美文网首页kubenetesKubernetes
离线安装Kubernetes v1.17.1 - 准备离线资源包

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

作者: 浮云_9046 | 来源:发表于2020-02-19 11:41 被阅读0次

    目标

    在没有互联网到企业内网部署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集群到资源包,下一步将介绍如何使用它。

    相关文章

      网友评论

        本文标题:离线安装Kubernetes v1.17.1 - 准备离线资源包

        本文链接:https://www.haomeiwen.com/subject/hqtafhtx.html