RKE部署高可用Kubernetes集群

2023-10-27

RKE简介

RKE全称Rancher Kubernetes Engine,是一个快速的,多功能的 Kubernetes 安装工具。通过RKE,我们可以快速的安装一个高可用K8S集群。RKE 支持多种操作系统,包括 MacOS、Linux 和 Windows。

K8S原生安装需要的先决条件较多,比如说需要预安装kubeadm,kubectl,配置网络等一系列繁琐的工作。而使用RKE安装k8s,基本上只要docker版本是当前RKE版本支持的即可。

Rancher简介

Rancher 是为使用容器的公司打造的容器管理平台。Rancher 简化了使用 Kubernetes 的流程,开发者可以随处运行 Kubernetes(Run Kubernetes Everywhere),满足 IT 需求规范,赋能 DevOps 团队。

版本选择

软件 版本 源码 版本发布时间
RKE 1.3.12 GitHub - rancher/rke: Rancher Kubernetes Engine (RKE), an extremely simple, lightning fast Kubernetes distribution that runs entirely within containers. 2022-06-16,1.3.12 released
k8s 1.23.7 GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management 2022-05-26,1.23.7 released
helm v3.9.2 Releases · helm/helm · GitHub
rancher 2.6.6 GitHub - rancher/rancher: Complete container management platform

参考:

Rancher文档 | K8S文档 | Rancher | Rancher文档

环境初始化

hostname设置

sudo hostnamectl set-hostname ubuntu24
查看
hostnamectl
修改后需要将/etc/hosts文件更新
ubuntu24 127.0.0.1

修改/etc/hosts文件,所有节点

192.168.43.23 ubuntu23
192.168.43.24 ubuntu24
192.168.43.26 ubuntu26
192.168.43.27 ubuntu27
192.168.43.28 ubuntu28
192.168.43.29 ubuntu29
192.168.43.30 ubuntu30
192.168.43.31 ubuntu31
192.168.43.24 k8s-test.com

禁用swap

临时禁用swap

sudo swapoff -a

查看swap是否关闭

free -h

永久禁用

sudo sed -ri 's/.*swap.*/#&/' /etc/fstab

手动把有swap相关配置的行注释也是可以,ubuntu18的话其实就一行
#UUID=07389530-1861-4a4b-b4fc-ad03d69f59f4 noneswapsw0 0

ssh免密互登录

确保所有主机ssh免密可互通,保证rke节点可以免密码登录其它节点即可。

ssh-keygen
ssh-copy-id kangming@192.168.43.28

内核参数调整

确保以下参数值为1

net.bridge.bridge-nf-call-iptables=1

可以通过以下指令查看

#查看所有内核参数
sudo sysctl -a

#过滤
sudo sysctl -a|grep net.bridge.bridge-nf-call-iptables

如果不是1,执行下面的设置指令

sysctl -w net.bridge.bridge-nf-call-iptables=1

关闭防火墙

sudo ufw disable

部署架构图

资源规划

IP 配置 角色/作用
192.168.43.24 1核/2G nginx负载
192.168.43.26 1核/2G kubernetes node1
192.168.43.27 1核/2G kubernetes node2
192.168.43.28 1核/2G kubernetes node3
192.168.43.29 1核/2G rancher-agent
192.168.43.30 1核/2G rancher-agent
192.168.43.31 1核/2G rancher-agent

安装RKE1.3.12&高可用k8s集群

RKE在26 nginx负载均衡节点进行安装。

下载最新稳定版本RKE(Rancher Kubernetes Engine),下载地址:Release Release v1.3.12 · rancher/rke · GitHub

下载

https://github.com/rancher/rke/releases/download/v1.3.12/rke_linux-amd64

注意每个版本的RKE对k8s版本的支持都是有限的,当前版本(V1.3.12)支持的k8s版本列表如下:

Kubernetes version
v1.23.7-rancher1-1 (Default)
v1.22.10-rancher1-1
v1.21.13-rancher1-1
v1.20.15-rancher1-4
v1.19.16-rancher1-6
v1.18.20-rancher1-3

rancher也使用当前最新版本:Release Release v2.6.6 · rancher/rancher · GitHub

