如何通过开源项目搭建私有云平台--第四步上:安装rancher,搭建K8s集群

news2024/10/1 7:42:43

第四步上:安装rancher,搭建K8s集群

第四步比较复杂,因此准备分上中下三篇文章来介绍,本次采用rancher来部署K8s集群,选择rancher如下:

1)部署K8s简单,有一个不是那么复杂的管理界面

2)rancher自带了,监控,存储,告警应用,可以直接在管理界面部署,不用额外找方案

具体部署环境如下

服务器IP用途环境说明
10.10.10.5 部署ranchercentos 8 安装docker
10.10.10.6 k8s-master1 ,etcdcentos 8 安装docker
10.10.10.7k8s-master2 ,etcdcentos 8 安装docker
10.10.10.8k8s-master3,etcdcentos 8 安装docker
10.10.10.9k8s-node1,workercentos 8 安装docker
10.10.10.10k8s-node2,workercentos 8 安装docker

1、部署rancher,选用rancher2.7.1

在10.10.10.5  运行如下命令:

docker run -itd -p 80:80 -p 443:443  -v /opt/rancher:/var/lib/rancher  --restart=unless-stopped  --privileged=true --name rancher  -e CATTLE_AGENT_IMAGE="registry.cn-hangzhou.aliyuncs.com/rancher/rancher-agent:v2.7.1"   registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.7.1

通过docker log,发现rancher无法启动,可以尝试运行如下命令,具体这两个命令有什么用,我也不清楚,我是在rancehr github上面看到帖子,每次我重启rancher后都会无法正常启动,都是通过运行这两条命令后,就正常了

modprobe ip_tables

echo 'ip_tables' >> /etc/modules

如果一切正常,在浏览器访问 https://10.10.10.5 ,按照提示,用docker log找到密码,登录rancher

2、在10.10.10.6 k8s-master1作如下准备工作

1)、 安装docker,编辑配置文件,加入镜像仓库地址,然后重启docker,

   vim  /etc/docker/daemon.json,输入如下内容

   {

         "insecure-registries":["10.10.10.3:3443"],     #10.10.10.3是harbor安装地址,可以参考步骤3

         "data-root":"/home/software/docker"   #修改docker文件存放路径

    }

systemctl daemon-reload && systemctl enable docker && systemctl enable containerd && systemctl restart docker

2)、 按顺序输入如下命令:

#设置机器hostname

hostnamectl set-hostname master-1  #根据用途设置主机名

    

#关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

#关闭selinux(linux的安全机制)

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

getenforce    #关闭后确认,输出Permissive表示已经关闭

#关闭swap(关闭内存交换)

swapoff -a

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

free -m  # 检查,确保swap里面显示是0

#安装IPVS模块,允许 iptables 桥接流量

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack_ipv4
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf

net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding=1

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

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

EOF

sysctl --system  #是上述配置生效

#启动时间同步

systemctl start chronyd

systemctl enable chronyd

date

#重启服务器,然后输入如下命令验证

lsmod | grep br_netfilter

lsmod | grep -e ip_vs -e nf_conntrack_ipv4

最终结果如下图:

3、在rancher新建k8s集群,具体步骤如下

1)、选择rke1集群,曾经试过选择rke2,但从来没有成功部署过,但如果不通过rancher 部署,通过下载rke2离线安装包,就能成功部署,估计是拉不到镜像造成的,不过rke2不用docker,不太习惯,最终还是选择了rke1

2),录入k8s集群配置,这里要注意如下几个配置     

 具体关于minio可以参考如何通过开源项目搭建私有云平台--第一步:安装Minio_一个平凡的农民工的博客-CSDN博客

3、如果上述配置完成就会生成安装命令,根据需要选择节点角色,然后复制命令到10.10.10.6 运行具体如下图: 

4、修改网络配置,第一个master安装成功后,k8s集群已经成功部署了,不要那么快安装其他节点,先把网络配置修改,让集群支持IPVS和BGP,具体做法如下

1)在进群管理,编辑某个集群yaml文件,找到如下配置

把kube-proxy配置,改成如下,具体如下图:

 kubeproxy:
      extra_args:
        proxy-mode: ipvs
      extra_binds:
        - '/lib/modules:/lib/modules:ro'

2) 在master1节点,重启docker restart kube-proxy,安装 yum install ipvsadm  -y,运行如下命令验证 ip add|grep ipvs 和 ipvsadm -Ln,具体如下图

 

 

3)找到calico deamonset,修改calico配置,支持BGP,具体如下图:

  点击“编辑配置”,进入编辑界面,将环境变量CALICO_IPV4POOL_IPIP 设置Off,添加新环境变量FELIX_IPINIPENABLED为 false,具体如下图: 

 

