k3s安装部署说明

news/2024/9/18 15:04:45/ 标签: K8S, K3S, docker

前言:
为什么不是k8s,k8s机子要求资源太高了,先来个简单的k3s

1:环境
ubuntu18

2安装docker
ubuntu18.0.4 如下

1:禁用防火墙及SELinux(可能需要禁止)
systemctl stop firewalld && systemctl disable firewalld
2: 开启路由转发
sudo vim /etc/sysctl.conf
打开 net.ipv4.ip_forward=1
3:安装docker
1>sudo apt-get update
2>安装 apt 依赖包,用于通过HTTPS来获取仓库:
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3>添加Docker官方GPG key并验证
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo apt-key fingerprint 0EBFCD88
4>设置稳定版仓库,用于下载更新Docker
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
5>再次更新镜像源索引
sudo apt-get update
6>安装docker相关
sudo apt-get install docker-ce docker-ce-cli containerd.io
7>测试是否安装成功
docker -v

3:测试镜像
1>修改镜像地址 改为国内镜像地址,本文是阿里云镜像
编辑文件:sudo vim /etc/docker/daemon.json
在该daemon.json配置文件中加入(如果没有该文件会自动建一个):
{
“registry-mirrors”: [“https://mirrors.aliyun.com/”]
}

ubuntu18@ubuntu:/etc/docker$ vim /etc/docker/daemon.json
ubuntu18@ubuntu:/etc/docker$ sudo vim /etc/docker/daemon.json
ubuntu18@ubuntu:/etc/docker$ sudo systemctl daemon-reload
ubuntu18@ubuntu:/etc/docker$ sudo systemctl restart docker
ubuntu18@ubuntu:/etc/docker$ sudo docker info|grep Mirrors -A 1

2>使daemon.json生效
sudo systemctl daemon-reload
3>重启docker服务
sudo systemctl restart docker
4>查看docker镜像源
sudo docker info|grep Mirrors -A 1
5>运行hello-world
sudo docker run hello-world

ubuntu18@ubuntu:/etc/docker$ sudo docker run hello-world
Unable to find image ‘hello-world:latest’ locally
latest: Pulling from library/hello-world
719385e32844: Pull complete
Digest: sha256:dcba6daec718f547568c562956fa47e1b03673dd010fe6ee58ca806767031d1c
Status: Downloaded newer image for hello-world:latest
6>查看本地镜像
sudo docker images
ubuntu18@ubuntu:/etc/docker$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 9c7a54a9a43c 4 months ago 13.3kB

7>卸载
sudo apt-get purge docker-ce docker-ce-cli containerd.io
如果要删除镜像和容器
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

8>搜索镜像
docker search node

9>拉取镜像
实际上,镜像的仓库名称中还应该添加仓库地址,即是注册服务器(registry)的地址作为前缀,当省略前缀时,则默认拉取的官方Docker hub所提供的镜像。
docker pull ubuntu:16.04表示从官方docker hub中拉去进行
docker pull cloudcomputing/ubuntu:tagname表示从自己在Docker hub上创建的个人仓库中拉取镜像
docker pull regis**.aliyuncs.com/cloudubuntu/ubuntu:16.04表示从自己在阿里云上注册的仓库中拉取镜像

sudo docker pull ubuntu:18.04

4:
1>启动容器
运行Docker容器
docker run -it --name mycontainer ubuntu:18.04 /bin/bash

ubuntu18@ubuntu:/etc/docker$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 f9a80a55f492 3 months ago 63.2MB
hello-world latest 9c7a54a9a43c 4 months ago 13.3kB
运行命令
ubuntu18@ubuntu:/etc/docker$ docker run -it --name ubuntu18 ubuntu:18.04 /bin/bash

1>拷贝文件
docker cp /path/on/host :/path/to/file

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp 96f7f14e99ab:/www /tmp/

docker cp /root/H-test 0b51220058b9:/root/docker-test/index/folder/

5:停止/退出/删除 容器
1>停止
docker ps 命令列出所有正在运行的容器
docker stop

2>
退出
exit命令
退出后再进入
docker attach <container_id>
docker exec -it <container_id> /bin/bash

3>
运行以下命令来删除镜像:
docker rmi <镜像ID或名称>
强制删除 sudo docker rmi -f f9a80a55f492

4>查看容器
sudo docker ps -a 查看所有容器
sudo docker container ls -all --all, -a false 显示所有容器(默认只显示运行的)
删除容器 sudo docker container rm festive_mccarthy

6:docker 加速
创建或修改 /etc/docker/daemon.json 文件

dockerdaemonjson_137">vi /etc/docker/daemon.json

{
“registry-mirrors”: [“https://registry.docker-cn.com”]
}
systemctl daemon-reload
systemctl restart docker.service
1.网易
http://hub-mirror.c.163.com

2.Docker中国区官方镜像
https://registry.docker-cn.com

3.中国科技大学
https://docker.mirrors.ustc.edu.cn

4.阿里云容器服务
https://cr.console.aliyun.com/
5。阿里专属
首页点击“创建我的容器镜像” 得到一个专属的镜像加速地址,类似于“https://1234abcd.mirror.aliyuncs.com”

3:安装k3s
参考
k3s:https://github.com/k3s-io/k3s/releases

k3s 57.6 MB last week 2进制文件(第一项)
k3s-airgap-images-amd64.tar 552 MB last week 镜像 (第2项)
Source code (zip) 2 weeks ago 源码 (倒数第2项)

离线部署
https://blog.csdn.net/qq_30614345/article/details/131387040

1:

两台主机分别设置

$ hostnamectl set-hostname master
$ hostnamectl set-hostname slave

查看当前主机名称

$ hostname

2::设置 ip 和 hostname 的对应关系

两台主机分别设置

$ cat >> /etc/hosts << EOF
192.168.43.183 master
192.168.43.184 slave
EOF

3:
手动部署镜像(all node)
从 K3s GitHub Release 页面下载 K3s v1.22.13+k3s1二进制文件,K3s 二进制文件需要与离线镜像的版本匹配。
下载地址:https://github.com/rancher/k3s/releases
这里选择 v1.22.13 版本:
https://github.com/k3s-io/k3s/releases/tag/v1.22.13+k3s1

4:
下载下面的两个文件:
k3s
k3s-airgap-images-amd64.tar.gz
将二进制文件放在 /usr/local/bin 目录下,并确保这个二进制文件是可执行的。
$ cp k3s /usr/local/bin/
$ chmod 755 /usr/local/bin/k3s
$ mkdir -p /var/lib/rancher/k3s/agent/images/
$ cp k3s-airgap-images-amd64.tar.gz /var/lib/rancher/k3s/agent/images/

5:下载安装脚本(all node)
下载安装脚本:
https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh

chmod +x k3s-install.sh

6: master节点安装

master节点安装

安装k3s,跳过下载二进制文件

$ INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh

生成token

[root@master ~]# cat /var/lib/rancher/k3s/server/node-token
K10ae4e5bb6d803f8c2a0056973f4731740c0c78e40538078ed904c51ca0fd33ed0::server:444495845f5bf047ea343bfa5a1d92f5
[root@master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master Ready control-plane,master 27s v1.22.13+k3s1

7:slave节点安装

slave节点安装

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://192.168.43.183:6443 K3S_TOKEN=K10ae4e5bb6d803f8c2a0056973f4731740c0c78e40538078ed904c51ca0fd33ed0::server:444495845f5bf047ea343bfa5a1d92f5 ./k3s-install.sh

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://192.168.1.29:6443 K3S_TOKEN=K10e6b8a92130993a2f4d0f15842ecbd081b37a381943e81e0048814a888614eb3c::server:05e2b26f063a01522e94b32180678590 sh ./install.sh

8:
查看节点 sudo kubectl get nodes
删除节点 sudo kubectl delete node k8s-node3

卸载 k3s
如果想重装 k3s 或卸载 k3s,可以执行如下命令。

在 server 节点上

k3s-uninstall.sh

在 worker 节点上

k3s-agent-uninstall.sh

9:
sudo kubectl get nodes

输出类似如下,表示集群安装成功,说明一个 server 节点,二个 worker 节点已创建成功。

NAME STATUS ROLES AGE VERSION
server Ready control-plane,master 129m v1.23.4+k3s1
node1 Ready 3m2s v1.23.4+k3s1
node2 Ready 34s v1.23.4+k3s1

10 纯命令启动(非脚本)
启动master和worker

没有脚本启动方便,需要自己指定启动参数,如server、agent等

sudo k3s server &

Kubeconfig is written to /etc/rancher/k3s/k3s.yaml

sudo k3s kubectl get nodes

On a different node run the below. NODE_TOKEN comes from
/var/lib/rancher/k3s/server/node-token on your server

sudo k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}

https://blog.csdn.net/liumiaocn/article/details/103342443
https://blog.csdn.net/qq_30614345/article/details/131387040
11:部署镜像
kubectl run
创建并运行一个或多个容器镜像。
创建一个deployment 或job 来管理容器。
run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…]
master 上 部署 nginx
sudo kubectl run --image=nginx nginx-app --port=80

ubuntu18@ubuntu:~/k3s$ sudo kubectl run --image=nginx nginx-app --port=80
[sudo] password for ubuntu18:
pod/nginx-app created

[root@host121 ~]# sudo kubectl run --image=nginx nginx-app --port=80
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx-app created

通过kubectl get node命令发现此ningx的pod运行所在的节点信息为host122,执行日志如下所示
ubuntu18@ubuntu:~/k3s$ sudo kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-app 1/1 Running 0 32s 10.42.2.4 master

使用expose命令以NodePort的方式生成服务
kubectl expose
将资源暴露为新的Kubernetes Service。
expose (-f FILENAME | TYPE NAME) [–port=port] [–protocol=TCP|UDP] [–target-port=number-or-name] [–name=name] [–external-ip=external-ip-of-service] [–type=type]
ubuntu18@ubuntu:~/k3s$ sudo kubectl expose pod nginx-app --port=80 --type=NodePort --target-port=80 --name=nginx-service
service/nginx-service exposed

https://blog.csdn.net/qq_30614345/article/details/131387040
ubuntu18@ubuntu:~/k3s$ sudo kubectl get pods,svc -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-app 1/1 Running 0 104m 10.42.2.4 master

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.43.0.1 443/TCP 2d2h
service/nginx-service NodePort 10.43.60.107 80:31544/TCP 11m run=nginx-app

查看 k3s 安装之后容器内存在的pod:
[root@master ~]# kubectl get pods -A
pod 的状态为 Running 和 Completed 说明安装成功。

如果觉得有用,麻烦点个赞,加个收藏


http://www.ppmy.cn/news/1519362.html

相关文章

微信小程序:自定义扫码功能

我们今天主要是介绍小程序自定义扫码的应用&#xff0c;相关业务处理可以根据自己需求来填补 WXML&#xff1a; <view class"scan-box direction-column" wx:if"{{ showCanScan }}"><camera class"camera" resolution"high"…

摄像头的ISP和SOC的GPU有区别吗?

摄像头的主芯片必须包含ISP&#xff0c;也就是图像处理器核心。而SOC的GPU或者说显卡也包含图像处理器也就是GPU。两者并无本质区别&#xff0c;都是实现数字图像处理算法。同样的用FPGA做内窥镜图像处理和用FPGA做显示图像处理器本质上也是一样的。 当然两者存在一些细微差别…

【BLE】四.SMP安全配对详解

设备配对流程 SMP专业术语 Paring&#xff08;配对&#xff09;&#xff1a; 配对能力交换&#xff0c;设备认证&#xff0c;密钥生成&#xff0c;连接加密以及机密信息分发等 过程 Bonding&#xff08;绑定&#xff09; 配对中会生成一个长期密钥&#xff08;LTK&#xff0c;…

灾难性遗忘问题(Catastrophic Forgetting,CF)是什么?

灾难性遗忘问题&#xff08;Catastrophic Forgetting&#xff0c;CF&#xff09;是什么&#xff1f; 在深度学习和人工智能领域中&#xff0c;“灾难性遗忘”&#xff08;Catastrophic Forgetting&#xff09;是指当神经网络在增量学习&#xff08;Incremental Learning&#…

使用 Milvus Lite、Llama3 和 LlamaIndex 搭建 RAG 应用

大语言模型&#xff08;LLM&#xff09;已经展示出与人类交互并生成文本响应的卓越能力。这些模型可以执行各种自然语言任务&#xff0c;如翻译、概括、代码生成和信息检索等。 为完成这些任务&#xff0c;LLM 需要基于海量数据进行预训练。在这个过程中&#xff0c;LLM 基于给…

ComfyUI:基于差分扩散的像素级图像修改

在几个月的沉寂之后&#xff0c;差分扩散&#xff08;Differential Diffusion&#xff09;被引入了。 玩了几天之后&#xff0c;我仍然对结果感到震惊。 这种新的先进方法允许以像素为基础进行更改&#xff0c;而不是以整个区域为基础进行更改。 另一种可能更通俗的说法&…

Git 基础使用--权限管理--用户和用户组授权

&#x1f600;前言 本篇博文是关于Git 基础使用–权限管理–用户和用户组授权&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满…

SparkSQL缓存的用法

前言 SparkSQL关于缓存的操作语句官方给了三种: CACHE TABLE(缓存表)UNCACHE TABLE(清除指定缓存表)CLEAR CACHE(清除所有缓存表)下面我们详细讲解这些语句的使用方法。 CACHE TABLE CACHE TABLE 语句使用给定的存储级别缓存表的内容或查询的输出。如果一个查询被缓存…

部署Rancher2.9管理K8S1.26集群

文章目录 一、实验须知1、Rancher简介2、当前实验环境 二、部署Rancher1、服务器初始化操作2、部署Rancher3、登入Rancher平台 三、Rancher对接K8S集群四、通过Rancher仪表盘部署Nginx服务1、创建命名空间2、创建Deployment3、创建Service 一、实验须知 1、Rancher简介 中文官…

Redis KEY操作实战手册:从设计到维护的全面指南

​ &#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索Redis的key的相关操作之旅✨ &#x1f44b; 大家好&#xff01;文本…

spring入门(一)spring简介

一、spring简介 Spring技术是JavaEE开发必备技能&#xff0c;企业开发技术选型命中率>90% spring能够简化开发&#xff0c;降低企业级开发的复杂性。框架整合&#xff0c;高效整合其他技术&#xff0c;提高企业级应用开发与运行效率。 主要学习&…

《计算机操作系统》(第4版)第12章 保护和安全 复习笔记

第12章 保护和安全 一、安全环境 1.实现“安全环境”的主要目标和面临的威胁 实现“安全环境”的主要目标和威胁如表12-1所示。 目标 威胁 数据机密性 对应的威胁为有人通过各种方式窃取系统中的机密信息使数据暴露 数据完整性 对应的威胁为攻击者擅自修改系统中所保存的数…

metallb-speaker缓存

手动修改metallb-config arping返回2个mac地址 删除pod mac正常返回 pkill 进程 返回2个mac

SQL进阶技巧:用户不同 WiFi 行为区间划分分析 | 断点分组问题

目录 0 场景描述 1 数据准备 2 问题分析 3 小结 0 场景描述 现有用户扫描或连接 WiFi 记录表 user_wifi_log ,每一行数据表示某时刻用户扫描或连接 WiFi 的日志。 现需要进行用户行为分析,如何划分用户不同 WiFi 行为区间?满足: 1)行为类型分为两种:连接(scan)、…

