RKE快速搭建离线k8s集群并用rancher管理界面

这篇具有很好参考价值的文章主要介绍了RKE快速搭建离线k8s集群并用rancher管理界面。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&docker,kubernetes,rancher,docker,k8s,rke

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


本文记录使用RKE快速搭建一套k8s集群过程,使用的rancher老版本2.5.7(当前最新版为2.7)。适用于初学测试、测试环境及定制化要求不高的生产环境。

关联文章:

1. k8s集群搭建前的服务器初始化,见文章《附1:k8s服务器初始化》

2. rke搭建的k8s集群新增节点,见文章《附2:rke安装的k8s集群新增主机》

1. 前提

1.1 服务器规划

IP hostname 角色 部署内容
10.99.68.62 k8s-master01 master-1 rke/kubectl/helm,执行k8s安装命令节点
10.99.68.63 k8s-master02 master-2
10.99.68.64 k8s-master03 master-3
10.99.68.65 k8s-node01 worker-1
10.99.68.66 k8s-node02 worker-2
10.99.68.67 k8s-node03 worker-3 测试rke部署的k8s集群添加新节点
10.99.68.68 rancherUI rancherUI rancher2.5.7

1.2 服务器初始化

可参考今日文章组附件《附1:k8s服务器初始化》

1.3 镜像导入

1.3.1安装自己的私有docker仓库,如harbor等

1.3.2 导入镜像

在https://github.com/rancher/rancher/releases页面找到需要的版本(不要下载标记为rc或Pre-release的版本,可能有坑,尤其在生产环境下是不稳定的),在一台能通公网的服务器执行下面三个文件下载镜像并导入私有仓库:

Release 文件 描述
rancher-images.txt
此文件包含安装 Rancher、创建集群和运行 Rancher 工具所需的镜像列表。
rancher-save-images.sh 这个脚本会从 DockerHub 中拉取在文件rancher-images.txt中描述的所有镜像,并将它们保存为文件rancher-images.tar.gz。
rancher-load-images.sh 这个脚本会载入文件rancher-images.tar.gz中的镜像,并将它们推送到您自己的私有镜像库。

2. K8S集群安装

2.1 基础环境

2.1.1配置hosts解析

在三台master服务器的/etc/hosts文件添加以下三行,配置三台服务器的hosts解析:


10.99.68.62 k8s-master01
10.99.68.63 k8s-master02
10.99.68.64 k8s-master03

2.1.2 三台服务器之间做ssh信任

在3个节点上,通过sre用户做免秘钥认证:

# su sre
$ ssh-keygen -t rsa -b 4096 
$ ssh-copy-id sre@10.99.68.62 
$ ssh-copy-id 10.99.68.63
$ ssh-copy-id 10.99.68.64

2.1.3 检查三台服务器之间时间是否同步

如不同步,先同步三台服务器的时间。

2.2 k8s集群基础命令安装(sre用户下执行)

2.2.1 安装rke、kubectl、helm

1)安装rke

将1.2.8_rke_linux-amd64文件上传到服务器,并执行以下命令:

$ mv 1.2.8_rke_linux-amd64 rke #给rke文件修改名字
$ chmod +x rke && sudo mv rke /usr/bin/ #添加执行权限并放入/usr/bin/目录下
$ rke --version #在sre用户测试运行rke命令

2)安装kubectl

将1.21.2-kubectl文件上传到服务器,并执行以下命令:

$ mv 1.21.2-kubectl kubectl      #给kubectl修改名字
$ chmod +x kubectl && sudo mv kubectl /usr/bin/     #给kubectl添加执行权限并移动到/usr/bin目录下
$ sudo yum install bash-completion -y      #CentOS Linux上,可能需要安装默认情况下未安装的bash-completion软件包
$ echo "source <(kubectl completion bash)" >> ~/.bashrc      #运行source <(kubectl completion bash)可将kubectl自动补全添加到当前shell,要使kubectl自动补全命令自动加载
$ source ~/.bashrc      #source让上一步骤修改生效
$ kubectl version    #测试sre用户能正常使用kubectl命令

3)安装helm

将安装包helm-v3.6.1-linux-amd64.tar.gz上传到服务器,并执行以下命令:

$ tar xf helm-v3.6.1-linux-amd64.tar.gz
$ sudo mv linux-amd64/helm /usr/bin/
$ helm version #测试sre用户能正常使用helm

2.2.2 rke安装k8s集群

编辑rke创建集群的文件k8s-cluster.yml