4)、重启master1机器,这里就是为什么部署第一节点后,不要那么快部署其他节点,如果不预先配置好网络,等整个集群部署完了,需要每台机器都要重启,现在只需要重启1次,后面新加入的机器自动就会支持BGP,重启完后,在master1机器上进行验证

修改之前如下图:

修改之后并重启后如下图:

5)、由于网络配置发生了变化,要去rancher安装的服务器上,重启rancher容器,如果不重启,可能会造成rancher无法远程接入容器,如果重启后rancher无法正常启动,运行安装时提到的两条命令

5、重复第2步,修改剩余的机器的配置,并从rancher复制安装命令到每个机器上运行,搭建整个K8s集群

6、验证备份,进入具体某个K8s集群,尝试生成快照,会显示在S3保存快照,打开Minio对应的桶,能看到备份文件,具体如下图:

 

7、为了后续方便管理,随便找一台master节点,安装kubectl,具体步骤如下:

1)下载kubectl

curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl

2)下载后,运行如下命令进行部署

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

3)从rancher进入某个集群,点击右上角按钮,下载k8s集群配置文件 ,具体如下图:

注意下载后要把集群配置文件里面,将涉及rancher地址的环境删除掉,只保留master地址,具体做法如下:

在配置文件找到rancher安装的IP地址,然后把整块-name删除掉 

确保最后一行current-context:  后面不是被删除的名字,可以换成contexts:下面的与rancher不相关的其他名字

 这一步比较重要,因为默认K8s集群是通过rancher来转发请求的,如果rancher所在的服务器down了,kubectl就无法发出命令了,要直接改成master相关的上下文。

4)在服务器建立目录/root/.kube/config,将从rancher下载的配置文件上传到该目录

5)进入root目录,vim .bash_profile(前面有一个点),添加如下行
export KUBECONFIG=/root/.kube/config/<rancher下载配置文件名>.yaml

6) 运行 source .bash_profile 使配置生效,运行kubectl get pod -A验证是否能显示所有pod

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

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

相关文章

163种中草药(中药材)数据集说明(含下载地址)

