rancher + k3s + docker私有仓库搭建K8环境(百分之百成功)

news2025/2/26 18:59:08

1.环境准备(4台机器)

文档准备了4台虚拟机,系统是ubuntu server: ubuntu-22.04.1-live-server-amd64.iso
然后进行安装4台虚拟机,如图:

 其中一台用于rancher、其余三台跑K8,一台master,两台工作节点,安装完虚拟机之后,记得每台虚拟机关闭防火墙:
sudo ufw disable

2.配置外网

因为K3安装需要下载外网资源,所以需要每台机器都要具备访问外网能力,这里采用docker版本的v2ray,所以4台虚拟机都要安装docker,使用如下命令进行安装docker。

 sudo apt-get update
 wget -qO- https://get.docker.com/ | sh

安装完成之后,切换root用户,

sudo su

每台机器一次拉取v2ray的镜像,命令:

docker run -d --restart=always --privileged --network=host --name v2raya -e V2RAYA_ADDRESS=0.0.0.0:2017 -v /lib/modules:/lib/modules:ro -v /etc/resolv.conf:/etc/resolv.conf -v /etc/v2raya:/etc/v2raya mzz2017/v2raya

docker启动之后,浏览器访问:http://192.168.0.11:2017/,每台依次导入配置进行设置:

 点击选择按钮,记得选择端口分享,不然容器内部不能访问外网,然后再次点击设置按钮:

 按照这样设置保存之后,然后点击就绪按钮:

 如果报错,发现53端口被占用,那么需要在设置里面关闭防止DNS污染。
此时我们进入虚拟机,然后使用命令访问google:

curl www.google.com

 此时外网已经通畅。

3.配置docker 私有仓库

这里我是单独有一台物理机作为docker的私有仓库,也可以直接用rancher所在的虚拟机搭建。
首先开启docker的远程服务端口2376,执行命令:

sudo vim /usr/lib/systemd/system/docker.service

然后将ExecStart所在的一行改成:

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

如图:

 然后重启服务:

systemctl daemon-reload
systemctl restart docker

开启远程端口之后,我们的项目就可以直接打包docker镜像上传过来了,但是k8服务还不能拉取,我们需要搭建私有仓库服务,执行如下命令拉取镜像:

docker run --name local-regi -d  -p 5000:5000 --restart=always  -v /opt/data/registry:/var/lib/registry registry:2

其中/opt/data/registry为映射的主机的仓库地址,为了docker容器挂掉之后镜像丢失,由于我们是用的http非证书的方式,所以我们拉取镜像的时候也要用http的方式,浏览器访问:http://192.168.0.91:5000/v2/_catalog
如果出现{"repositories":[]]等表示成功。
现在我们上传一个镜像到仓库中,此刻本地仓库有如下镜像:

 我们将com.moon/test的镜像传到5000的仓库中,执行如下命令:

docker tag com.moon/test:1.0 192.168.0.91:5000/com.moon/test:1.0
docker push 192.168.0.91:5000/com.moon/test:1.0

此时我们在访问:http://192.168.0.91:5000/v2/_catalog,仓库已经有镜像,如图:

 然后我们找一个虚拟机进行拉取刚才我们上传的镜像,测试是否能够征程拉取,由于采用的是http,没有证书,所以我们在拉取镜像之前先配置docker,编辑/etc/docker/daemon.json文件,如果没有则创建文件。内存如下:

{ "insecure-registries":["192.168.0.91:5000"]}

如图:

 然后执行命令使配置生效:

systemctl daemon-reload
systemctl restart docker

然后拉取镜像:

docker pull 192.168.0.91:5000/com.moon/test:1.0

如图:

 此时,我们的私有仓库已经搭建完毕。

4.启动rancher

使用快速部署,文档地址:手动快速部署 | Rancher文档
进入rancher的虚拟机,然后docker执行如下命令:

docker run -d --privileged --restart=unless-stopped \
  -p 8080:80 -p 8443:443 \
  rancher/rancher:latest

这里我改掉了端口。
rancher启动起来之后,然后浏览器访问:https://192.168.0.10:8443,修改密码之后进入rancher的管理页面,如图:

4.2创建集群

创建集群的时候一定要勾上REK2/K3S,如图:

 然后点击custom,然后输入集群名称,选择kubenets version,如图:

 然后点击Registries,准备添加私有仓库地址用于拉取我们开发的服务镜像,如图:

 然后点击Registries,准备添加私有仓库地址用于拉取我们开发的服务镜像,如图:

 最后点击创建按钮。

4.2添加master