nodes:
 - address: 10.99.68.62 
 internal_address: 10.99.68.62 
 user: sre
 role: [controlplane, etcd]
 hostname_override: k8s-master01
 ssh_key_path: /home/sre/.ssh/id_rsa
 - address: 10.99.68.63
 internal_address: 10.99.68.63
 user: sre
 role: [controlplane, etcd]
 hostname_override: k8s-master02
 ssh_key_path: /home/sre/.ssh/id_rsa
 - address: 10.99.68.64
 internal_address: 10.99.68.64
 user: sre
 role: [controlplane, etcd]
 hostname_override: k8s-master03
 ssh_key_path: /home/sre/.ssh/id_rsa
 - address: 10.99.68.65
 internal_address: 10.99.68.65
 user: sre
 role: [worker]
 hostname_override: k8s-node01
 ssh_key_path: /home/sre/.ssh/id_rsa
 - address: 10.99.68.66
 internal_address: 10.99.68.66
 user: sre
 role: [worker]
 hostname_override: k8s-node02
 ssh_key_path: /home/sre/.ssh/id_rsa
private_registries:
 - url: harbor.test.com:8000   #私人harbor仓库地址
 is_default: true
services:
 etcd:
 backup_config:
 enabled: true
 interval_hours: 6
 retention: 60

配置文件说明:

参数-含义

address公共域名或IP地址

user可以运行docker命令的普通用户(不能用root用户) 

role分配给节点的Kubernetes角色列表

internal_addres:内部集群通信的私有域名或IP地址 

hostname_overrid:k8s节点hostname 

ssh_key_pat:指定ssh免秘钥的路径 

private_registrie:指定私有harbor仓库的地址,如果可以通外网的服务器就可以不配置 

etcd:开启了etcd的备份机制,每隔6小时备份一次,保存60天数据

文件编辑好后,在k8s-master01执行以下命令启动k8s集群:

rke up --config k8s-cluster.yml

 成功安装完成后,日志结尾如下图:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

在执行完成后,当前目录下会创建kube_config_k8s-cluster.ymlk8s-cluster.rkestate两个文件:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

当排除故障、升级群集时需要用到以下文件,请将其副本保存在一个安全的位置!

k8s-cluster.yml:RKE部署k8s集群配置文件
kube_config_k8s-cluster.yml:群集的Kubeconfig文件,此文件包含完全访问群集的凭据。
k8s-cluster.rkestate:Kubernetes群集状态文件,此文件包含完全访问群集的凭据。

现在不能直接执行kubectl get nodes 查看集群,会报错:

[sre@k8s-master01 rancher-cluster]$ kubectl get node
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[sre@k8s-master01 rancher-cluster]$

sre用户下配置kubectl命令执行:

$ mkdir ~/.kube
$ cp kube_config_k8s-cluster.yml ~/.kube
$ cp ~/.kube/kube_config_k8s-cluster.yml ~/.kube/config

#可以把k8s-cluster.yml和 k8s-cluster.rkestate也备份一份过来,以免丢失
$ cp k8s-cluster.yml ~/.kube/ 
$ cp k8s-cluster.rkestate ~/.kube/

配置完后,就可以用kubectl get node命令直接查看集群了:

[sre@k8s-master01 .kube]$ kubectl  get node
NAME           STATUS   ROLES               AGE   VERSION
k8s-master01   Ready    controlplane,etcd   41m   v1.20.6
k8s-master02   Ready    controlplane,etcd   31m   v1.20.6
k8s-master03   Ready    controlplane,etcd   31m   v1.20.6
k8s-node01     Ready    worker              20m   v1.20.6
k8s-node02     Ready    worker              20m   v1.20.6
[sre@k8s-master01 .kube]$

如果需要root用户执行kubectl,切换到root用户,执行以下命令:

mkdir ~/.kube
cp /home/sre/.kube/config ./

3. Rancher管理k8s集群

rancher管理k8s集群,有2种方法:

一是将ks集群导入rancher管理界面;

二是在k8s集群上起动rancher应用,直接接入管理集群。

不管是rke安装的,还是别的方式如kubeadm安装的k8s,都适用。

3.1 k8s集群导入rancher

3.1.1 部署一个rancher应用

在10.99.68.68服务器部署rancher,此处使用的老版本2.5.7版本

[root@rancherUI App]# cat rancher.sh 
#!/bin/bash
docker run -d --privileged --restart=unless-stopped -p 8088:80 -p 8443:443 -e CATTLE_SYSTEM_DEFAULT_REGISTRY=harbor.test.com:8000 -e CATTLE_SYSTEM_CATALOG=bundled -v /home/rancher/rancher:/var/lib/rancher -v /home/rancher/auditlog:/var/log/auditlog --name rancher-server harbor.test.com:8000/rancher/rancher:v2.5.7
[root@rancherUI App]#