163种中草药(中药材)数据集说明(含下载地址) 目录 163种中草药(中药材)数据集说明(含下载地址) 1. Chinese-Medicine-163数据集说明 2. Chinese-Medicine-163数据集下载 3. 深度学习实现中草药(中药材)识别 本文将分享一个大规模的中草药(中药材)图片数据集(Chinese-Medic…

Ubuntu18.04安装ROS Melodic

1.设置安装源 为了安装ROS Melodic&#xff0c;首先需要在Ubuntu 18.04 LTS上添加安装源到source.list&#xff0c;方法如下 sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list 加…

元宇宙场景下的实时互动RTI技术能力构建

元宇宙可谓是处在风口浪尖&#xff0c;无数的厂商都对元宇宙未来抱有非常美好的憧憬。正因如此&#xff0c;许许多多厂商都在用他们自己的方案&#xff0c;为元宇宙更快、更好的实现&#xff0c;在自己的领域贡献力量。LiveVideoStack 2022北京站邀请到了 ZEGO 即构科技的解决方…

MobPush Android SDK厂商通道申请指南

华为厂商申请 创建应用 登录华为开发者联盟&#xff0c;注册您的应用&#xff0c;在应用信息中获取APP ID和Client Secret 配置SHA256证书指纹 在华为开发者联盟配置SHA256证书指纹。获取及配置请参见华为官方文档配置AppGallery Connect 设置消息回执 集成华为厂商通道SDK…

数据结构—双向链表

目录 1. 链表的种类 2. 最实用的两种链表类型 3. 实现双向带头循环链表 3.1 创建头节点 3.2 实现双向循环功能—返回头指针 3.3 尾插 3.4 头插 3.5 尾删 3.6 头删 4. 实现两个重要接口函数 4.1 随机插入 4.2 随机删除 5. 顺序表和链表总结 1. 链表的种类 由上面…

【Nginx网站服务】

安装Nginx服务 1.先去官网下载软件包 2.关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld setenforce 0nginx-1.18.0.tar.gz nginx-1.22.0.tar.gz3.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件…

javaEE汽车用油加油站销售管理系统servlet

经过我的实地考察&#xff0c;我发现现在的销售管理有以下弊端&#xff1a; (1)、大多数都是人工记录&#xff0c;人工开票&#xff0c;这样既费时费力&#xff0c;还费财&#xff1b; (2)、由于品种种类的增多&#xff0c;记录货品的资料变得麻烦&#xff1b; (3)、对一些顾客…

COMSOL锂离子电池仿真技术与应用

背景&#xff1a; 随着各国燃油车禁售时间表的推出&#xff0c;新能源汽车的地位愈发稳固。而锂离子电池作为电动车的核心动力源&#xff0c;也越来越受到市场的追捧。锂离子电池在制作过程中涉及正极、电解液、负极、隔膜等材料的选取与匹配&#xff0c;极片设计参数的选择等…

原型设计工具即时设计、Axure、Figma、Sketch,哪个更好用?

在线网页原型图设计软件的使用与桌面端相比具备优势&#xff0c;因为在线网页原型图设计软件的使用全程不需要安装&#xff0c;而且在线网页原型图设计软件也没有任何地点上的限制&#xff0c;更主要的是在线网页原型图设计软件在操作系统上也没有限制&#xff0c;不论是现在使…

分享10个前端开发者需要掌握的DOM技巧

Web开发不断发展&#xff0c;掌握最新的趋势和最佳实践对每位开发者来说都至关重要。Web开发的最重要方面之一就是使用文档对象模型&#xff08;DOM&#xff09;。在本文中&#xff0c;我们将探讨10个必须掌握的DOM技巧和技巧&#xff0c;配有代码示例&#xff0c;这将帮助您成…

camunda工作流user task节点用途

Camunda中的User Task用于在流程中定义人工任务&#xff0c;需要一个人来执行该任务并提供相关信息。通常&#xff0c;User Task在业务流程中用于需要人类干预的步骤&#xff0c;例如审核、审批、调查等。 User Task具有以下特性&#xff1a; 1、指派任务给具体的用户或用户组…

leetcode547. 省份数量

有 n 个城市&#xff0c;其中一些彼此相连&#xff0c;另一些没有相连。如果城市 a 与城市 b 直接相连&#xff0c;且城市 b 与城市 c 直接相连&#xff0c;那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市&#xff0c;组内不含其他没有相连的城市。 给你一…

讨论度超20亿,肯德基疯狂星期四是如何出圈的?

每到周四&#xff0c;网上就会出现一股“神秘力量”——今天是星期四&#xff0c;V我50&#xff0c;请我吃肯德基。 肯德基疯狂星期四能有多火&#xff1f; 目前&#xff0c;#肯德基疯狂星期四#话题阅读量超23亿次&#xff0c;参与讨论次数超600万&#xff0c;而带话题原创人数…

不得不说的结构型模式-桥接模式

桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它可以将抽象部分与实现部分分离&#xff0c;使得它们可以独立地变化。桥接模式的核心思想是将一个系统分成两个独立的部分&#xff0c;抽象部分和实现部分&#xff0c;并且让它们可以互相独立…

sublime text的snippet介绍,提高编程效率

自定义Snippet Sublime Text 的 Snippet 是一种快捷方式&#xff0c;它允许您使用自定义模板或代码片段更快地编写代码。以下是创建 Snippet 的步骤&#xff1a; 打开 Sublime Text 编辑器并创建一个新文件。菜单栏选择 “Tools” -> “Developer” -> “New Snippet”…

python里面单双下划线的区别

区别&#xff1a; xx:公有变量&#xff0c;所有对象都可以访问&#xff1b; xxx:双下划线代表着是系统定义的名字。 __xxx&#xff1a;双前置下划线&#xff0c;避免与子类中的属性命名冲突&#xff0c;无法在外部直接访问。代表着类中的私有变量名。 _xxx&#xff1a;单前置…

【Maven 入门】第一章、Maven概述

一、什么是Maven&#xff1f; Maven是一款基于Java平台的强大构建工具&#xff0c;可用于管理和构建项目。它提供了一种易于使用的建立项目的方法&#xff0c;使开发者可以更快速、更高效地构建软件。 Maven的功能包括依赖管理、构建、发布、文档生成、测试在内的整个项目生命…

nodejs项目的轻量级数据持久化方案,node-json-db,直接使用json文件保存,查询数据。

前言 作为一名前端开发&#xff0c;我们做网站时&#xff0c;难免会遇到需要保存数据的场景&#xff0c;比如做一个小官网&#xff0c;没有注册&#xff0c;没有登陆&#xff0c;只有一个给我们提建议&#xff0c;如下面的&#xff0c; 网站上只有一处需要填写数据。 场景 …

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…

3自由度并联绘图机器人实现写字功能

1. 功能说明 本文示例将实现R305样机3自由度并联绘图机器人写字的功能。 2. 电子硬件 在这个示例中&#xff0c;采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09; 扩展板Bigfish2.1扩展板电池7.4V锂电池 3. 功能…