当前位置: 首页 > news >正文

【Kubernetes】K3S

目录

  • 前言
  • 一、原理
    • 单体架构
    • 高可用架构
  • 二、初始化
    • 1.配置yum源
    • 2.关掉防火墙
    • 3.关掉selinux
    • 4. 修改内核参数
    • 5.关掉swap交换分区
  • 三、安装master节点
    • 1. 安装container
    • 2.启动master服务
  • 四、安装node节点
  • 五、卸载
  • 六、总结

前言

各位小伙伴们,大家好,小涛又来了,今天澳同学又来挑刺 提问了
在这里插入图片描述

温馨提示:老规矩,我们先简单了解原理,实操部分请从第二节开始阅读

一、原理

下面我们来看看原理
官网:https://www.rancher.cn/k3s/
文档:https://docs.k3s.io/zh/

K3s 适用于以下场景:

  • 边缘计算
  • 物联网-IoT
  • CI:持续集成
  • Development:开发
  • ARM
  • 嵌入K8S

由于运行 K3s 所需的资源相对较少,所以 K3s 也适用于开发和测试场景。

单体架构

在这里插入图片描述

  • k3s server节点是运行k3s server命令的机器,而k3s Agent 节点是运行k3s agent命令的机器

  • 单点架构只有一个控制节点(在 K3s 里叫做Server node,相当于 K8s 的 master节点),而且K3s的数据存储使用 SQLite 并内置在了控制节点上

  • 在这种配置中,每个 agent 节点都注册到同一个 server 节点。K3s 用户可以通过调用server节点上的K3s API来操作Kubernetes资源。

高可用架构

在这里插入图片描述
虽然单节点 k3s 集群可以满足各种用例,但对于 Kubernetes control-plane 的正常运行至关重要需要在高可用配置中运行 K3s。

一个高可用 K3s 集群由以下几个部分组成:

  • K3s Server 节点:两个或者更多的server节点将为 Kubernetes API 提供服务并运行其他 control-plane 服务
  • 外部数据库:外部数据存储(与单节点 k3s 设置中使用的嵌入式 SQLite 数据存储相反)【不安装在内部集群中】

二、初始化

和K8S的前期工作一样,进行如下操作

1.配置yum源

#配置国内安装docker和containerd的阿里云的repo源
$ yum install yum-utils
$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#================================================
# 配置安装k8s组件需要的阿里云的repo源
cat >  /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF#================================================
$ yum install lrzsz vim-enhanced

2.关掉防火墙

#每个节点都执行
systemctl stop firewalld ; systemctl disable firewalld# 查看是否已关闭
systemctl status firewalld
systemctl is-enabled firewalld

在这里插入图片描述

3.关掉selinux

#每个节点都执行
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config#修改selinux配置文件之后,重启机器,selinux配置才能永久生效,
#查看是否已生效
$ getenforce
#如果显示Disabled说明selinux已经关闭

在这里插入图片描述

4. 修改内核参数

$ modprobe br_netfilter
$ cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF#加载文件
$ sysctl -p /etc/sysctl.d/k8s.conf

问题1:sysctl是做什么的?
在运行时配置内核参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载


问题2:为什么要执行modprobe br_netfilter?
修改/etc/sysctl.d/k8s.conf文件,增加如下三行参数:
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1

如果 sysctl -p /etc/sysctl.d/k8s.conf出现报错:
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-ip6tables: No such file or directory
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory

# 解决方法:
$ modprobe br_netfilter

问题3:为什么开启net.bridge.bridge-nf-call-iptables内核参数?
在centos下安装docker,执行docker info出现如下警告:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

解决办法:
vim /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1


问题4:为什么要开启net.ipv4.ip_forward = 1参数?
kubeadm初始化k8s如果报错:
在这里插入图片描述就表示没有开启ip_forward,需要开启。

net.ipv4.ip_forward是数据包转发:

  • 出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能。
  • 要让Linux系统具有路由转发功能,需要配置一个Linux的内核参数net.ipv4.ip_forward。这个参数指定了Linux系统当前对路由转发功能的支持情况;其值为0时表示禁止进行IP转发;如果是1,则说明IP转发功能已经打开。

5.关掉swap交换分区

备注:在安装k8s里,swap交换分区必须关闭,但有一次做测试的时候,没关,发现也能安装k3s【建议大家最好给关闭】

#每个节点都执行
#临时关闭
$ swapoff -a#永久关闭:注释swap挂载,给swap这行开头加一下注释
$ vim /etc/fstab   #给swap这行开头加一下注释#
#/dev/mapper/centos-swap swap      swap    defaults        0 0