3.1.2 将k8s导入rancher

1)在“全局”界面,添加集群:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

2)选择导入集群:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

3)填写导入的集群名:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

4)点击“创建”,就会生成如下命令:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

命令:

curl --insecure -sfL https://10.99.68.68:8443/v3/import/tzzhn4t4dkmnhlvzz8jm7gmx5xh5ddr8gvsgpljq78rsb8xhlc4znt_c-8cwtr.yaml | kubectl apply -f -

将以命令在k8s-master01节点sre用户下执行:

[sre@k8s-master01 .kube]$ curl --insecure -sfL https://10.247.149.18:8443/v3/import/tzzhn4t4dkmnhlvzz8jm7gmx5xh5ddr8gvsgpljq78rsb8xhlc4znt_c-8cwtr.yaml | kubectl apply -f -

命令执行完毕后,rancher界面能看到导入成功:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

查看主机,5台节点均导入成功:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

3.2 在k8s上安装rancher

3.2.1 安装cert-manager

1)将离线包cert-managerv1.7.1(下载链接:https://artifacthub.io/packages/helm/cert-manager/cert-manager/1.7.1)上传到服务器k8s-master01解压;

2)下载离线CRD资源yaml文件:https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

3)找一台通公网的服务器下载以下镜像并修改tag,上传到自己私有仓库:

#下载镜像
docker pull quay.io/jetstack/cert-manager-controller:v1.7.1
docker pull quay.io/jetstack/cert-manager-webhook:v1.7.1
docker pull quay.io/jetstack/cert-manager-cainjector:v1.7.1
docker pull quay.io/jetstack/cert-manager-ctl:v1.7.1
#修改tag
docker tag quay.io/jetstack/cert-manager-controller:v1.7.1 harbor.test.com:8000/rancher/cert-manager-controller:v1.7.1
docker tag quay.io/jetstack/cert-manager-webhook:v1.7.1 harbor.test.com:8000/rancher/cert-manager-webhook:v1.7.1 
docker tag quay.io/jetstack/cert-manager-cainjector:v1.7.1 harbor.test.com:8000/rancher/cert-manager-cainjector:v1.7.1
docker tag quay.io/jetstack/cert-manager-ctl:v1.7.1 harbor.test.com:8000/rancher/cert-manager-ctl:v1.7.1 
#上传镜像
docker push harbor.test.com:8000/rancher/cert-manager-controller:v1.7.1
docker push harbor.test.com:8000/rancher/cert-manager-webhook:v1.7.1 
docker push harbor.test.com:8000/rancher/cert-manager-cainjector:v1.7.1
docker push harbor.test.com:8000/rancher/cert-manager-ctl:v1.7.1

4)批量修改cert-manager里面的image地址,将“quay.io/jetstack/”全部改为自己私有仓库地址“ harbor.test.com:8000/rancher/”。

5)执行命令安装cert-manager

cd cert-managerv1.7.1
kubectl apply -f cert-manager.crds.yaml    #离线升级CRD资源
#正式安装cert-manager
helm install cert-manager ./cert-manager-v1.7.1 \
 --namespace cert-manager \
 --create-namespace \
 --version v1.7.1

6)查看pod

[root@k8s-master01 ~]# kubectl get pod -n cert-manager
NAME                                    READY  STATUS  RESTARTS AGE
cert-manager-5698c7c8d7-8w68r            1/1   Running   0      16m
cert-manager-cainjector-57bf5766bd-9ml2x 1/1   Running   0      16m
cert-manager-webhook-7bd6cfc99c-hbz8c    1/1   Running   0      16m
[root@k8s-master01 ~]#

3.2.2 安装rancher

1)下载rancher2.5.7离线helm安装包

安装命令:

helm install rancher ./rancher-v2.5.7 \
 --namespace cattle-system \
 --create-namespace \
 --set hostname=rancher.test.com \  #rancher不要以local域名命名
 --set replicas=1 \   #指定启动几个rancher pod,可以启动多个
 --version 2.5.7

2)查看ingress:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

3)windows电脑本地绑定hosts:

10.9.68.65 rancher.test.com  #在ingress的SDDRESS中任意绑定一个IP

4)浏览器访问:https://rancher.test.com,设置admin用户的密码后,跳转到URL,这里默认就是使用的上一步骤设置的域名,默认即可。

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

5)进入rancher,就能看到集群了,这里的集群名就是local:

RKE快速搭建离线k8s集群并用rancher管理界面,k8s&amp;docker,kubernetes,rancher,docker,k8s,rke

(完)文章来源地址https://www.toymoban.com/news/detail-820354.html

到了这里,关于RKE快速搭建离线k8s集群并用rancher管理界面的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用rancher的rke2部署高可用的k8s集群

    目录 1、linux环境初始化及内核调优 (1)设置主机名、关闭防火墙、配置集群ip映射、关闭selinux (2)禁用linux的透明大页、标准大页 (3)禁用swap分区 (4)配置集群时间同步,同步阿里云服务器时间 (5)linux内核参数调优 (6)配置ipvs 2、rke2安装k8s (1)主节点安装执行

    2023年04月11日
    浏览(67)
  • 3.3.k8s搭建-rancher RKE2

    目录 RKE2介绍 k8s集群搭建 搭建k8s集群 下载离线包 部署rke2-server 部署rke2-agent 部署helm 部署rancher RKE2,也称为 RKE Government,是 Rancher 的下一代 Kubernetes 发行版。 官网地址:Introduction | RKE2 k8s版本为v1.28.3+rke2r2,runtime为containerd,使用rke2进行部署。 下载离线包 官网下载地址:h

    2024年04月11日
    浏览(24)
  • k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(三)

    3.19.切换RKE用户,并做免密登录(三台机器相互免密) 3.20.搭建RKE集群 为了方便理解,我们把通RKE部署的Kubernetes集群称为“RKE集群”,RKE集群包括Rancher在Windows节点或其他现有自定义节点上启动的集群,以及Rancher在Azure、Digital Ocean、EC2、阿里云或vSphere等上使用新节点启动的

    2024年02月20日
    浏览(28)
  • k8s学习(RKE+k8s+rancher2.x)成长系列之简配版环境搭建(四)之Helm及cert-manager安装

    注意:证书管理器需要与k8s集群版本兼容,对应关系:https://cert-manager.io/docs/installation/supported-releases/?spm=a2c4g.11186623.0.0.32be254d69N1yJ

    2024年02月22日
    浏览(30)
  • 使用 RKE 方式搭建 K8s 集群并部署 NebulaGraph

    本文由社区用户 Albert 贡献,首发于 NebulaGraph 论坛,旨在提供多一种的部署方式使用 NebulaGraph。 在本文,我将会详细地记录下我用 K8s 部署分布式图数据库 NebulaGraph 的过程。下面是本次实践的内容规划: 一到十章节为 K8s 集群搭建过程; 十一到十五章节为参考 NebulaGraph 官方

    2024年02月14日
    浏览(28)
  • 【K8S】Rancher的安装&使用Rancher搭建K8S集群&Rancher的使用

    rancher官方文档 Rancher 是一个 Kubernetes 管理工具,让你能在任何地方和任何提供商上部署和运行集群。 Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。 Rancher 基于 Kubernetes 添加了新的功能,包括统

    2024年02月02日
    浏览(35)
  • rke方式安装k8s集群

    1.1主机名设置 1.2 主机名与ip地址解析 vim /etc/hosts 1.3安装docker vim /etc/docker/daemon.json 1.4修改内核参数 1.5修改句柄数可进程数 1.6关闭防火墙和swap分区 1.7 添加rke用户 2.1下载rke工具 下载地址 2.2rke机器对其他节点做免密 2.3 rke配置与cluster文件 vim cluster.yaml

    2024年03月14日
    浏览(35)
  • k8s离线快速搭建(含镜像,rpm包)

    组件 版本 docker 20.10.6 k8s v1.21.0 calico v3.26.0 1、准备机器 开通三台机器,内网互通 每台机器的hostname不要用localhost【不包含下划线、小数点、大写字母】(这个后续步骤也可以做) 2、安装前置环境(都执行) 2.1 基础环境 2.2 docker 环境 2.2.1 下载docker-20.10.6-ce.tgz,下载地址:官

    2024年02月10日
    浏览(24)
  • k8s简介及虚拟机快速搭建k8s集群

    1.1、部署方式的变迁 传统部署时代: 在物理服务器上运行应用程序 无法为应用程序定义资源边界 导致资源分配问题 例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是

    2024年02月12日
    浏览(34)
  • k8s简介、虚拟机快速搭建k8s集群、集群管理方式及K8S工作原理和组件介绍

    1.1、部署方式的变迁 传统部署时代: 在物理服务器上运行应用程序 无法为应用程序定义资源边界 导致资源分配问题 例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况, 结果可能导致其他应用程序的性能下降。 一种解决方案是

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包