添加master的时候,我们需要在角色选择上面全部打上勾,然后跳过TLS校验也打上勾,如图:

 然后我们将命令复制出来,在master的虚拟机节点上运行,如图:

等几分钟之后,我们可以看到镜像已经启动起来,在master节点上面执行: 

 注意的是K3这里用的是crictl
然后看我们的集群,此时master已经添加进来了,如图:

 4.3添加work节点

添加work节点的时候,只需要在角色上面勾上worker,并且勾上跳过TLS校验,如图:

 然后复制命令,在工作节点的虚拟机上面执行,等几分钟之后,三个节点正常加入集群,如图:

 5.发布服务

我们将刚才的镜像:192.168.0.91:5000/com.moon/test:1.0发布到集群中。
首先进入我们的集群中,点击workload->Deployments,如图:

 然后点击创建按钮,输入相关信息,如图:

 然后点击创建,这里我们创建了两个副本,等待几分钟,我们可以看到Pod已经成功启动起来了,如图:

 此刻我们可以删除掉其中一个pod,等集群自动去拉取,如图:

 6.创建服务发现,用于外部访问

点击Service Discovery -> Services,如图:

 在创建之后,我们需要下载刚才发布的服务的selector,点击workload -> Deployments,然后选择刚才创建的进行下载YAML,如图:

 然后点击Service Discovery -> Services,进行创建,如图:

 这里选择Load Balancer,然后输入信息如图:

 然后切换到Selectors选项卡,然后打开刚才下载的yaml文件,找到对应的Selectors,如图:

 把对应的key/value复制到输入框,会自动识别,如图:

 最后点击创建便完成了。

最后访问我们的服务,如图:

 

7.服务升级

当修改代码,推送新的镜像升级的时候,点击编辑Deployments配置,如图:

 然后修改新的docker镜像地址即可,保存之后将会自动拉取镜像,如图:

 

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

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

相关文章

写测试用例、重构函数、生成SQL查询……原来CodeGeeX还能做这些!

CodeGeeX中的智能问答功能“Ask CodeGeeX”可以帮助程序员解答开发过程中遇到的问题。但是“Ask CodeGeeX”的能力不止于此,用它还能帮助程序员高效编写测试用例,添加代码调试信息,实现SQL语句等等。 如果你还不知道如何实现,下面…

途乐证券-新股行情持续火爆,哪些因素影响首日表现?

全面注册制以来,参加打新的投资者数量全体呈现下降。打新收益下降,破发频出的布景下,投资者打新策略从逢新必打逐步向优选个股改变。 经过很多历史数据,从商场定价、参加者热度以及机构重视度维度揭秘了上市后股价体现优秀的个股具…

启动springboot,出现Unable to start embedded Tomcat

报错信息 org.apache.catalina.core.ContainerBase : A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbedd…

AMEYA:ROHM新增5款100V耐压双MOSFET,实现业界超低导通电阻

全球知名半导体制造商ROHM(总部位于日本京都市)面向通信基站和工业设备等的风扇电机驱动应 用,开发出将两枚100V耐压MOSFET* 1一体化封装的双MOSFET新产品。新产品分“HP8KEx/HT8KEx (NchNch)系列”和“HP8MEx(NchPch*2)系列”两个系列,共5款新机型。 近…

知了汇智携手20余所高校开展实习实训,助力数字化人才培养

随着数字化转型推进的深入,企业对数字化人才的需求量大幅增长,人才需求结构也发生显著变化。知了汇智作为一家以就业为导向的产教融合服务机构,始终活跃于“育人”与“用人”的生态圈,通过与高校进行产业学院建设、共建实验室、共…

东南亚海外跨境物流管理,移动支付、数据处理程序开发

境外虚拟物流跨境支付平台快速搭建、集成后台采集功能的步骤如下: 一、项目规划与需求分析 在开始搭建境外虚拟物流跨境支付平台之前,需要进行详细的规划和分析。这包括确定项目的目标、了解客户需求、分析市场环境、确定系统架构和技术选型等。通过深…

一文带你快速了解和入门 Apinto 网关!

Apinto 网关快速入门 是 Eolink 旗下一款专门为微服务架构设计的开源 API 网关,完全由 Go 语言开发, 本文主要带大家认识 Apinto 网关以及如何实现快速入门操作。 首先,让我们一起了解 API 网关的概念。它类似于一个门户,用于管理…

finfet grid

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 90nm 及以下的工艺都要求储存器,IP,IO 的多晶硅方向必须和标准单元的多晶 硅方向保持一致,无法像过去工艺一样随意旋转方向。在 22nm 及以下…

