资讯详情

RKE部署Rancher v2.5.8 HA高可用集群 以及常见错误解决

这个博客是基础Rancher使用官网文档RKE最新版本的测试部署 Rancher v2.5.8高可用集群总结文档。Rancher文档 | K8S文档 | Rancher | Rancher文档

问题解决

系统要求

端口要求

一 了解 Rancher ??Rancher 是为使用容器的公司建立的容器管理平台。Ranhcer 简化了使用 Kubernetes 开发者可以随处运行流程 Kubernetes(Run Kubernetes Everywhere),满足IT要求规范,赋能 DevOps 团队。 ??Rancher 可以从中创建 Kubernetes 托管服务提供商的集群,自动创建节点并安装 Kubernetes 集群,或导入任何已存在的集群, Kubernetes 集群。 ??Rancher 支持集中认证、权限控制、监控和管理 Kubernetes 集群。

Rancher 基于角色的身份验证和访问控制(RBAC),使系统管理员能够从一个位置控制所有集群的访问。Rancher 对集群及其资源进行详细监控,必要时发出报警,或将容器日志发送到外部日志系统,并通过应用商店和 Helm 集成。假如你有外部 CI/CD 装配线系统可以与之相匹配 Rancher 如果没有对接,Rancher 还提供简单易用的装配线,帮助您自动部署和升级工作负荷。除此之外,Rancher 还有许多功能可以帮助您更好地管理集群和业务应用程序,如多集群应用程序、整体情况 DNS,基于服务网格、安全扫描、集群模板 OPA 战略管理等功能。

总而言之,Rancher 是全栈式的 Kubernetes 容器管理平台也可以在任何地方成功运行 Kubernetes 工具。更多视频教程,请前往Bilibili查看。

Kubernetes 已成为容器管理的标准。大多数云服务和虚拟服务提供商现在都会 Kubernetes 作为标准的基础设施。可供用户使用 Rancher Kubernetes Engine(简称 RKE),或其他云服务提供商的容器服务,如 GKE、AKS、 EKS 等,创建 Kubernetes 集群。也可以将现有集群引入用户 Rancher,集中管理。 详细查看Rancher官网文档。

1 关于Helm ??Helm 是安装 Rancher 在高可用集群中使用的工具。 ??Helm 是 Kubernetes 软件包管理工具。Helm chart 为 Kubernetes YAML manifest 该文件提供模板语法。通过 Helm,可创建可配置的 Deployment YAML,而不仅仅是静态的 YAML。如果你想了解更多关于如何创建自己的应用商店应用程序(catalog),类似centos上模安的yum包管理工具,debain上面的apt-get等,请查阅 Helm官方网站 。

2 关于RKE ??RKE 全称是 Rancher Kubernetes Engine。可以通过 CLI 独立于 Rancher 2.x 使用。可安装 docker 的 linux 在主机上,快速方便地搭建 Kubernetes 集群。 ??关于 RKE 和 Rancher 的关系,RKE 是 Rancher 2.x 在 UI 通过自定义主机和主机驱动创建的集群 Rancher Server 调用 RKE 实现模块。

3 关于k3s

??K3s 是经过精简和用户体验优化的 k8s。K3s 减轻运维负担。一个命令可以启动 K3s。使用新节点 4 层 LB 等也很简单。也可以同时使用。 MySQL/SQLite 等关系数据库作为数据库。

4 Rancher 名词解释

4.1 仪表盘

仪表盘将显示 Prometheus 收集到的监控数据。单击右侧 Grafana 在图标中,浏览器将打开新的标签Grafana 这些监控数据呈现在里面。

1)CPU

已预留6中的2.7:6是集群节点 CPU 总和,2.77集群中的所有工作负荷spec.containers.resources.requests.cpu 的总和。 已使用6中的1.3:6是集群节点 CPU 总和,1.集群中的所有节点都已使用 CPU 的总和。 2)Memory

已预留22.6GiB中的1.6:22.6GiB集群节点 memory 总和,1.6.集群中的所有工作负载spec.containers.resources.requests.memory 的总和。 已使用22.9GiB中的8:22.9GiB集群节点 memory 集群中使用了总和8 memory 的总和。 3)Pods ??最大的集群可以创建 Pod 默认110个单节点的数量 pod,可设置 kubelet 的max-pods最大默认修改 Pod 数量。

4.2 项目

??项目是 Rancher 其中一个概念可以帮助你管理 kubernetes 您可以中的命名空间中,您可以使用该项目来创建多个租户集群,允许多用户使用相同的基础资源来创建应用程序,而不会相互影响。 ??详情请参考项目管理文档。

4.3 多集群应用 ??通常,大多数应用程序部署在单个应用程序中 kubernetes 但有时你可能希望跨不同的集群或项目部署同一应用程序的多个副本。在 Rancher 中多集群应用 Helm Chart,并且可以跨多个集群部署应用。由于可以跨多个集群部署相同的应用程序,因此可以避免在同一操作期间引入的人为错误。使用多集群应用,您可以确保应用在所有项目/集群中具有相同的配置,并能够根据目标项目来覆盖不同的参数。由于多集群应用被视为单一应用,因此易于管理和维护。 ??详情请参考 多集群应用 文档。

4.4 应用商店 ??Rancher 提供了基于 Helm 应用商店的功能使同样的应用更容易部署和管理。