澳同学:为什么要关闭swap交换分区?
小涛:swap是交换分区,如果机器内存不够,会使用swap分区,但是swap分区的性能较低,k8s设计的时候为了能提升性能,默认是不允许使用交换分区的。Kubeadm初始化的时候会检测swap是否关闭,如果没关闭,那就初始化失败。如果不想要关闭交换分区,安装k8s的时候可以指定–ignore-preflight-errors=Swap来解决。

三、安装master节点

1. 安装container

#在 master 和 node 上安装containerd
$ yum install containerd -y#启动containerd
$ systemctl start containerd

2.启动master服务

#我们可以用如下方法:安装速度会更快
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -#在 master 上操作:【本次实验用这种方式执行】
$ curl -sfL https://get.k3s.io | sh -
#看到如下,说明k3s已经启动了:

在这里插入图片描述

#验证安装是否成功【这两种方法都一样】
$ k3s kubectl get node
$ kubectl get node$ kubectl get pods -n kube-system

在这里插入图片描述

我们再对比一下安全前后的内存
很直观的发现,内存只用了大约 512MB 左右,真的很轻量!!
在这里插入图片描述

四、安装node节点

在安装好master节点后,我们继续安装node节点

#获取join token
#添加node节点。需要一个join token。Join token存在于master节点的文件系统上
$ cat /var/lib/rancher/k3s/server/node-token#获取到一串token:[记住这个token]

在这里插入图片描述

#在 node 上执行如下,把work节点加入k3s:
ssh node01
curl -sfL https://get.k3s.io | K3S_URL=https://<master01_IP>:6443 K3S_TOKEN=<刚才cat 的那一串全部粘贴进来>  sh -#如果太慢,使用下面这个方法可加速[本次实验用的这个方法]
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://<master01_IP:6443>  K3S_TOKEN=<刚才cat 的那一串全部粘贴进来> sh -#验证work节点是否加入集群:
#在 master节点
$ systemctl status k3s-agent
$ kubectl get nodes

大功告成,接下来可以愉快的使用容器了😉
注意哦,k3s的所有操作跟k8s无区别,但是学习还是以k8s为主,之后再扩展k3s

五、卸载

下面是如何进行干净的卸载K3S,这一步可忽略

#在server节点执行:
/usr/local/bin/k3s-uninstall.sh#在agent节点执行:
/usr/local/bin/k3s-agent-uninstall.sh

六、总结

澳同学:原来如此,那k3sk8s如何选择呢?
小涛:k8s虽然相对“重”一些,但更稳重,比较适合云计算场景;而k3s比较轻量,适宜用边缘计算场景
澳同学:不错,下回再给你出个难题
小涛:行行行,尽管提问,相互学习,俺可是有cka、cks的运维小哥了😊
澳同学:可以嘛,晚上请你🍗
小涛:谢谢大佬~

各位小伙伴们,咱们下篇文章再见了~

相关文章:

【Kubernetes】K3S

目录 前言一、原理单体架构高可用架构 二、初始化1.配置yum源2.关掉防火墙3.关掉selinux4. 修改内核参数5.关掉swap交换分区 三、安装master节点1. 安装container2.启动master服务 四、安装node节点五、卸载六、总结 前言 各位小伙伴们&#xff0c;大家好&#xff0c;小涛又来…...

Docker实战——容器

目录 Docker 容器的基本概念与操作1.使用“docker create”创建容器。这里基于Nginx的镜像创建了一个容器&#xff0c;名字为mycontainer。2.使用“docker ps -a”命令查看所有的容器&#xff0c;这时的容器不一定是运行状态。3.使用 “docker start” 命令可以启动容器。4.使用…...

亚信安慧AntDB开启超融合数据库新纪元

&#xff08;一&#xff09; 前言 据统计&#xff0c;在信息化时代的今天&#xff0c;人们一天所接触到的信息量&#xff0c;是古人一辈子所能接收到的信息量的总和。当今社会中除了信息量“多”以外&#xff0c;人们对信息处理的“效率”和“速度”的要求也越来越高。譬如&…...

数学建模【多元线性回归模型】

一、多元线性回归模型简介 回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的任务就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进…...

【 10X summary report】怎么看?详细解读笔记

报告内容 在开始正式的分析之前&#xff0c;需要查看在对齐和计数过程中生成的任何总结统计信息。下图是由Cell Ranger工具创建的10X总结报告&#xff0c;在从10X scRNA-seq实验生成计数矩阵时会生成。 The left half of the report describes sequencing and mapping statist…...

K8S—Pod控制器

目录 1.什么是POD控制器 2.POD控制器有几种类型 3.POD与控制器之间的关系 4.示例 4.1 Deployment 4.2 SatefulSet ①为什么要有headless&#xff1f; ②为什么要有volumeClainTemplate&#xff1f; ③服务发现&#xff1a;就是应用服务之间相互定位的过程。 ④K8S里服…...