安装

sudo mv rke_linux-amd64 /usr/local/bin/rke && chmod +x /usr/local/bin/rke

查看 rke版本

rke --version

cluster.yml

nodes:
  - address: 192.168.43.26
    internal_address: 192.168.43.26
    user: kangming
    role: [controlplane,worker,etcd]
  - address: 192.168.43.27
    internal_address: 192.168.43.27
    user: kangming
    role: [controlplane,worker,etcd]
  - address: 192.168.43.28
    internal_address: 192.168.43.28
    user: kangming
    role: [controlplane,worker,etcd]

创建一个名为 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 在运行 RKE 前是否执行 Docker 版本检测,可选值为true和false,默认值为false

当前rke版本需要的docker镜像如下,可保存离线镜像备用。所有需要的镜像可以查看启动rke目录下的cluster.rkestate文件。

方便起见,将当前rke版本所有镜像保存到一个离线镜像中,然后导入到需要的节点中。

docker save -o rke1.3.2-rancherk8s1.23.7.tar rancher/mirrored-coreos-etcd:v3.5.3 \
rancher/rke-tools:v0.1.80 \
rancher/mirrored-k8s-dns-kube-dns:1.21.1 \
rancher/mirrored-k8s-dns-dnsmasq-nanny:1.21.1 \
rancher/mirrored-k8s-dns-sidecar:1.21.1 \
rancher/mirrored-cluster-proportional-autoscaler:1.8.5 \
rancher/mirrored-coredns-coredns:1.9.0 \
rancher/mirrored-k8s-dns-node-cache:1.21.1 \
rancher/hyperkube:v1.23.7-rancher1 \
rancher/mirrored-coreos-flannel:v0.15.1 \
rancher/flannel-cni:v0.3.0-rancher6 \
rancher/mirrored-calico-node:v3.22.0 \
rancher/mirrored-calico-cni:v3.22.0 \
rancher/mirrored-calico-kube-controllers:v3.22.0 \
rancher/mirrored-calico-ctl:v3.22.0 \
rancher/mirrored-calico-pod2daemon-flexvol:v3.22.0 \
rancher/mirrored-flannelcni-flannel:v0.17.0 \
rancher/mirrored-calico-pod2daemon-flexvol:v3.22.0 \
weaveworks/weave-kube:2.8.1 \
weaveworks/weave-npc:2.8.1 \
rancher/mirrored-pause:3.6 \
rancher/nginx-ingress-controller:nginx-1.2.1-rancher1 \
rancher/mirrored-nginx-ingress-controller-defaultbackend:1.5-rancher1 \
rancher/mirrored-ingress-nginx-kube-webhook-certgen:v1.1.1 \
rancher/mirrored-metrics-server:v0.6.1 \
noiro/cnideploy:5.1.1.0.1ae238a \
noiro/aci-containers-host:5.1.1.0.1ae238a \
noiro/opflex:5.1.1.0.1ae238a \
noiro/openvswitch:5.1.1.0.1ae238a \
noiro/aci-containers-controller:5.1.1.0.1ae238a \
noiro/gbp-server:5.1.1.0.1ae238a

相关节点导入镜像后执行

执行RKE

rke up

这条命令默认cluster.yml已经保存在了您运行命令所处的路径下.如果配置文件起了其它名字,则像如下这样启动

rke up --config ./rancher-cluster.yml

上述命令可能出现如下错误,重新执行一下rke up即可。

FATA[0198] Failed to get job complete status for job rke-coredns-addon-deploy-job in namespace kube-system

集群清理,需要清除集群时,执行

rke remove

#删除所有容器上面的rke remove不会清理所有的节点容器,如有需要可执行下面的指令把所有容器清理,会删除所有容器,删除请谨慎
docker rm -f $(docker ps -aq)

kubectl安装&测试K8S

把kube_config_cluster.yml文件备份,然后放到所有工作节点中,然后配置环境变量。

配置环境变量

vim .bashrc
export KUBECONFIG=/home/kangming/rancher/kube_config_cluster.yml
source .bashrc

设置kube_config_cluster.yml文件的权限为当前用户读写