应用商店可以 GitHub 代码库或 Helm Chart 图书馆包含可部署应用程序。应用程序包装称为 Helm Chart 的对象中。 Helm Charts 描述一组相关性 Kubernetes 收集资源文件。 Chart 可用于部署简单内容(例如 Mencached Pod)或复杂的内容(例如带有 HTTP 完整的服务、数据库、缓存等 Web 应用)。 ??Rancher 改进了 Helm 应用商店和 Chart。所有原生 Helm Chart 都可以在 Rancher 但是 Rancher 增加改善用户体验,增加了一些增强功能。 ??详情请参考应用商店 文档 4.5 Rancher Server URL ??第一次登录 Rancher 后,Rancher 提示您输入一个Rancher Server URL。您应该将 URL 设置为 Rancher Server 主入口点。当负载平衡器位于时 Rancher Server 集群前,URL 负载均衡地址应设置。系统将自动尝试运行 Rancher Server 的主机的 IP 推断地址或主机名 Rancher Server 的 URL,但只有在运行单节点 Rancher Server 上述推断将是正确的。因此,在大多数情况下,你需要自己做 Rancher Server URL 设置为正确的值。 ??详情请参考 配置 Rancher Server URL文档。 4.6 RKE 模板 ??RKE 的全称是Rancher Kubernetes Engine,它是 Rancher 用来创建 Kubernetes 集群工具。RKE 制定了集群模板 DevOps 以及安全团队的标准,简化了 Kubernetes 集群的创建过程。 ??多集群管理面临着如何强制实施安全战略和附加配置的挑战。在将集群移交给最终用户之前,管理员需要标准化这些配置。RKE 集群板提供了标准化集群配置的方式。无论是使用 Rancher UI、Rancher API 还是自动化流程创建的集群,Rancher 都将保证从 RKE 集群模板创建的每个集群在生成方式上是一致的。   更多详情,请参阅RKE 模板文档。 4.7 GIS 扫描   Rancher 充分利用了kube-bench来对 Kubernetes 集群进行安全扫描。Rancher 会检查 Kubernetes 集群是否遵循了 CIS (Center for Internet Security,互联网安全中心) Kubernetes Benchmark 中定义的最佳实践。   CIS Kubernetes Benchmark 是一个可以用来给 Kubernetes 创建安全基准的参考文档。   互联网安全中心(CIS)是一个501©(3)非营利组织,成立于 2000 年 10 月,其使命是“通过识别,开发,验证,推广和维护最佳实践解决方案来防御网络攻击,并建立和引导社区打造安全可信的网络环境”。   CIS 基准测试是安全配置目标系统的最佳实践。CIS 基准是通过领域专家,技术供应商,公共和私人社区成员以及 CIS 基准开发团队的不懈努力而制定的。   基准提供两种类型的建议:计分和不记分。我们仅运行与“计分建议”相关的测试。   当 Rancher 对一个集群进行 CIS 安全扫描时,它会生成一个展示每个测试结果的报告。报告中包括通过,跳过和失败的测试数量的汇总。报告中同时也给失败的测试提供了补救办法。   更多详情,请参阅 安全扫描 文档。  

5 推荐架构

  安装 Rancher 的方式有两种:单节点安装和高可用集群安装。因为单节点安装只适用于测试和 demo 环境,而且单节点安装和高可用集群安装之间不能进行数据迁移,所以推荐从一开始就使用高可用集群安装的方式安装 Rancher。   建议将 Rancher Server 安装在高可用的 Kubernetes 集群上,主要是因为它可以保护 Rancher Server 的数据。在高可用安装中,负载均衡器充当客户端的单点入口,并在集群中的多台服务器之间分配网络流量,这有助于防止任何一台服务器成为单点故障。   不建议在单个 Docker 容器中安装 Rancher,因为如果该节点发生故障,则其他节点上将没有可用的集群数据副本,并且可能会丢失 Rancher Server 上的数据。   Rancher 需要安装在高可用的 RKE(Rancher Kubernetes Engine)Kubernetes 集群上,或高可用的K3s (轻量级 Kubernetes) Kubernetes 集群。 RKE 和 K3s 都是经过完全认证的 Kubernetes 发行版。

5.1 K3S Kubernetes 集群安装   如果您是首次安装 Rancher v2.4,建议将其安装在 K3s Kubernetes 集群上。这种 K3s 架构的一个主要优点是,它允许使用外部数据库保存集群数据,从而可以将 K3s 服务器节点视为无状态的。   在 K3s 集群上安装 Rancher 的功能是在 Rancher v2.5.8 中引入的。K3s 易于安装,仅需要 Kubernetes 一半的内存,而且所有组件都在一个不超过 100 MB 的二进制文件中。   使用 K3s Kubernetes 集群运行 Rancher Management Server 的架构:

 5.2 RKE Kubernetes 集群安装   如果要安装 Rancher v2.5.8 之前的版本,您需要在 RKE 集群上安装 Rancher,该集群中的数据存储在每个有 etcd 角色的节点上。在 Rancher v2.5.8中,没有将 Rancher Server 从 RKE 集群迁移到 K3s 集群的方法。所有版本的 Rancher Server(包括 v2.4+)仍然可以安装在 RKE 集群上。   在 RKE 安装中,集群数据将在集群中的三个 etcd 节点上进行复制,这是为了保障在一个 etcd 节点发生故障时,可以提供冗余和数据复制。   使用 RKE Kubernetes 集群运行 Rancher Management Server 的架构:

6 负载均衡配置的推荐配置参数

  我们建议您使用以下方案,配置您的负载均衡和 Ingress Controller:

  • Rancher 的DNS应该被解析到四层负载均衡器上;
  • 负载均衡器应该把 TCP/80 端口和 TCP/443 端口的流量转发到集群中全部的3个节点上;
  • Ingress Controller 将把HTTP重定向到HTTPS,在 TCP/443 端口使用 SSL/TLS;
  • Ingress Controller 把流量转发到 Rancher Server 的pod的80端口。

  在kubernetes集群中安装Ranhcer,并使用四层负载均衡,SSL终止在 Ingress Controller 中。

 为了达到最好的性能和安全条件,我们建议您为 Rancher 创建一个专用的 Kubernetes 集群,只在这个机器中部署 Rancher Server,不在这个集群中运行应用或程序。部署 Rancher 后,您可以 创建新集群或导入已有集群 ,然后用这些集群启动您自己的应用或程序。   我们不建议在托管的 Kubernetes 集群上,如 EKS 和 GKE,安装 Rancher。 这些托管的 Kubernetes 集群不会将 etcd 暴露给 Rancher ,达到 Rancher 可以管理的程度,而且它们的特殊改动可能与 Rancher 的操作冲突。  

7 节点角色分配建议

        根据Rancher是安装在 K3S Kubernetes 集群上还是 RKE Kubernetes 集群上,我们对每个节点的角色的建议有所不同。

7.1 K3S 集群角色

         在 K3s 集群中,有两种类型的节点:Server 节点和 Agent 节点。Server 节点和 Agent 节点 都可以运行工作负载。Server 节点运行 Kubernetes Master。   对于运行 Rancher Server 的集群,建议使用两个 Server 节点。不需要 Agent 节点。  

7.2 RKE 集群角色

        如果将 Rancher 安装在 RKE Kubernetes 集群上,则该集群应具有三个节点,并且每个节点都应具有所有三个 Kubernetes 角色:etcd,controlplane 和 worker。 Rancher Server RKE 集群和下游 Kubernetes RKE 集群的架构对比:   我们对 Rancher Server 集群上的 RKE 节点角色的建议与对运行您的业务应用的下游集群的建议相反。   在配置下游 Kubernetes 集群时,Rancher 使用 RKE 作为创建下游 Kubernetes 集群的工具。注意:在将来的 Rancher 版本中将添加创建下游 K3s 集群的功能。   对于下游 Kubernetes 集群,考虑到稳定性和可扩展性,我们建议下游集群中的每个节点都应只扮演一个角色。

 RKE 每个节点至少需要一个角色,但并不强制每个节点只能有一个角色。但是,对于运行您的业务应用的集群,我们建议为每个节点使用单独的角色,这可以保证工作节点上的工作负载不会干扰 Kubernetes Master 或集群数据。 以下是我们对于下游集群的最低配置建议:

  • 三个只有 etcd 角色的节点 保障高可用性,如果这三个节点中的任意一个出现故障,还可以继续使用。
  • 两个只有 controlplane 角色的节点 这样可以保证 master 组件的高可用性。一个或多个只有 worker 角色的节点 用于运行 Kubernetes 节点组件和您部署的服务或应用

在安装 Rancher Server 时三个节点,每个节点都有三个角色是安全的,因为:

  • 可以允许一个 etcd 节点失败
  • 多个 controlplane 节点使 master 组件保持多实例的状态。
  • 该集群有且只有 Rancher 在运行。

因为这个集群中只部署了 Rancher server,没有其他程序或应用,这个集群已经足以应对大多数情况。所以这个集群并不需要像我们建议的下游集群那样的可扩展性和可靠性。

8 扩展 - Ingress

       Rancher 安装的 Kubernetes 集群中的每个节点都应该运行一个 Ingress。   Ingress 应被部署为 DaemonSet,以确保你的负载平衡器能够成功地将流量路由到所有节点。   对于 RKE、K3s 和 RancherD 的安装,你不需要手动安装 Ingress,因为它是默认安装的。   对于托管的 Kubernetes 集群(EKS、GKE、AKS)和 RKE2 Kubernetes 安装,你将需要设置 Ingress。  

二 软件要求

下面的版本为当前的最新版和稳定版:

类型 Rancher 版本 Docker 标签 Helm 仓库 Helm Chart 版本
最新版 v2.5.8 rancher/rancher:latest server-charts/latest v2.5.8
稳定版 v2.5.8 rancher/rancher:stable server-charts/stable v2.5.8

1 Rancher支持的kubernetes版本   更多信息可以转到官方链接查看。此处我仅列举了本人文档里试验总结的官方最新稳定版的相关信息:Support matrix | SUSE

1.1 在RKE上安装Ranhcer v2.5.8

适用于本地集群的 RKE CLI 和 K8S:

Rancher版本 推荐的CLI版本 KUBERNETES版本
v2.5.8 v1.2.8 v1.20.4(默认) v1.19.8 v1.18.16 v1.17.17

操作系统和 Docker:

类型 版本 已于1验证/认证
CentOS 7.7、7.8、7.9 Docker 18.06.3、18.09.x,19.03.x,20.10.x

1.2 Rancher v2.5.8 中的下游集群

Rancher RKE 下游集群 - Linux Work 节点 注意:Rancher RKE下游群集可以由节点驱动程序或自定义/现有节点配置,也可以注册到Rancher中。 操作系统和Docker:

类型 版本 已于1验证/认证
CentOS 7.7、7.8、7.9 Docker 18.06.3、18.09.x,19.03.x,20.10.x

1.3 在K3S上安装 Rancher v2.5.8

本地集群:

操作系统:

类型 版本 已于1验证/认证
CentOS 7.8、7.9、8.2、8.3 x86_64架构

1.4 Rancher K3S下游集群

注意:Rancher K3S群集只能在Rancher中注册。 操作系统:

类型 版本 已于1验证/认证
CentOS 7.8、7.9、8.2、8.3 x86_64架构

支持的K3S版本:

2 RKE-1.2.8

        RKE可以兼容当前的所有Docker版本。   每个RKE版本都有受支持的Kubernetes版本的特定列表。如果您要使用的版本与下面列出的版本不同,则需要使用中的系统映像选项来更新Kubernetes cluster.yml。 列举支持的 Kubernetes 版本:

  1. 请参考 RKE 版本说明 ,获取您当前使用的 RKE 支持的 Kubernetes 版本号。
Kubernetes版本
v1.20.6-rancher1-1
v1.19.10-rancher1-1
v1.18.18-rancher1-2
v1.17.17-rancher2-3

2 .也可以输入以下命令,快速获取支持的版本号:

./rke config --list-version --all
v1.20.6-rancher1-1
v1.17.17-rancher2-3
v1.18.18-rancher1-2
v1.19.10-rancher1-1

3 Kubectl

kubectl 可以比 kube-apiserver 高一个小版本,也可以低一个小版本。 例如:

  • 如果 kube-apiserver 当前是 1.21 版本
  • kubectl 则支持 1.22、1.21 和 1.20

4 Helm-3.5.x

  • 请使用 Helm v3.2.x 或更高版本安装或升级 Rancher v2.5.x。
  • Helm v2.16.0 或更高版本需要 Kubernetes v1.16 版本。对于默认的 Kubernetes 版本,请参考发布说明以获取所使用的 RKE 的版本。
  • 不能使用 Helm v2.15.0,因为这个版本中有一些关于转换/比较数字的问题。
  • 不能使用 Helm v2.12.0,因为这个版本和cert-manager一起使用时会有问题。  
Helm 版本 支持的 Kubernetes 版本
3.5.x 1.20.x - 1.17.x
3.4.x 1.19.x - 1.16.x
3.3.x 1.18.x - 1.15.x
3.2.x 1.18.x - 1.15.x
3.1.x 1.17.x - 1.14.x
3.0.x 1.16.x - 1.13.x
2.16.x 1.16.x - 1.15.x
2.15.x 1.15.x - 1.14.x
2.14.x 1.14.x - 1.13.x
2.13.x 1.13.x - 1.12.x
2.12.x 1.12.x - 1.11.x
2.11.x 1.11.x - 1.10.x
2.10.x 1.10.x - 1.9.x
2.9.x 1.10.x - 1.9.x
2.8.x 1.9.x - 1.8.x
2.7.x 1.8.x - 1.7.x
2.6.x 1.7.x - 1.6.x
2.5.x 1.6.x - 1.5.x
2.4.x 1.6.x - 1.5.x
2.3.x 1.5.x - 1.4.x
2.2.x 1.5.x - 1.4.x
2.1.x 1.5.x - 1.4.x
2.0.x 1.4.x - 1.3.x

5 Docker-20.10.x

将最新的经过验证的Docker版本更新为20.10。 每一个 Kubernetes 版本支持的 Docker 版本都不同。

6 nginx-1.14

官方已在 NGINX 1.14 上进行了测试NGINX 配置。

7 OpenSSH-7.0+

  为了可以通过 SSH 访问每一个节点,RKE 要求每个节点上安装的是 OpenSSH 的版本是OpenSSH 7.0+。

三 主机配置   先配置4台最小化安装的主机,其中3台使用RKE配置k8s集群,然后在这个集群上配置高可用Rancher。   要在高可用性 RKE 集群上安装 Rancher 管理服务器,我们建议设置以下基础设施:

  • 三个 Linux 节点,通常是虚拟机。
  • 一个负载均衡器,将前端流量引导到三个节点。
  • 一个 DNS 记录,将一个 URL 映射到负载均衡器。这将成为 Rancher 服务器的 URL,下游的 Kubernetes 集群需要到达它。  

注意:Rancher对于配置k8s集群的主机性能要求较高,如果配置较低,会有k8s集群被迫中断的风险。nginx主机性能满足基本要求就可以了,配置要求不大。经试验几次后,我给予的虚拟机Rancher集群k8s主机配置的是:2U,运行内存4G和存储内存50G

1 主机基本信息

国内用户可根据此链接可以下载所有资源:http://mirror.cnrancher.com

2 主机初始化配置

注意:以下步骤,四台主机均要操作。

2.1 查看系统版本是否满足要求