OceanbaseV4模拟题解析

使用 Docker 部署的 OceanBase 可以作为MetaDB&#xff0c;供OceanBase相关产品作为元数据数据库来使用。以下哪类产品需要MetaDB?&#xff08;AD&#xff09; ​ A OCP ​ B OBProxy ​ C OAT ​ D OMS MetaDB&#xff1a;基于容器部署的 OceanBase 数据库服务&#xff0c;可…

SpringBoot 集成JprotoBuf实现protobuf类型的接口

文章目录 前言一、实现protobuf类型的接口1. 编写 Controller2. 模拟客户端发起请求3. Postman中发起请求二、教程源码获取前言 这篇文章我们讲解了protoBuf和JprotoBuf的区别,并实现SpringBoot集成JprotoBuf:SpringBoot JprotoBuf序列化与反序列化的实现 本文将基于以上文…

大模型参数高效微调技术原理综述(三)-Prefix Tuning

Prefix Tuning是LLM微调技术中另一个重要的技术分支&#xff0c;于2021年由Stanford提出。 本文通过解读论文**《Prefix-Tuning: Optimizing Continuous Prompts for Generation》**&#xff0c;与小伙伴们一起学习理解Prefix Tuning思想和方法。 1.Abstract(摘要) 首先我们看…

Shell函数:递归函数、阶乘和函数库

