Kubernetes-基于Rancher进行Kubernetes的离线安装

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 1、环境准备 在进行Kubernetes部署之前,需要提供其要求的软硬件环境。此文档描述的场景:在无法直接连接互联网的情况下,如何进行安装部署Kubernetes。 1.1 操作系统 操作系统推荐使用: Ubuntu 16.

1、环境准备


在进行Kubernetes部署之前,需要提供其要求的软硬件环境。此文档描述的场景:在无法直接连接互联网的情况下,如何进行安装部署Kubernetes。

1.1 操作系统

操作系统推荐使用:

  • Ubuntu 16.04 (64-bit)
  • Red Hat Enterprise Linux 7.5 (64-bit)
序号 主机 角色 软硬件环境 硬件配置 备注
1 k8s-master 主节点
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 容器环境:Docker version 1.13.1
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:500GB
    • 所有磁盘:1TB
部署Kunbernetes集群主节点和etcd,用于管理和监控Kubernetes其它的工作节点和存在状态信息。
2 k8s-worker01 工作节点
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 容器环境:Docker version 1.13.1
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:500GB
    • 所有磁盘:1TB
部署Kubernetes集群的工作节点,用于运行容器化的应用。
3 k8s-worker02 工作节点
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 容器环境:Docker version 1.13.1
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:500GB
    • 所有磁盘:1TB
部署Kubernetes集群的工作节点,用于运行容器化的应用。
4 k8s-worker03 工作节点
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 容器环境:Docker version 1.13.1
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:500GB
    • 所有磁盘:1TB
部署Kubernetes集群的工作节点,用于运行容器化的应用。
5 nfs-server NFS服务器
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • NFS:nfs v4
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:1TB
    • 所有磁盘:2TB
部署nfs服务,用于为上层所有的应用提供持久化存储。
6 registry-server 私有镜像仓库
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 容器环境:Docker version 1.13.1
  • 镜像仓库:sonatype/nexus3
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:1TB
    • 所有磁盘:2TB
部署镜像仓库,用于提供镜像的存储和拉取。
7 kubectl/helm 工具节点
  • 操作系统:Windows
  • 命令行工具:kubectl
  • 包安装工具:helm
  • CPU:8核
  • 内存:8GB
  • 磁盘:500GB
8 public 下载资源
  • 操作系统:CentOS Linux release 7.2.1511 (Core)
  • 容器环境:Docker version 1.13.1
  • CPU:8核
  • 内存:8GB
  • 磁盘:
    • 根磁盘:500GB
    • 所有磁盘:1TB

1.2 设置防火墙策略

需要开放如下的端口:

协议 端口 描述
TCP 80 Rancher UI/API when external SSL termination is used
TCP 443 Rancher agent, Rancher UI/API, kubectl
TCP 6443 Kubernetes apiserver
TCP 22 SSH provisioning of nodes using Node Driver
TCP 2379 etcd client requests
TCP 2380 etcd peer communication
UDP 8472 Canal/Flannel VXLAN overlay networking
TCP 10250 kubelet
TCP/UDP 30000-32767 NodePort port range
TCP 8081 Nexus Port
TCP 5001 Registry Port

如果是刚开始试用,可以先关闭防火墙:

$ systemctl stop firewalld

Ubuntu默认未启用UFW防火墙,无需设置。也可手工关闭:

$ sudo ufw disable

1.3 环境清理(可选)

1)请检查有没有/var/lib/rancher/state/这个文件夹,如果有则删除;

2)如果以前有通过Rancher安装过kubernetes,请执行命令:

#删除正在运行的容器

$ docker rm -f -v $(docker ps -aq)

# 删除存储卷

$ docker volume rm $(docker volume ls)

#删除遗留的目录

$ rm -rf /etc/kubernetes/ssl
$ rm -rf /var/lib/etcd
$ rm -rf /etc/cni
$ rm -rf /opt/cni
$ rm -rf /var/run/calico

2、安装介质下载和准备

1)docker

下载docker的安装文件docker-engine-1.12.6-1.el7.centos.x86_64.rpm和docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm:

$ wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-1.12.6-1.el7.centos.x86_64.rpm
$ wget https://yum.dockerproject.org/repo/main/centos/7/Packages/docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm

2)私有镜像仓库

下载nexus3的镜像,后续将以nexus3作为私有镜像仓库:

$ docker pull sonatype/nexus3:latest
$ docker save sonatype/nexus3:latest > nexus3.tar

3)rancher镜像

下载拉取镜像的脚本:rancher-save-images.sh和上传镜像至镜像仓库的脚本:rancher-load-images.sh

$ wget https://github.com/rancher/rancher/releases/tag/v2.0.0/rancher-save-images.sh
$ wget https://github.com/rancher/rancher/releases/tag/v2.0.0/rancher-load-images.sh

通过执行rancher-save-images.sh拉取镜像:

$ . rancher-save-images.sh

此脚本用以下载部署时所需的所有镜像,并将这些镜像压缩到rancher-images.tar.gz中。

4)kubectl

下载在windows下使用的kubectl工具:

$ wget https://storage.googleapis.com/kubernetes-release/release/v1.9.0/bin/windows/amd64/kubectl.exe

5)helm

下载helm客户端,此处下载的是Windows下的2.8.0版本:

$ wget https://storage.googleapis.com/kubernetes-helm/helm-v2.8.0-windows-amd64.tar.gz

下载helm服务端tiller,此处下载的是Windows下的2.8.0版本:

$ docker pull rancher/tiller:v2.8.2 
$ docker save rancher/tiller:v2.8.2 > tiller.tar

3、Docker

Kubernetes1.8需要Docker 1.12.6、1.13.1、17.03;Kubernetes1.8不支持更高版本的Docker。

3.1 Docker安装

将下载的docker-engine-1.12.6-1.el7.centos.x86_64.rpm和docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm拷贝至各台需要安装Docker的机器上,通过yum localinstall命令进行安装:

$ yum localinstall -y docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm

3.2 设置根目录(可选)

在docker安装成功后,通过执行如下的命令可以查看docker的信息:

$ docker info

默认情况,docker的根目录为/var/lib/docker,它将会占据大量的磁盘空间。因此需要预先为其提供足够的磁盘空间,此处为其挂接一块专用的磁盘。假设这里存在一个新增的/dev/vdc磁盘。

1)创建新的专用的根目录:

$ mkdir /docker-root

2)将磁盘挂接至新的根目录

$ mount /dev/vdc /docker-root

3)设置挂接永久有效

$ echo “/dev/vdc /docker-root ext4 defaults 0 0 > /etc/fstab

4)将docker设置为使用新的根目录

$ vi /etc/docker/daemon.json

添加:”graph": "/docker-root"

{ "graph":"/docker-root" }

5)重启docker

$ systemctl daemon-reload
$ systemctl restart docker

4、提供网络存储(可选)

此处以nfs中文网络存储。

4.1 配置共享目录

在nfs服务器中为客户端配置共享目录:

# 创建共享根目录
$ mkdir /nfs-share
# 创建私有镜像仓库目录
$ mkdir /nfs-share/docker-registry
$ echo "/nfs-share *(rw,async,no_root_squash)" >> /etc/exports

通过执行如下命令是配置生效:

$exportfs -r

4.2 启动服务

1)由于必须先启动rpcbind服务,再启动nfs服务,这样才能让nfs服务在rpcbind服务上注册成功:

$ systemctl start rpcbind

2)启动nfs服务:

$ systemctl start nfs-server

3)设置rpcbind和nfs-server开机启动:

$ systemctl enable rpcbind
$ systemctl enable nfs-server

4.3 检查nfs服务是否正常启动

$ showmount -e localhost
$ mount -t nfs 127.0.0.1:/data /mnt

5、安装私有镜像仓库

1)导入镜像

复制nexus.tar文件到需要安装镜像仓库的机器,并通过docker load命令导入镜像:

$ docker load < nexus.tar

2)设置存储目录

创建持久化目录,并挂接nfs的共享目录:

$ mkdir /mnt/nexus-data && chmod 777 /mnt/nexus-data
$ mount -t nfs {nfs-server}:/nfs-share/docker-registry /mnt/nexus-data

3)运行私有镜像仓库

运行nexus3容器,并8081端口和5001端口,5001端口为docker私有镜像仓库的对外端口:

$ docker run -d -p 8081:8081 -p 5001:5001 -v /mnt/nexus-data:/nexus-data --name nexus sonatype/nexus3

4)创建docker镜像仓库

在nexus3中创建一个名称为docker的镜像仓库,端口为5001。

6 安装部署

拷贝tiller.tar、rancher-images.tar.gz和rancher-load-images.sh到安装rancher服务的机器上。

1)上传rancher相关镜像至私有镜像仓库

执行rancher-load-images.sh:

$ . rancher-load-images.sh

系统会导入所有的镜像,并将其打上私有镜像仓库的标签,并上传至私有镜像仓库。

2)上传tiller镜像至私有镜像仓库

# 导入tiller镜像
$ docker load < tiller.tar
# 将tiller打上私有镜像的标签
$ docker tag rancher/tiller:v2.8.2 {registry-ip}/rancher/tiller:v2.8.2 # 上传至私有镜像仓库
$ docker push 10.10.30.190:5001/rancher/tiller:v2.8.2

6.1 安装rancher服务

通过执行docker run的命令,进行rancher服务的安装:

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 {registry-ip}/rancher/rancher:2.0.0

6.2 创建集群

6.2.1 登录系统

1)登录rancher

在rancher服务正常启动后,通过浏览器访问rancher。

2)设置管理员密码

在此次登录时,根据提示设置管理员的密码。

3)设置访问地址

在设置好管理员的密码后,设置rancher的对外访问地址。

4)设置私有镜像仓库

将system-default-registry设置为本文前面创建的私有镜像仓库,此处为10.10.30.190:5001。

6.2.2 创建集群

进入rancher后,创建名称为demo的custom类型集群。

6.3 添加节点

6.3.1 添加Master和etcd

在添加创建集群的页面,选择node角色为“etcd”和“control”,即添加的为Master和etcd节点:


并在集群上执行如下的命令,以将机器添加到集群中作为Master和etcd节点。

$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes \
-v /var/run:/var/run {registry-ip}/rancher/rancher-agent:v2.0.0 --server https://10.0.32.172 \ --token pn7g52q7htck8s5pgmpdvbsq2lrplw8cxnvhjm4rp5kvf2k9ntx7tt \
--ca-checksum d8be0a0b9f16c3238836e23b338630ab0c737051ceb14ccc35afd13c2898369a --etcd --controlplane

6.3 添加worker

在添加创建集群的页面,选择node角色为“worker”,即添加的为Worker节点:

并在集群上执行如下的命令,以将机器添加到集群中作为Worker节点。

$ sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes \
-v /var/run:/var/run {registry-ip}/rancher/rancher-agent:v2.0.0 --server https://10.0.32.172 \ --token pn7g52q7htck8s5pgmpdvbsq2lrplw8cxnvhjm4rp5kvf2k9ntx7tt \
--ca-checksum d8be0a0b9f16c3238836e23b338630ab0c737051ceb14ccc35afd13c2898369a --worker

7 安装kubectl

此处的kubectl安装在Windows操作系统中:

1)安装部署kubectl

拷贝kubectl,并将kubectl.exe所在的地址添加至Windows的环境变量的Path中。

2)配置kubeconfig文件

在当前用户的目录下,创建./kube文件夹,并创建config文件。

rancher系统中,进入所创建的集群的主页,通过点击“Kube config File”进入kubeconfig信息页面。并将kubeconfig文件的内容拷贝到~/.kube/config中。

3)验证

通过执行如下的命令,验证kubectl配置是否成功:

$ kubectl get nodes

8 安装helm

此处的kubectl安装在Windows操作系统中,并与kubectl处于同一台机器:

8.1 安装Helm客户端

拷贝helm-v2.8.0-windows-amd64.tar.gz,并将其解压缩到本地,并将helm.exe所在的地址添加至Windows的环境变量的Path中。

8.2 安装Tiller服务器

1)创建一个名为tiller的Service Account

$ kubectl create serviceaccount tiller --namespace kube-system

2)授予名为tiller的Service Account集群管理员角色cluster-admin:

将tiller绑定至集群管理员角色的的yaml文件如下所示:

apiVersion: rbac.authorization.k8s.io/v1beta1 
kind: ClusterRoleBinding 
metadata: 
 name: tiller 
roleRef: 
 apiGroup: rbac.authorization.k8s.io 
 kind: ClusterRole 
 name: cluster-admin 
subjects: - kind: ServiceAccount 
 name: tiller 
 namespace: kube-system

通过执行kubectl create -f将授予tiller集群管理员角色:

$ kubectl create -f rbac-config.yaml

3)安装Tiller服务器

由于是离线安装,先启动本地的chart仓库:

$ helm serve

通过helm init命令在Kubernetes集群中安装Tiller服务器端,在这里通过–service-account字段设置访问用户为tiller,通过–stable-repo-url字段设置所使用的仓库为本地仓库,通过–tiller-image字段指定使用私有镜像仓库中的tiller:v2.8.2镜像。

$ helm init --service-account=tiller --stable-repo-url=http://127.0.0.1:8879 \ -–tiller-image={registry-ip}/rancher/tiller:v2.8.2

8.3 验证安装

在安装完成后,可以通过执行如下命令来检查是安装成功:

$ helm version

如果正确显示Helm客户端和Tiller服务器的版本,这表示安装成功。

或者通过执行kubectl的如下命令来查看是否已正常按照Tiller服务器:

$ kubectl get pods -n kube-system

参考资料

1.《Single Node Installation》地址:https://rancher.com/docs/rancher/v2.x/en/installation/single-node-install

2.《Quick Start Guide》地址:https://rancher.com/docs/rancher/v2.x/en/quick-start-guide/

3. 《Installation》地址:https://rancher.com/docs/rancher/v2.x/en/installation/

本文转自中文社区-Kubernetes-基于Rancher进行Kubernetes的离线安装

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
Kubernetes 监控 数据安全/隐私保护
K8s好看的管理页面Rancher管理K8S
K8s好看的管理页面Rancher管理K8S
102 4
|
2月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
77 3
|
2月前
|
Kubernetes Docker 容器
rancher docker k8s安装(一)
rancher docker k8s安装(一)
45 2
|
2月前
|
Kubernetes Docker 容器
rancher docker k8s安装(二)
rancher docker k8s安装(二)
56 0
|
7月前
|
Kubernetes 流计算 Perl
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
在Rancher K8s上部署Flink时,TaskManager连接不上并不断重启可能是由多种原因导致的
192 7
|
4月前
|
Kubernetes 监控 数据安全/隐私保护
晓得用rancher怎么去管理K8S集群吗
晓得用rancher怎么去管理K8S集群吗
61 0
|
4月前
|
监控 Kubernetes 开发者
不容忽视的实力!Rancher:容器编排平台的领军者,引领行业风潮无人不知无人不晓!
【8月更文挑战第6天】Rancher是容器编排领域的领航者,提供开源容器管理平台,简化Kubernetes操作,支持多集群管理及DevOps工具集成。其直观界面便于部署、监控容器化应用,并提供应用商店加速部署流程。Rancher具备高度灵活性与安全性,支持自动化备份、恢复及容器迁移,确保业务连续性。通过持续创新与社区合作,Rancher引领行业发展,赋能开发者实现高效软件交付。
108 0
|
5月前
|
消息中间件 Kubernetes Kafka
实时计算 Flink版操作报错合集之在Rancher K8s部署时,TaskManager无法正常连接到其他TaskManager,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
6月前
|
Kubernetes Linux 网络安全
K8S 离线安装版 1.23.1
在准备Kubernetes (k8s) 集群部署时,执行了以下步骤: 1. 关闭防火墙和服务:`systemctl stop firewalld && systemctl disable firewalld`,并禁用SELinux和swap。 2. 添加主机条目到`/etc/hosts`,同步时间使用`ntpdate time.windows.com`。 3. 设置k8s仓库源,安装必要的工具,如`yum install yum-utils -y`。 4. 安装Docker,并下载k8s相关软件包。 5. 制作离线包,使用`docker save`保存镜像,然后在目标机器上用`docker
298 0
|
7月前
|
存储 运维 Kubernetes
基于rancher部署k8s及使用
基于rancher部署k8s及使用
354 2