一文学会用RKE部署高可用Kubernetes集群

k8s架构图

 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 团队。

版本选择

软件版本源码版本发布时间
RKE1.3.12GitHub - 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
k8s1.23.7GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management2022-05-26,1.23.7 released
helmv3.9.2Releases · helm/helm · GitHub
rancher2.6.6GitHub - 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.241核/2Gnginx负载
192.168.43.261核/2Gkubernetes node1
192.168.43.271核/2Gkubernetes node2
192.168.43.281核/2Gkubernetes node3
192.168.43.291核/2Grancher-agent
192.168.43.301核/2Grancher-agent
192.168.43.311核/2Grancher-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.26internal_address: 192.168.43.26user: kangmingrole: [controlplane,worker,etcd]- address: 192.168.43.27internal_address: 192.168.43.27user: kangmingrole: [controlplane,worker,etcd]- address: 192.168.43.28internal_address: 192.168.43.28user: kangmingrole: [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-namespacesNAMESPACE 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/45443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【YOLOv5/v7改进系列】改进池化层为SimSPPF

一、导言 SimSPPF(Simplified Spatial Pyramid Pooling with Fixed-size kernel)模块是在YOLOv6架构中引入的一个关键组件,它旨在优化原始SPPF(Spatial Pyramid Pooling Fixed-size)模块的效率。以下是SimSPPF的一些优…

开发TEE的踩坑之开发TEE

系统:Ubuntu20.04(双系统,非虚拟机) 一、前置说明1、TEE平台的选择2、机器间的通信方式3、程序和数据集的示例4、结果文件的解密 二、服务器部署三、客户端部署四、工程应用 本系列为笔者开发TEE(Trusted Execution En…

【笔记】虚拟机中的主从数据库连接实体数据库成功后的从数据库不同步问题解决方法2

错误: Last_Errno: 1008 Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction ANONYMOUS at source log mysql-bin.000014, end_log_pos 200275. See error lo…

开放式耳机哪款好一点?开放式耳机科普五款推荐!

“选择开放式耳机真的太难了” “哥,怎么才能选到心仪的开放式耳机啊” 这种评论总是会出现后台或者现实的朋友也会问起来,所以作为耳机测评的博主,在这里给大家科普一下到底一款好用的开放式耳机到底怎么选,这篇文章我花了三天…

Centos系统内磁盘分区

Centos系统内磁盘分区 建议如果有重要数据提前做好备份 以根目录扩容50G为例: 1、卸载/home目录 umount /home 2、删除逻辑卷 y确认即可 lvremove /dev/mapper/centos-home 3、df -h查询一下,/home目录已经不见了 4、向根目录分区追加50G容量 lv…

网易云小程序资料分享

链接: https://pan.baidu.com/s/1jzP52Zq4R-nUTxN334XMJg 提取码: xhny

STM32基础篇:EXTI × 事件 × EXTI标准库

EXTI EXTI简介 EXTI:译作外部中断/事件控制器,STM32的众多片上外设之一,能够检测外部输入信号的边沿变化并由此产生中断。 例如,在检测按键时,按键按下时会使电平产生翻转,因此可以使用EXTI来读取按下时…

线上线下一体开源的Hugging Face?| 这些问题不可不看……

7月,2024世界人工智能大会暨人工智能全球治理高级别会议(WAIC 2024)在上海盛大启幕,以“以共商促共享,以善治促善智”为主题进行展览,OpenCSG首次亮相“CSGHub和StarShip”两大产品,全方位展现公…

HTML5新增的input元素类型:number、range、email、color、date等

HTML5 大幅度地增加与改良了 input 元素的种类,可以简单地使用这些元素来实现 HTML5 之前需要使用 JavaScript 才能实现的许多功能。 到目前为止,大部分浏览器都支持 input 元素的种类。对于不支持新增 input 元素的浏览器,input 元素被统一…

kotlin数据容器

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 容器是用于存放数据的载体。容器分为数组、集合。 Kotlin作为一门全新的语言,肯定还是要有自己的容…

网优学习干货:xx5G速率优化现场实战版

速率概述 无线网络仍然是5G网络能力最容易受限的环节,无线网络技术的应用将最终决定5G网络能力的木桶深度。移动通信中传统关键技术在5G将会继续使用。5G NR在继承了LTE原有部分技术基础上,采用了一些技术演进和新技术创新。比如NR继承了LTE的OFDM和SC-…

ArduPilot开源飞控之AP_Mount_Topotek

ArduPilot开源飞控之AP_Mount_Topotek 1. 源由2. 框架设计3. 重要函数3.1 动态过程3.1.1 AP_Mount_Topotek::update3.1.2 AP_Mount_Backend::calculate_poi 3.2 基础能力3.2.1 AP_Mount_Topotek::healthy3.2.2 AP_Mount_Topotek::has_pan_control 3.3 设备功能3.3.1 AP_Mount_T…

python 实验八 数据分析与展示

一、实验目的 掌握掌握matplotlib库中pyplot模块的使用。 二、实验环境 Window10(x64),Python 3.8(x64),PyCharm Community Edition 2020.3.2(x64) 三、实验内容 现有列表hight…

初学SpringMVC之过滤器解决乱码

写个 login.jsp 页面 提交的 method 一般为 post(写 get 不安全,地址栏上会显示) action 表示提交后跳转的地址 (不直接写控制器里的路径是因为配置 Tomcat 时设置了前缀路径,默认走 http://localhost:8080&#xf…

市面上的护眼台灯哪个牌子最好?分享学生护眼台灯十大排名

家长们对孩子的用眼健康很重视,为什么?现在是科技电子时代,人们对电子屏幕的依赖性高,小孩子年纪小,眼部还处于正在发育的阶段,他们在学校中长时间的学习读写,用眼时间长。而且随着科技渗入教学…

如何选择小型超声波清洗机? 2024年值得买的四款眼镜清洗机总结

久了不擦洗的眼镜,往往会滋生很多细菌病毒,久而久之就会影响到视力和眼睛健康。而超声波清洗机作为一款高效清洁物品,可以帮助人们快速且深度地清洁眼镜,很多清洗机使用久一点清洁力就减弱了,所以要找一款性价比高的清…

【Java EE】统一功能返回

一、拦截器 1.1 拦截器的作用 在对于数据库进行增删查改的时候,如果当前页面不检查用户是否登录,然后就能操作成功是不合理的,解决方法有两个: 对于已经写好的每个接口都加上一个判断,从Session中获取用户信息&…

CSS 中的 ::before 和 ::after 伪元素

目录 一、CSS 伪元素 二、::before ::after 介绍 1、::before 2、::after 3、content 常用属性值 三、::before ::after 应用场景 1、设置统一字符 2、通过背景添加图片 3、添加装饰线 4、右侧展开箭头 5、对话框小三角 6、插入icon图标 一、CSS 伪元素 CSS伪元…

Spring Boot:连接MySQL错误Public Key Retrieval is not allowed

环境: MySQL版本:8.0.17 SpringBoot版本:2.5.15 解决 解决方式很简单,在数据库配置连接字符串spring.datasource.url末尾添加&allowPublicKeyRetrievaltrue即可,如下图: 重新启动,恢复正常…

django招聘数据分析与可视化管理系统-计算机毕业设计源码55218

摘要 随着互联网的迅速发展,招聘数据在规模和复杂性上呈现爆炸式增长,对数据的深入分析和有效可视化成为招聘决策和招聘管理的重要手段。本论文旨在构建一个基于Python的招聘数据分析与可视化管理系统。 该平台以主流招聘平台为数据源,利用Py…