文章目录 递归函数示例1&#xff1a;阶乘计算示例2&#xff1a;递归列出目录 函数库 递归函数 递归是指函数在其内部调用自身。递归函数常用于解决像阶乘、斐波那契数列等问题。 示例1&#xff1a;阶乘计算 阶乘&#xff08;Factorial&#xff09;是数学中的一种运算&#x…

计算机毕业设计hadoop+spark知识图谱课程推荐系统 课程预测系统 课程大数据 课程数据分析 课程大屏 mooc慕课推荐系统 大数据毕业设计

1.主要技术&#xff1a; 1.前端: Vue.js 2.后端: SpringBootMybatis - plus数据库: MySQL neo4j 3.算法(机器学习、深度学习):协同过滤算法(基于用户、基于物品全部实现)、神经网络混合CF推荐算法、MLP深度学习算法、SVD深度学习算法、线性回归、预测KNN、CNN卷积神经、LSTM情…

电子邮件混淆策略逃避安全保护

几十年来,网络攻击者一直使用电子邮件混淆技术将恶意代码或数据隐藏在文件、脚本或网络流量中。电子邮件混淆方法有很多,例如将地址放入机器人无法读取的图像、验证码或文本中。这种传统的电子邮件混淆策略众所周知,安全控制措施历来擅长修补和阻止它们。但最近,我们的威胁…