sudo chmod 600 kube_config_cluster.yml

在几个工作节点中安装kubectl

科学上网通过本地浏览器下载下面的文件,然后放到所有工作节点中

https://packages.cloud.google.com/apt/doc/apt-key.gpg

上传到服务器后执行

sudo apt-key add /home/kangming/apt-key.gpg

添加源,然后更新apt,下载kebectl

sudo vi /etc/apt/sources.list
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
sudo apt-get update

下载 与查看

sudo apt-get install -y kubectl
kubectl get nodes

打印如下(所有节点都ready即可)

kangming@ubuntu26:~$ kubectl get nodes
NAMESTATUS ROLESAGE VERSION
192.168.43.26 Readycontrolplane,etcd,worker 71m v1.23.7
192.168.43.27 Readycontrolplane,etcd,worker 71m v1.23.7
192.168.43.28 Readycontrolplane,etcd,worker 71m v1.23.7

检查所有需要启动的pod,都处于running或 completed状态。

kubectl get pods --all-namespaces

NAMESPACE NAMEREADY STATUSRESTARTS AGE
ingress-nginx nginx-ingress-controller-tnsn41/1 Running 030s
ingress-nginx nginx-ingress-controller-tw2ht1/1 Running 030s
ingress-nginx nginx-ingress-controller-v874b1/1 Running 030s
kube-system canal-jp4hz 3/3 Running 030s
kube-system canal-z2hg8 3/3 Running 030s
kube-system canal-z6kpw 3/3 Running 030s
kube-system kube-dns-7588d5b5f5-sf4vh 3/3 Running 030s
kube-system kube-dns-autoscaler-5db9bbb766-jz2k61/1 Running 030s
kube-system metrics-server-97bc649d5-4rl2q1/1 Running 030s
kube-system rke-ingress-controller-deploy-job-bhzgm 0/1 Completed 030s
kube-system rke-kubedns-addon-deploy-job-gl7t40/1 Completed 030s
kube-system rke-metrics-addon-deploy-job-7ljkc0/1 Completed 030s
kube-system rke-network-plugin-deploy-job-6pbgj 0/1 Completed 030s

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RKE部署高可用Kubernetes集群 的相关文章