[root@nginx ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 

2.2 安装小工具安装包

yum -y install epel-release
yum -y install lrzsz vim gcc glibc openssl openssl-devel net-tools wget curl
yum -y update  #更新软件包版本和内核版本

2.3 关闭防火墙和selinux

  测试环境中,为了方便将防火墙和selinux关闭;生产环境中,建议关闭selinux,防火墙规则根据环境需要自定义即可。

#关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

2.4 时钟同步

  为了防止后续集群在客户端和服务器之间因为时钟不同步而发生验证错误。

  1. 第一种方法:

       

yum install ntp   #每台主机安装ntp服务
systemctl start ntpd    #启动时钟同步服务
systemctl enable  ntpd   #设置开机启动
ntpq -p   #查看时钟同步状态
  1. 第二种方法:
yum install ntp ntpdate -y

之后,选择一台主机(172.16.10.66)作为ntp时间服务器,修改/etc/ntp.conf文件,删除:

server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

改为:

server ntp3.aliyun.com iburst

另外,原始文件中有一行为如下内容:

#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

去掉#,打开注释,并将其ip修改为服务器所在网段:

restrict 172.16.10.66 mask 255.255.240.0 nomodify notrap

在集群中的其他服务器上,也要修改此文件,删除掉:

server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

加入:

server 172.16.10.66 prefer

保存后退出,在集群中的所有服务器上执行如下命令:

systemctl stop chronyd.service
systemctl disable chronyd.service

systemctl restart ntpd
systemctl enable ntpd

之后,在集群中172.16.10.66以外的服务器上执行:

[root@rancher-master01-67 ~]# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 172.16.10.66    .INIT.          16 u   59   64    0    0.000    0.000   0.000

说明时间已经同步。

2.5 内核参数调优

cat >> /etc/sysctl.conf << eof
vm.swappiness=0
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=6144
net.ipv4.neigh.default.gc_thresh3=8192
eof

使内核参数生效:

[root@nginx ~]# modprobe br_netfilter  #首先执行这个命令后才不会报错
[root@nginx ~]# sysctl -p
vm.swappiness = 0
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 6144
net.ipv4.neigh.default.gc_thresh3 = 8192
vm.swappiness = 0
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.neigh.default.gc_thresh1 = 4096
net.ipv4.neigh.default.gc_thresh2 = 6144
net.ipv4.neigh.default.gc_thresh3 = 8192

2.6 SSH Server配置

SSH server全系统配置文件,位于/etc/ssh/sshd_config,该文件必须包含以下代码,允许 TCP 转发。

[root@nginx ~]# vim /etc/ssh/sshd_config

AllowTcpForwarding yes

#重启sshd服务
[root@nginx ~]# systemctl restart sshd

2.7 修改主机名

#分别修改每条主机的hostname
[root@nginx ~]# hostnamectl set-hostname nginx
[root@rancher-master01-67 ~]# hostnamectl  set-hostname rancher-master01-67
[root@rancher-master02-68 ~]# hostnamectl  set-hostname rancher-master02-68
[root@rancher-master03-69 ~]# hostnamectl  set-hostname rancher-master03-69
#修改完后可直接断开Xshell的连接,再重新连接Xshell就可以看到主机名已修改了
    

在 /etc/hosts 文件中添加主机名配置:

cat >> /etc/hosts << eof
172.16.10.66 nginx
172.16.10.67  rancher-master01-67
172.16.10.68  rancher-master02-68
172.16.10.69  rancher-master03-69
eof

注意:下面的步骤仅在k8s的3台主机上操作,nginx上不用操作

2.8 关闭swap分区

#临时关闭
swapoff -a

#永久关闭
进入/etc/fstab文件,注释掉swap分区的相关配置内容

2.9 加载ipvs相关模块

由于ipvs已经加入到了内核的主干,所以为kube-proxy开启ipvs的前提需要加载以下的内核模块。

cat > /etc/sysconfig/modules/ipvs.modules << eof
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
eof
[root@rancher-master01-67 ~]# chmod 755 /etc/sysconfig/modules/ipvs.modules
[root@rancher-master01-67 ~]# bash /etc/sysconfig/modules/ipvs.modules
[root@rancher-master01-67 ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4 #查看是否已经正确安装lipset软件包
ip_vs_sh               12688  0 
ip_vs_wrr              12697  0 
ip_vs_rr               12600  0 
ip_vs                 141432  6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
nf_conntrack_ipv4      15053  31 
nf_defrag_ipv4         12729  1 nf_conntrack_ipv4
nf_conntrack          133053  7 ip_vs,nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_netlink,nf_conntrack_ipv4
libcrc32c              12644  4 xfs,ip_vs,nf_nat,nf_conntrack

前面脚本创建了/etc/sysconfig/modules/ipvs.modules文件,保证在节点重启后能自动加载所需模块。

cat >> /etc/rc.d/rc.local << eof
bash /etc/sysconfig/modules/ipvs.modules
eof

chmod +x /etc/rc.d/rc.local

四 安装docker-20.10.6

注意:仅在k8s节点安装docker

  1. 若是节点主机上已安装有docker,则先卸载及其依赖包
    yum remove docker docker-client docker-client-latest  docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
    
  2. yum install epel-release -y

  3. 安装docker仓库 有网

  在新主机上首次安装docker之前,需要设置Docker仓库;之后,可以从仓库安装和更新      docker。   安装所需的软件包。yum-utils 提供了 yum-config-manager,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

yum install -y yum-utils device-mapper-persistent-data lvm2

设置稳定仓库。

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 速度慢的可以换为阿里云源 
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo/

4 . 安装docker

按版本号排序列出存储库中可用的版本号

[root@rancher-master01-67 ~]# yum list docker-ce --showduplicates | sort -r
 * updates: mirrors.tuna.tsinghua.edu.cn
Loading mirror speeds from cached hostfile
Loaded plugins: fastestmirror, langpacks
 * extras: mirrors.bupt.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
docker-ce.x86_64            3:20.10.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.14-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.13-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.12-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.11-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.10-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.15-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.14-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.13-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.12-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.11-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.10-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
 * base: mirrors.bupt.edu.cn
Available Packages

根据前面软件要求的内容,可以直接安装最新版docker-20.10.x:

yum install -y docker-ce docker-ce-cli containerd.io	#默认安装最新版本的docker

若是安装指定版本,例如:

yum install -y docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7 containerd.io

安装docker命令补全工具:

yum install -y bash-completion

[allen@nginx rancher]$ source /usr/share/bash-completion/bash_completion
[allen@nginx rancher]$ source <(helm completion bash)

环境变量: 

HELM_BIN="helm"
HELM_CACHE_HOME="/root/.cache/helm"
HELM_CONFIG_HOME="/root/.config/helm"
HELM_DATA_HOME="/root/.local/share/helm"
HELM_DEBUG="false"
HELM_KUBEAPISERVER=""
HELM_KUBEASGROUPS=""
HELM_KUBEASUSER=""
HELM_KUBECAFILE=""
HELM_KUBECONTEXT=""
HELM_KUBETOKEN=""
HELM_MAX_HISTORY="10"
HELM_NAMESPACE="default"
HELM_PLUGINS="/root/.local/share/helm/plugins"
HELM_REGISTRY_CONFIG="/root/.config/helm/registry/config.json"
HELM_REPOSITORY_CACHE="/root/.cache/helm/repository"
HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml"

启动docker:

systemctl start docker

5. 配置docker镜像下载加速器

tee /etc/docker/daemon.json << eof
{
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}
eof



私有仓库
tee /etc/docker/daemon.json << eof
{
    "insecure-registries": [ "harbor.jettech.com", "192.168.99.41","172.16.10.21:5000"],
     "registry-mirrors": ["https://registry.docker-cn.com"]
}
eof

6 启动docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

安装docker仓库 离线

[root@nginx ~]# ls
docker  docker-18.06.3-ce.tgz
[root@nginx ~]# ls docker
docker  docker-containerd  docker-containerd-ctr  docker-containerd-shim  dockerd  docker-init  docker-proxy  docker-runc

[root@nginx ~]# cp docker/*  /usr/bin/


[root@nginx ~]# cat>/usr/lib/systemd/system/docker.service<<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd --data-root /data/docker 
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF

五 使用RKE安装kubernetes

1 主机互信

目前有4台服务器,确保可以通过ssh互相访问。

[root@nginx ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:3WGDwxDcDhnQZ0IEhhjW20e/iUmhm+HWpmlr2l3aK8c root@nginx
The key's randomart image is:
+---[RSA 2048]----+
|  o+ .+B*=       |
| .. o.  Oo+.     |
|     o o O+ +    |
|    . + o.o+ o   |
|     . BSo.o.    |
|      = = o      |
|     . + ..      |
|     .=..+E      |
|    .+o.ooo.     |
+----[SHA256]-----+
[root@nginx ~]# 
[root@nginx ~]# ssh-copy-id -i 172.16.10.67
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.16.10.67 (172.16.10.67)' can't be established.
ECDSA key fingerprint is SHA256:+nG8Y3ul7JpoenSK6Vwrcfsmd2/VUrqNchNyM4rojGA.
ECDSA key fingerprint is MD5:e4:f7:86:54:9b:43:2e:41:af:dc:45:64:8a:e0:a3:51.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.10.67's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '172.16.10.67'"
and check to make sure that only the key(s) you wanted were added.

[root@nginx ~]# ssh-copy-id -i 172.16.10.68
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.16.10.68 (172.16.10.68)' can't be established.
ECDSA key fingerprint is SHA256:+nG8Y3ul7JpoenSK6Vwrcfsmd2/VUrqNchNyM4rojGA.
ECDSA key fingerprint is MD5:e4:f7:86:54:9b:43:2e:41:af:dc:45:64:8a:e0:a3:51.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.10.68's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '172.16.10.68'"
and check to make sure that only the key(s) you wanted were added.

[root@nginx ~]# ssh-copy-id -i 172.16.10.69
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '172.16.10.69 (172.16.10.69)' can't be established.
ECDSA key fingerprint is SHA256:+nG8Y3ul7JpoenSK6Vwrcfsmd2/VUrqNchNyM4rojGA.
ECDSA key fingerprint is MD5:e4:f7:86:54:9b:43:2e:41:af:dc:45:64:8a:e0:a3:51.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@172.16.10.69's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '172.16.10.69'"
and check to make sure that only the key(s) you wanted were added.

2 创建普通用户注意:

使用rke安装kubernetes时,不能以root用户执行,必须是一个普通用户才可以并加入docker组

在每个节点上创建allen普通用户,并将其加入docker用户组中;把nginx主机当做主控机,其他主机的allen用户互信它的allen用户。

//nginx节点
[root@nginx ~]# useradd -m allen
[root@nginx ~]# echo 123456aA | passwd --stdin allen
Changing password for user allen.
passwd: all authentication tokens updated successfully.
[root@nginx ~]# groupadd docker
[root@nginx ~]# usermod -G docker allen
//更新用户组
[root@nginx ~]# newgrp docker
[root@nginx ~]# id allen
uid=1000(allen) gid=1000(allen) groups=1000(allen),1001(docker)
[root@nginx ~]# 
//3个k8s节点均按照步rancher-master01-67骤操作
[root@rancher-master01-67 ~]#  useradd allen
[root@rancher-master01-67 ~]#  echo 123456aA | passwd --stdin allen
Changing password for user allen.
passwd: all authentication tokens updated successfully.
[root@rancher-master01-67 ~]# usermod -G docker allen
[root@rancher-master01-67 ~]# newgrp docker
[root@rancher-master01-67 ~]# id allen
uid=1000(allen) gid=1000(allen) groups=1000(allen),993(docker)

//切换到hqx用户,测试hqx用户是否能运行docker命令
[root@rancher-master01-67 ~]# sudo su - allen
[allen@rancher-master01-67 ~]$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

//每台主机切换到hqx用户,让每个节点主机的ops用户互相信任
[root@nginx ~]# sudo su - allen
Last login: Fri Apr 29 14:45:56 CST 2022 on pts/0
[allen@nginx ~]$  ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/allen/.ssh/id_rsa): 
Created directory '/home/allen/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/allen/.ssh/id_rsa.
Your public key has been saved in /home/allen/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:D19eFzTrCNZ+rRE0de9sef8w+oNPZc29k0QuWRpUuFQ allen@nginx
The key's randomart image is:
+---[RSA 2048]----+
|             .*Eo|
|            o+..=|
|           o.oo=.|
|          . o.X=*|
|        S   .*o*&|
|         + o .+B=|
|          o ..=+.|
|            .o.oo|
|            .oo..|
+----[SHA256]-----+
[allen@nginx ~]$ 
[allen@nginx ~]$ 
[allen@nginx ~]$  ssh-copy-id -i allen@172.16.10.67
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/allen/.ssh/id_rsa.pub"
The authenticity of host '172.16.10.67 (172.16.10.67)' can't be established.
ECDSA key fingerprint is SHA256:+nG8Y3ul7JpoenSK6Vwrcfsmd2/VUrqNchNyM4rojGA.
ECDSA key fingerprint is MD5:e4:f7:86:54:9b:43:2e:41:af:dc:45:64:8a:e0:a3:51.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
allen@172.16.10.67's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'allen@172.16.10.67'"
and check to make sure that only the key(s) you wanted were added.

[allen@nginx ~]$  ssh-copy-id -i allen@172.16.10.68
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/allen/.ssh/id_rsa.pub"
The authenticity of host '172.16.10.68 (172.16.10.68)' can't be established.
ECDSA key fingerprint is SHA256:+nG8Y3ul7JpoenSK6Vwrcfsmd2/VUrqNchNyM4rojGA.
ECDSA key fingerprint is MD5:e4:f7:86:54:9b:43:2e:41:af:dc:45:64:8a:e0:a3:51.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
allen@172.16.10.68's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'allen@172.16.10.68'"
and check to make sure that only the key(s) you wanted were added.

[allen@nginx ~]$  ssh-copy-id -i allen@172.16.10.69
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/allen/.ssh/id_rsa.pub"
The authenticity of host '172.16.10.69 (172.16.10.69)' can't be established.
ECDSA key fingerprint is SHA256:+nG8Y3ul7JpoenSK6Vwrcfsmd2/VUrqNchNyM4rojGA.
ECDSA key fingerprint is MD5:e4:f7:86:54:9b:43:2e:41:af:dc:45:64:8a:e0:a3:51.
Are you sure you want to continue connecting (yes/no)? yes
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
allen@172.16.10.69's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'allen@172.16.10.69'"
and check to make sure that only the key(s) you wanted were added.

最后在nginx主机上测试:通过allen用户可以直接连接到每个k8s节点,并能运行docker相关命令。

[allen@nginx ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.66 nginx
172.16.10.67  rancher-master01-67
172.16.10.68  rancher-master02-68
172.16.10.69  rancher-master03-69
[allen@nginx ~]$ ssh rancher-master01-67
Last login: Fri Apr 29 14:54:54 2022 from nginx
[allen@rancher-master01-67 ~]$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

注意:完成以上配置后,需重启主机,某些配置参数才会生效。

3 在nginx节点下载安装RKE-1.2.8

       登录主机,打开浏览器,访问 RKE 版本发布页面,下载最新的 RKE v1.2.8。[[allen@nginx ~]$ wget https://github.com/rancher/rke/releases/download/v1.2.8/rke_linux-amd64]   每个RKE版本都有受支持的Kubernetes版本的特定列表。如果您要使用的版本与下面列出的版本不同,则需要使用中的 系统映像 选项来更新Kubernetes cluster.yml。

Kubernetes version
v1.20.6-rancher1-1
v1.19.10-rancher1-1
v1.18.18-rancher1-2
v1.17.17-rancher2-3

镜像列表

3.2 安装rke命令

  运行以下命令,将下载的 RKE 二进制安装包复制到您想要保存的路径下,然后将这个安装包重命名为rke。

[allen@nginx rke]$ ls
rke_linux-amd64
[allen@nginx rke]$ mv rke_linux-amd64 rke
[allen@nginx rke]$ chmod +x rke 
[allen@nginx rke]$ ./rke --version

3.3 为kubernetes集群准备节点

注意:以下1和2已在初始化环境完成,3需要在每个节点执行

kubernetes集群组件需要在Linux发行版上的Docker中运行,只要是能安装和运行docker是linux发行版,都可以使用。

1. SSH用户 - 使用SSH访问节点的用户必须是节点上docker用户组的成员。

  • 添加到docker用户组的用户会自动获得主机的 root 权限,运行上述命令前,请确认您是否想让该用户获得 root 权限。运行命令后,请妥善保存该用户的认证凭据。
  • 如果您无法切换到 root 用户,不能运行上述命令将用户添加到docker用户组,请参考 Docker 官方文档,该文档提供了以非 root 用户的身份管理 Docker 的操作步骤。  

2. 禁用所有的work节点上的交换功能(swap)。

3. 在命令行工具中输入以下命令和脚本,检查下列模组是否存在

[allen@nginx rke]$ cat module.sh 
for module in br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4   nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set  xt_statistic xt_tcpudp;
do
  if ! lsmod | grep -q $module; then
    echo "module $module is not present";
  fi;
done
[allen@nginx rke]$ chmod +x module.sh
[allen@nginx rke]$ sh module.sh 
module ip_set_hash_net is not present
module iptable_raw is not present
module x_tables is not present
module xt_multiport is not present
module xt_recent is not present
module xt_tcpudp is not present

报错:所有模块不存在

[allen@nginx rke]$ exit
logout
You have new mail in /var/spool/mail/root
[root@nginx ~]# modprobe -a br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4   nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel veth vxlan x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set  xt_statistic xt_tcpudp
[root@nginx ~]# sudo su - allen
Last login: Fri Apr 29 15:13:35 CST 2022 on pts/0
[allen@nginx ~]$ cd rke/
[allen@nginx rke]$ sh module.sh 
module x_tables is not present
module xt_tcpudp is not present

会有2个模块没有找到,不影响:

返回的模组应该包括下列的所有模组:模组名称  

模组名称
br_netfilter
ip6_udp_tunnel
ip_set
ip_set_hash_ip
ip_set_hash_net
iptable_filter
iptable_nat
iptable_mangle
iptable_raw
nf_conntrack_netlink
nf_conntrack
nf_conntrack_ipv4
nf_defrag_ipv4
nf_nat
nf_nat_ipv4
nf_nat_masquerade_ipv4
nfnetlink
udp_tunnel
veth
vxlan
x_tables
xt_addrtype
xt_conntrack
xt_comment
xt_mark
xt_multiport
xt_nat
xt_recent
xt_set
xt_statistic
xt_tcpudp

3.4 创建集群配置文件 - cluster.yml

 创建一个名为 cluster.yml 的 Kubernetes 集群配置文件。在后续步骤中,当使用 RKE 命令设置集群时,它将使用此文件在节点上安装 Kubernetes。   RKE适配了高可用集群,您可以在 cluster.yml 文件中配置多个 controlplane 节点。RKE 会把 master 节点的组件部署在所有被列为 controlplane 的节点上,同时把 kubelets 的默认连接地址配置为 127.0.0.1:6443 。这个地址是nginx-proxy请求所有 master 节点的地址。   创建高可用集群需要指定两个或更多的节点作为 controlplane 。   RKE使用集群配置文件 cluster.yml 规划集群中的节点,例如集群中应该包含哪些节点,如何部署 Kubernetes。您可以通过该文件修改很多集群配置选项。   如果您的节点具有公共和内部地址,建议设置 internal_address: 这样 Kubernetes 会将其用于集群内通信。   RKE需要通过 SSH 连接到每个节点,并且它将在默认位置 ~/.ssh/id_rsa 中寻找私钥。如果您的默认私钥与节点的私钥不在同一个位置,则还需要为该节点配置 ssh_key_path 选项 我这里根据官网列举了几个RKE节点选项:

选项 必填 描述
address 公用 DNS 或 IP 地址
user 可以运行 docker 命令的用户
role 分配给节点的 Kubernetes 角色列表
internal_address 内部集群流量的专用 DNS 或 IP 地址
ssh_key_path 用于对节点进行身份验证的 SSH 私钥的路径(默认为~/.ssh/id_rsa)
cluster_name 集群名称 默认集群名称:local
ignore_docker_version 检查docker版本 在运行 RKE 前是否执行 Docker 版本检测,可选值为true和false,默认值为false
kubernetes_version kubernetes版本 将原有的版本号修改为新的版本号即可,RKE 目前不支持回滚 Kubernetes 版本。
prefix_path 前缀路径 默认下RKE 存储ROS、CoreOS 等操作系统的相关资源时,添加一个前缀:/opt/rke
ssh_key_path 集群ssh秘钥路径 RKE 使用ssh连接到主机,通常情况下,每个节点都会在nodes部分为每个 ssh 密钥设置一个独立的路径。

  • 高级配置: RKE 有许多配置选项可用于在您的特定环境中进行自定义安装。请参阅 RKE 文档 来了解 RKE 的选项和功能的完整列表。
  • 要为大规模 Rancher 安装 etcd 集群,请参阅 etcd 设置指南 。

  1. 创建集群配置文件 cluster.yml 的方式有两种:
  • 使用 minimal cluster.yml 创建集群配置文件,然后将您使用的节点的相关信息添加到文件中。

案列

  • 使用 rke config 命令 创建集群配置文件,然后将集群参数逐个输入到该文件中。

   2. 使用 rke config

       运行 rke config 命令,在当前路径下创建 cluster.yml 文件。这条命令会引导您输入创建集群所需的所有参数,详情请参考集群配置选项。

[allen@nginx rke]$ ./rke config --name cluster.yml
[+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]: 
[+] Number of Hosts [1]:             
[+] SSH Address of host (1) [none]: 172.16.10.67
[+] SSH Port of host (1) [22]: 22
[+] SSH Private Key Path of host (172.16.10.67) [none]: 
[-] You have entered empty SSH key path, trying fetch from SSH key parameter
[+] SSH Private Key of host (172.16.10.67) [none]: 
[-] You have entered empty SSH key, defaulting to cluster level SSH key: ~/.ssh/id_rsa
[+] SSH User of host (172.16.10.67) [ubuntu]: allen
[+] Is host (172.16.10.67) a Control Plane host (y/n)? [y]: 
[+] Is host (172.16.10.67) a Worker host (y/n)? [n]: y
[+] Is host (172.16.10.67) an etcd host (y/n)? [n]: y
[+] Override Hostname of host (172.16.10.67) [none]: 
[+] Internal IP of host (172.16.10.67) [none]: 172.16.10.67
[+] Docker socket path on host (172.16.10.67) [/var/run/docker.sock]: 
[+] Network Plugin Type (flannel, calico, weave, canal, aci) [canal]: calico
[+] Authentication Strategy [x509]: 
[+] Authorization Mode (rbac, none) [rbac]: 
[+] Kubernetes Docker image [rancher/hyperkube:v1.20.6-rancher1]: 
[+] Cluster domain [cluster.local]: jettech.com
[+] Service Cluster IP Range [10.43.0.0/16]: 
[+] Enable PodSecurityPolicy [n]: 
[+] Cluster Network CIDR [10.42.0

标签: 贴片二极管丝印f1755v2a3b变送器2u1s9电力变送器连接器xf3h

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台