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

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 updatewget -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.rhkb.cn/news/85537.html

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

相关文章

代谢组学市场分析,制药及生物制药行业正在推动全球代谢组学产业的发展

代谢组学是对某一生物或细胞所有小分子量代谢产物进行定性和定量分析的一门新兴学科,其揭示的小分子代谢产物变化是机体内基因、蛋白质/酶等功能变化的一系列事件的最终结果,直接反映了生物体系的最终状态,可以反映机体特定病理生理状态下整体…

面试热题(反转链表)

给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 链表的题&#xff0c;大部分都可以用指针或者递归可以做&#xff0c;指针如果做不出来的话&#xff0c;…

JMeter 查看 TPS 数据,详细指南

TPS 是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时&#xff0c;收到服务器响应后结束计时&#xff0c;以此来计算使用的时间和完成的事务个数。在 JMeter 中&#xff0c;我们可以使用以下方法查看 T…

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面

前言&#xff1a; Cloud Studio是一个在线的云集成开发环境&#xff08;IDE&#xff09;&#xff0c;可以让开发人员在浏览器中轻松地开发、测试、调试和部署应用程序。它提供了基于云的计算资源和工具&#xff0c;例如代码编辑器、编译器、调试器、版本控制系统和项目管理工具…

最大子数组和【力扣53】

一、解题思路 Max[i]表示&#xff1a;以nums[i]为开头的所有连续子数组和的最大值。 由此可以推出Max[i-1]和Max[i]的关系&#xff1a; 若Max[i]>0&#xff1a;Max[i-1]nums[i-1]Max[i]&#xff1b; 否则&#xff1a;Max[i-1]nums[i-1]&#xff1b; 则ansMAX&#xff0…

SAP从入门到放弃系列之BOM行项目-虚拟装配-Part4

文章目录 虚拟组件&#xff08;Phantom assemblies&#xff09;&#xff1a;作用&#xff1a;BOM中虚拟件维护的方式&#xff1a;物料主数据维度BOM组件维度&#xff08;数据优先级最高&#xff09;BOM组件的展开类型&#xff1a;BOM组件的特殊采购类 数据测试示例&#xff1a;…

flutter 初识(开发体验,优缺点)

前言 最近有个跨平台桌面应用的需求&#xff0c;需要支持 windows/linux/mac 系统&#xff0c;要做个更新应用的小界面&#xff0c;主要功能就是下载更新文件并在本地进行替换&#xff0c;很简单的小功能。 花了几分钟构建没做 UI 优化的示例界面&#xff1a; 由于我们的客…

设计模式篇

工厂方法模式 简单工厂模式 工厂方法模式 抽象工厂模式 策略模式 责任链模式

【面试八股文】每日一题:谈谈你对异常的理解

每日一题-Java核心-谈谈你对异常的理解【面试八股文】 异常是程序在运行过程中出现的错误或不正常的情况。当程序执行过程中遇到无法处理的错误或者不符合预期的情况&#xff0c;就会抛出异常。异常可以分为两种类型&#xff1a;受检异常和非受检异常。 受检异常是指在程序编译…

【LeetCode】买卖股票的最佳时机含冷冻期

买卖股票的最佳时机含冷冻期 题目描述算法分析程序设计 链接: 买卖股票的最佳时机含冷冻期 题目描述 算法分析 程序设计 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();//天数vector<vector<int>> dp(n,vector&l…

创新不辍,再结硕果 | 蓝奥声“无线联动监控技术”

随着无线电通信技术的迅速发展&#xff0c;无线远程监控系统也得到了技术上的更新&#xff0c;它将嵌入式产品与现代无线通信技术相结合&#xff0c;共同构成了一种新型的监测控制系统。物联网及其相关无线联动通信技术是智能科技快速发展的重要支撑技术之一&#xff0c;由此带…

gin的占位符:和通配符*

1、用法 在 Gin 路由中&#xff0c;可以使用一个通配符&#xff08;*&#xff09;或一个占位符&#xff08;:&#xff09;来捕获 URL 的一部分。 r.GET("/royal/:id", func(c *gin.Context) {id : c.Param("id")//fmt.Println("into :id")c.Str…

企业产品手册5大核心功能,附产品手册在线制作工具Baklib

企业产品手册的5大核心功能 企业产品手册是企业向用户传达产品信息、功能和使用方法的重要工具。下面将介绍企业产品手册的五个核心功能。 1. 产品介绍和特点展示 产品手册的首要功能是介绍和展示企业的产品。它应该提供清晰、详细的产品信息&#xff0c;包括产品的特点、优势…

关于接口测试用例设计的一些思考

接口测试发现的典型问题 传入参数处理不当&#xff0c;引起程序错误类型溢出&#xff0c;导致数据读取和写入不一致对象权限校验出错&#xff0c;可获取其他角色信息状态出错&#xff0c;导致逻辑处理出现问题逻辑校验不完善定时任务执行出错 接口测试用例设计 接口测试用例…

【MongoDB】索引

目录 一、概述 二、索引的类型 1、单字段索引 2、复合索引 3、其他索引 三、索引的管理 1、索引的创建 2、索引的查看 3、索引的删除 四、索引的使用 1、执行计划 2、涵盖的查询 一、概述 索引支持在MongoDB中高效地执行查询。如果没有索引&#xff0c;MongoDB必须…

爬虫与搜索引擎优化:通过Python爬虫提升网站搜索排名

作为一名专业的爬虫程序员&#xff0c;我深知网站的搜索排名对于业务的重要性。在如今竞争激烈的网络世界中&#xff0c;如何让自己的网站在搜索引擎结果中脱颖而出&#xff0c;成为关键。今天&#xff0c;和大家分享一些关于如何通过Python爬虫来提升网站的搜索排名的技巧和实…

了解Swarm 集群管理

Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API&#xff0c;所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限…

(学习笔记-进程管理)多线程冲突如何解决

对于共享资源&#xff0c;如果没有上锁&#xff0c;在多线程的环境里&#xff0c;很有可能发生翻车。 竞争与合作 在单核 CPU 系统里&#xff0c;为了实现多个程序同时运行的假象&#xff0c;操作系统通常以时间片调度的方式&#xff0c;让每个进程每次执行一个时间片&#xf…