LabVIEW石油钻机提升系统数字孪生技术

LabVIEW石油钻机提升系统数字孪生技术 随着数字化、信息化、智能化的发展&#xff0c;石油钻采过程中的石油钻机数字化技术提升成为了提高钻井效率、降低生产成本的重要途径。基于中石油云平台提供的数据&#xff0c;采用数字孪生技术&#xff0c;对石油钻机提升系统进行数字化…...

C#双向链表实现:在当前节点后插入新数据的方法Insert()

目录 1.定义一个泛型节点类并自动属性 2.定义链表类&#xff0c;并实现Append、Print、MoveFirst、 Insert 3.Main方法 1.定义一个泛型节点类并自动属性 /// <summary> /// 定义泛型节点类 /// </summary> /// <typeparam name"T">泛型运算符&…...

10-Java装饰器模式 ( Decorator Pattern )

Java装饰器模式 摘要实现范例 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构 装饰器模式创建了一个装饰类&#xff0c;用来包装原有的类&#xff0c;并在保持类方法签名完整性的前提下&#xff0c;提供…...

Vue.js 实用技巧:深入理解 Vue.set 方法

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

单词规律00

题目链接 单词规律 题目描述 注意点 pattern只包含小写英文字母s只包含小写英文字母和 ’ ’s不包含任何前导或尾随对空格s中每个单词都被 单个空格 分隔 解答思路 本题与上一次同构字符串类似&#xff0c;思路可以参照同构字符串 代码 class Solution {public boolean …...

vue3 vite项目一运行就401(Unauthorized)

问题&#xff1a;项目一执行&#xff1a; pnpm run dev, 启动就出错&#xff0c; Failed to load resource: the server responded with a status of 401 (Unauthorized) 分析&#xff1a; 项目之前是正常运行的&#xff0c;没有问题&#xff0c;回溯刚刚改动&#xff0c;还原…...

LeetCode102.二叉树的层序遍历

题目 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]输入&#xff1a;root [1] 输出&am…...

Java底层自学大纲_JVM篇

JVM专题_自学大纲所属类别学习主题建议课时&#xff08;h&#xff09; A 深入理解Java虚拟机001 JVM类加载器设计原理2.5 A 深入理解Java虚拟机002 基于SPI破解双亲委派机制2.5 A 深入理解Java虚拟机003 JVM内部结构分析2.5 A 深入理解Java虚拟机004 字符串常量池原理2.5 …...

数据可视化?这些平台能处

图表在各行各业都起到举重若轻的作用&#xff0c;无论是项目汇报、业绩分析&#xff0c;亦或是数据挖掘、统计分析&#xff0c;良好的可视化可以为我们的阐述起到画龙点睛的效果。在一篇文章中&#xff0c;如果只有密密麻麻的文字堆积&#xff0c;无论是谁恐怕都无法长期保持注…...

[ai笔记14] 周鸿祎的ai公开课笔记1

欢迎来到文思源想的ai空间&#xff0c;这是技术老兵重学ai以及成长思考的第14篇分享&#xff01; 本周二月的最后一周&#xff0c;并不是闲下来了&#xff0c;反而是开始进行一些更多的深入实践&#xff0c;关于gpt的主体架构、关于prompt&#xff0c;同时也看了不少书和直播&…...

在Linux系统中创建新用户并登录

1 创建新用户&#xff08;使用 useradd 或 adduser 命令&#xff09; 使用 useradd 命令&#xff08;不带交互式选项&#xff09;创建新用户&#xff0c;同时默认会在 /home 目录下创建同名目录作为家目录&#xff1a; sudo useradd -m 新用户名在执行上述命令后&#xff0c;…...

Vue.js+SpringBoot开发高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…...

文献阅读笔记《Spatial-temporal Forecasting for Regions without Observations》13页

目录 目录 目录 发行刊物 ABSTRACT 1 INTRODUCTION 2 RELATED WORK&#xff08;相关工作 2.1 Spatial-temporal Forecasting&#xff08;时空预测 2.2 Spatial-temporal Forecasting withIncomplete Data&#xff08;不完全数据的时空预测 2.3 Graph Contrastive Learn…...

如何学习openfoam

学习OpenFOAM的详细步骤、流程、学习网站、练习案例以及B站学习资源推荐如下&#xff1a; 一、详细步骤和流程 安装OpenFOAM&#xff1a;首先&#xff0c;你需要在你的计算机上安装OpenFOAM。你可以从OpenFOAM的官方网站下载适合你的操作系统的安装包&#xff0c;然后按照官方提…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...