随机推荐

  • linux下制作动态库

    1 动态库的介绍 动态库 也叫共享库 动态库与用户编写的程序相互独立 不被包含在用户生成的可执行文件当中 2 动态库的创建 第一步 将写好的程序编译 我们事先写好两个程序 bye c hello c 一个输出hello一个输出bye 在终端
  • Spring AOP(一)五种增强(Advice)

    AOP术语都非常抽象 结合某些小例子就会形象 具体一些 连接点 Joinpoint Spring仅支持方法的连接点 即仅能在方法调用前 方法调用后 方法抛出异常时及方法调用前后 这些程序执行点织入增强 黑客攻击系统需要找到突破口 从某种程度
  • 【安卓网络编程】Android Studio导入Volley

    在Android Studio中使用Volley框架 首先要导入Volley到项目中去 点击主界面左上角File 点击Project Structure 在Modules下 点击app 然后点击Dependencies 然后点击右边的那个
  • 企业级音视频会议实战之webrtc服务器janus品尝实战

    1 前言 之前写过单纯用webrtc和springboot实现单人 多人 屏幕分享等功能的一系列文章了 心疼各位giegie 已将例子放在下面 不麻烦你们去找了 webrtc实现视频群聊系列文章 一 之基础入门 webrtc实现视频群聊系列
  • C++ 大话设计之《访问者模式》(优缺点,设计原理,常用场景)

    访问者模式是一种行为型模式 优点 能够在不改变对象结构的情况下增加新的操作 使得操作集合可以相对独立地演化 缺点 增加新的元素类变得困难 因为每个新元素都必须被访问者类所接受 此外 如果对象结构中的元素类经常发生变化 那么使用访问者模式可能
  • 微信公众号订阅通知设置

    1 开通订阅通知 根据api开通 https developers weixin qq com doc offiaccount Subscription Messages intro html 2 设置订阅通知组件 根据api设置服务号订阅
  • linux dts 语法格式,设备树DTS格式解析

    8种机械键盘轴体对比 本人程序员 要买一个写代码的键盘 请问红轴和茶轴怎么选 宿主机 ubuntu16 04 开发板 tq imx6ull 内核版本 linux 4 1 15 用实例讲解下设备树dts语法 dts文档都在内核的arch ar
  • @antv/g2踩坑记录

    自定义tooltip 需要先在绘图时配置自定义tooltip的需要的字段 chart point position value 1 shape pointer tooltip name value date name value date
  • 投资合伙人股份分配_创业者必看的合伙人股权分配细则

    惠学习 创业者必看的合伙人股权分配细则 惠学习 创业者必看的合伙人股权分配细则 2016 08 03 苏州高新区惠创业 苏州高新区惠创业 案例 真功夫 真功夫的纠纷大家应该比较了解 现在对它的生意还不影响 但是很遗憾它还没IPO 最主要的原
  • Linux配置Java环境

    使用jdk压缩包方式配置Java环境 1 上传jdk到linux 在linux中软件一般安装到 usr local目录中 2 将jdk解压 解压命令 tar zxvf jdk 8u301 linux x64 tar gz 将解压后的jdk改
  • git子模块无法下载

    用rt studio添加软件包时会克隆整个仓库 这个时候如果提交代码 就会出现一个警告 如果你强行提交上去 那么这部分代码不会同步 但是你去远程仓库查看时会有一个子模块 如果你clone下来 想去下载子模块时 会提示 No url foun
  • 【Mybatis】maven配置pom.xml时找不到依赖项(已解决)

    我在配置pom xml依赖时 会冒红 解决方法 1 settings gt maven目录 把maven路径改为自己的 具体操作在 Maven Maven安装 入门教程笔记 暮色 年华的博客 CSDN博客 这篇文章里 2 右击pom xml
  • 独立成分分析FastICA算法原理

    独立成分分析FastICA算法原理 首先对于d维的随机变量 x R d 1
  • 【Android取证篇】华为设备跳出“允许USB调试“界面方法的不同方法

    Android取证篇 华为设备跳出 允许USB调试 界面方法的不同方法 华为设备在鸿蒙OS3系统之后 部分设备启用 允许USB调试 方式会有所变化 再次做个记录 蘇小沐 1 实验环境 系统 版本 Windows 11 专业工作站版 22H2
  • scons编译protobuffer脚本代码

    scons编译protobuffer脚本代码 protoc py Google s Protoc builder Example will produce c output files in the src directory protoc
  • Python选基金(爬虫+策略)

    之前买基金都瞎买的 最近突然想可以用python来试试 综合基金类型 持仓 收益率 基金经理多维度综合考虑 看看能不能帮忙选比较优质的基金出来 整体策略 一 数据准备 1 1获得基金经理信息 import requests import t
  • Qt 的 Qss使用

    Qt 的 Qss 是一种用于定义用户界面的样式表语言 它可以用来定义控件的颜色 字体 边框 背景等样式 可以很方便的实现自定义的样式效果 Qss 的基本语法和 CSS 类似 主要是由选择器和样式属性构成 选择器 选择器用来指定要样式化的控件
  • SIP协议&开源SIP服务器搭建和客户端安装

    1 SIP SIP 是一个应用层的控制协议 可以用来建立 修改 和终止多媒体会话 例如Internet电话 SIP在建立和维持终止多媒体会话协议上 支持五个方面 1 用户定位 检查终端用户的位置 用于通讯 2 用户有效性 检查用户参与会话的
  • 如何防止token伪造、篡改、窃取

    Token的伪造 窃取和篡改的安全问题 伪造 forgery 指攻击者伪造一个token 使系统错误地认为这是一个合法的token 从而获得未经授权的访问权限 窃取 theft 指攻击者通过某种手段获取到了一个合法的token 然后利用这个
  • RKE部署高可用Kubernetes集群

    RKE简介 RKE全称Rancher Kubernetes Engine 是一个快速的 多功能的 Kubernetes 安装工具 通过RKE 我们可以快速的安装一个高可用K8S集群 RKE 支持多种操作系统 包括 MacOS Linux 和