shopee虾皮电商十个选品渠道!Get到了!

今天给大家分享虾皮的十个选品渠道,让选品不是难题!话不多都说,往下看! 1.搜索栏去搜索 拿台湾站来说,在shopee后台,我们搜索商品衬衫,在商品展示页面点击热销,除去第一排的广告商品…

元年方舟企业数字化PaaS平台入选《全国企业数字化转型十佳案例》|元年科技

7月4日,2023全球数字经济大会第二届全国企业数字化转型高峰论坛在京隆重举行。大会由全球数字经济大会组委会主办,中关村数字经济产业联盟承办,北京市科学技术协会鼎力支持。论坛期间元年科技凭借卓越案例《构建数字化转型引擎:元…

我的第一个创作纪念日

机缘 时间总是匆匆流逝,转眼间,我已经在前端领域迈入了第一个创作纪念日。回首往事,每一个创作的瞬间都如同一幅幅精彩的画面,在我心中留下深刻的印记。 日常 五年前,我踏入了前端职业的大门,初涉这片陌…

赛码网-01串的魔法(dp) 100%AC代码(C)

———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在准备秋招,一直在练习编程。 ⏩本篇文章对赛码网的01串的魔法 题目做…

开放式耳机对耳朵伤害大吗?开放式耳机哪个好?

一般来说,开放式耳机对耳朵的伤害是较小的,因为开放式耳机不会像入耳式耳机那样深入耳道,而是贴近外耳,所以它对耳朵的压力和负担更小。开放式耳机采用不入耳设计,让你在享受音乐的同时,保持对外界的感知&a…

弹簧滑块模型微分方程PLC数值求解(Euler和Runge-Kutta法SCL源代码)

龙格库塔法求解微分方程的PLC算法,还可以参看下面这篇文章博客: 微分方程数值解法(Runge-Kutta法PLC实现)_RXXW_Dor的博客-CSDN博客微分方程数值解法之欧拉法请参看下面的博客文章:微分方程数值解法(PID仿真用一阶被控对象库PLC算法实现)_数学微积分算法plc编程实例_RXXW_D…

EMC框架简单归纳

电磁干扰的产生原因&#xff1a;电压/电流的变化中不必要的部分。 电磁干扰的耦合途径有两种&#xff1a;导线传导和空间辐射。 导线传导干扰原因是电流总是走“最小阻抗”路径。以屏蔽线为例&#xff0c;低频&#xff08;f<1kHz&#xff09;时&#xff0c;导线的电阻起到主…

Redisson可重入锁原理

微信公众号访问地址&#xff1a;Redisson可重入锁原理 推荐文章&#xff1a; 1、使用原生Redis命令实现分布式锁 ​ 2、为什么引入Redisson分布式锁&#xff1f; 3、SpringBoot整合多数据源&#xff0c;并支持动态新增与切换&#xff08;详细教程&#xff09; 4、SpringBo…

RDMA在典型场景下的技术应用分析与探索

本文首发于&#xff1a;RDMA在典型场景下的技术应用分析与探索 1.业务适配RDMA类型 RDMA传输的适配&#xff0c;从业务场景的使用角度来看&#xff0c;大致可分为如下几种类型。 场景一&#xff1a;机器学习、分布式存储等场景&#xff0c;使用社区成熟的方案&#xff0c;如在…

Linux之命名管道简单模拟进程间通信

Linux之命名管道简单模拟进程间通信 ​ ​ 文章目录 Linux之命名管道简单模拟进程间通信1.引言2.具体实现2.1服务端(Server.cc)2.2客户端(Client.cc) 3.结果 1.引言 ​ 首先&#xff0c;管道是一种半双工的单向进程间通信方式&#xff0c;也就是说它只能进行一边读一边写的…

【236. 二叉树的最近公共祖先】

目录 1.题目描述2.算法思路2.1算法思路12.2算法思路2 3.代码实现3.1代码实现13.2 代码实现2 1.题目描述 2.算法思路 2.1算法思路1 2.2算法思路2 思想很简单&#xff0c;但是最难的是怎么用栈来记录q、p的路线。所以下面才是关键。 3.代码实现 3.1代码实现1 class Solution…

Java训练五

一、跳动的心脏 心脏是动物的重要器官&#xff0c;不断跳动的心脏意味着鲜活的生命力。现在创建一个人类&#xff0c;把心脏类设计为人类里面的一个成员内部类。心脏类有一个跳动的方法&#xff0c;在一个人被创建时&#xff0c;心脏就开始不断地跳动。 package haha; publi…