Debian11之 K3s 部署 K8S 集群

news2024/11/28 12:54:09

K3S 架构方案

  • Server 节点指的是运行 k3s server 命令的主机,control plane 和数据存储组件由 K3s 管理
  • Agent 节点指的是运行 k3s agent 命令的主机,不具有任何数据存储或 control plane 组件
  • Server 和 Agent 都运行 kubelet、容器运行时和 CNI
    在这里插入图片描述

基于 SQLite 的单机架构

在这里插入图片描述
在此配置中,每个 Agent 节点都注册到同一个 Server 节点。K3s 用户可以通过调用 Server 节点上的 K3s API 来操作 Kubernetes 资源

基于 Etcd 的高可用架构

在这里插入图片描述
两个或多个 Server 节点为 Kubernetes API 提供服务并运行其他的 control plane 服务
嵌入式etcd数据存储(相对于嵌入式SQLite数据存储用于单服务器设置)

基于 外部数据库 的高可用架构

在这里插入图片描述

K3S 安装要求

官网文档

先决条件

无论 K3s 在容器中运行还是作为原生 Linux 服务运行,每个运行 K3s 的节点都应满足以下最低要求:

两个节点不能具有相同的主机名。如果多个节点将具有相同的主机名,或者主机名可以被自动配置系统重复使用,请使用 --with-node-id 选项为每个节点附加一个随机后缀,或者使用 --node-name 或 $K3S_NODE_NAME 为添加到集群的每个节点设计一个独特的名称
hostnamectl set-hostname master1 && hostname # 在主节点1设置
hostnamectl set-hostname node1 && hostname # 在从节点2设置
vi /etc/hosts # 所有节点编辑文件,注意不能有空格
192.168.111.50 master1
192.168.111.51 node1 
systemctl disable nftables.service && systemctl stop nftables.service && systemctl status nftables.service # 所有节点关闭防火墙
swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab # 所有节点永久禁用各节点的交换分区
timedatectl set-timezone Asia/Shanghai # 所有节点同步时区

操作系统条件

Red Hat/CentOS Enterprise Linux 操作系统:
1、systemctl disable firewalld --now # 关闭 firewalld
# 如果要保持启用 firewalld,默认情况下需要以下规则:
# firewall-cmd --permanent --add-port=6443/tcp #apiserver
# firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods
# firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services
# firewall-cmd --reload
#
2、systemctl disable nm-cloud-setup.service nm-cloud-setup.timer && reboot # 禁用 nm-cloud-setup 并重新启动节点
Ubuntu 操作系统:
1、ufw disable # 关闭 ufw
# 如果要保持启用 ufw,默认情况下需要以下规则:
# ufw allow 6443/tcp #apiserver
# ufw allow from 10.42.0.0/16 to any #pods
# ufw allow from 10.43.0.0/16 to any #services
Raspberry Pi 操作系统:Raspberry Pi OS 基于 Debian,可能会受到旧 iptables 版本的影响
1、标准 Raspberry Pi OS 不会在启用 cgroups 的情况下开始。K3S 需要 cgroups 来启动 systemd 服务。你可以通过将 cgroup_memory=1 cgroup_enable=memory 附加到 /boot/cmdline.txt 来启用 cgroups
# cmdline.txt:
# console=serial0,115200 console=tty1 root=PARTUUID=58b06195-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory
2、sudo apt install linux-modules-extra-raspi # 从 Ubuntu 21.10 开始,对 Raspberry Pi 的 vxlan 支持已移至单独的内核模块中

网络条件

K3s Server 需要 6443 端口才能被所有节点访问
使用 Flannel VXLAN 时,节点需要能够通过 UDP 端口 8472 访问其他节点,
使用 Flannel Wireguard 后端时,节点需要能够通过 UDP 端口 5182051821(使用 IPv6 时)访问其他节点。
该节点不应侦听任何其他端口。如果不使用 Flannel 并提供自己的自定义 CNI,那么 K3s 不需要 Flannel 所需的端口。
如果要使用 Metrics Server,所有节点必须可以在端口 10250 上相互访问
如果计划使用嵌入式 etcd 来实现高可用性,则 Server 节点必须可以在端口 23792380 上相互访问

在这里插入图片描述

大型集群对硬件的要求

对于硬件的要求取决于 K3s 集群的大小。对于生产和大型集群,我们建议使用具有外部数据库的高可用性设置
集群性能取决于数据库性能。为确保最佳速度,我们建议为 K3s 集群使用 SSD 磁盘。在云提供商上,你还需使用能获得最大 IOPS 的最小大小
考虑增加集群 CIDR 的子网大小,避免用尽 Pod 的 IP。你可以通过在启动时将 --cluster-cidr 选项传递给 K3s Server 来实现这一点
在这里插入图片描述
在这里插入图片描述

K3S 在线脚本安装

官网文档
当前搭建的是单节点,生产环境是需要做高可用的,高可用详情参考这边文章

Server安装

# K3s 提供了一个安装脚本,可以方便地将其作为服务安装在基于 systemd 或 openrc 的系统上
# curl -sfL https://get.k3s.io | sh -
# 中国用户,可以使用以下方法加速安装:
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server \
--datastore-endpoint="mysql://lixing:LI1234MYSQL!@tcp(192.168.111.11:3306)/k3s"

在这里插入图片描述
运行此安装后:
1、K3s 服务将会作为一个systemd服务运行, 支持开机自启动 、奔溃自动重启
2、将自动安装以下程序到 /usr/local/bin,包括 crictl ctr k3s k3s-killall.sh k3s-uninstall.sh kubectl
3、自动创建 kubeconfig 文件到 /etc/rancher/k3s/k3s.yaml,由 K3s 安装的 kubectl 将会自动使用该文件

  • 查看 K3S Server 运行状态
systemctl status k3s
  • 关闭 K3S Server 服务
systemctl stop k3s
  • 重启 K3S Server 服务
systemctl restart k3s
  • 查看 TOKEN
cat /var/lib/rancher/k3s/server/node-token
K1079b8fffb160738d67d89c3755f0c2dcf043a966a373e2fc147d4475bbfe87424::server:54433a6f55b50c042f37350fd1551fbd

Agent安装

# 要安装其他 Agent 节点并将它们添加到集群
# curl -sfL https://get.k3s.io | K3S_URL=<https://myserver:6443> K3S_TOKEN=<mynodetoken> sh -
# 中国用户,可以使用以下方法加速安装:
# K3S_TOKEN 使用的值存储在 Server 节点上的 /var/lib/rancher/k3s/server/node-token 中
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \
K3S_URL=https://192.168.111.50:6443 \
K3S_TOKEN=K104152af4547b9171e9d53fef1fcf12df8339e5bbfeec33aa0f4e98da1fa2869e7::server:ab66e6a096ddc3ea282de0dbd13f4cae \
sh -

在这里插入图片描述
K3S_URL 参数会导致安装程序将 K3s 配置为 Agent 而不是 Server:
1、K3s Agent 将注册到在 URL 上监听的 K3s Server
2、将自动安装以下程序到 /usr/local/bin,包括 crictl ctr k3s k3s-killall.sh k3s-uninstall.sh kubectl

  • 查看 K3S agent 运行状态
systemctl status k3s-agent
  • 关闭 K3S Server 服务
systemctl stop k3s-agent
  • 重启 K3S Server 服务
systemctl restart k3s-agent

验证 K3S 安装

k3s kubectl get node

在这里插入图片描述

升级 K3S

官方地址

卸载 K3S

  • 卸载 k3s
/usr/local/bin/k3s-uninstall.sh
  • 卸载 k3s-agent
/usr/local/bin/k3s-agent-uninstall.sh

K3S 离线二进制安装

二进制文件下载地址

# 下载2文件:镜像文件(k3s-airgap-images-$ARCH.tar) 和 K3s执行文件(k3s-$ARCH)
mkdir -p /var/lib/rancher/k3s/agent/images/
cp ./k3s-airgap-images-$ARCH.tar /var/lib/rancher/k3s/agent/images

Server安装

INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh

Agent安装

INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<YOUR_TOKEN> ./install.sh

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

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

相关文章

ESP32C3之PlatformIO IDE开发环境

一、下载​​platformio ide扩展 在vscode里面直接搜索​​platformio ide&#xff0c;点击安装即可 二、新建esp32c3工程 2.1 首先点击小蚂蚁的图标&#xff0c;然后点击pio home 2.2 点击projects->create New Project 2.3 填写工程名和工程路径:勾选钩表示默认路径&a…

Kubernetes第1天

第一章 kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物…

Redis学习---02

一、Redis基础知识 (1)redis默认有16个数据库;默认使用的是第0个数据库&#xff1b;切换数据库&#xff1a; select index 获取数据库中的值大小&#xff1a;dbsize (2)&#xff1a;查看所有的key (3):清空当前数据库&#xff1a;flushdb (4)清空所有的数据库&#xff1a;flu…

LCD1602液晶显示模块

1.认识LCD1602 1、概述&#xff1a; LCD1602&#xff08;Liquid Crystal Display&#xff09;是一种工业字符型液晶&#xff0c;能够同时显示 1602&#xff0c;32个 字符(16列两行)。是我们接触引脚最多的模块。LCD1602我们的非标准协议&#xff08;标准协议有IIC、IIS、SPI&…

利用暴力攻击破解登陆密码

长久以来&#xff0c;入侵远程计算机系统的工具和技术并没有发生翻天覆地的变化。例如&#xff0c;在许多情况下&#xff0c;普通用户只要知道了相关密码&#xff0c;就能立刻变身为管理员。虽然这些情形听起来不够曲折&#xff0c;但在大多数情况下&#xff0c;暴力攻击是通过…

Kubernetes第3天

第五章 Pod详解 本章节将详细介绍Pod资源的各种配置&#xff08;yaml&#xff09;和原理。 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器&#xff0c;这些容器可以分为两类&#xff1a; 用户程序所在的容器&#xff0c;数量可多可少 Pause容器&#xff0c;这是每个…

JavaScript实现水印效果

效果 实现思路 利用canvas绘制出文字将canvas作为遮罩层背景图, 将背景x轴和y轴重复 实现步骤 动态生成canvas并画出文字 const canvas document.createElement("canvas"); canvas.width len * fontSize; // canvas宽度, 目前是根据文字长度和大小来调整的, 自…

Postman调试依赖登录接口的3种方法

在接口测试种, 我们经常会遇到有些接口登录后才能访问.我们在使用Postman调试这种接口时一般有3种方法: 1.依次请求 如果有登录接口的文档,或者通过抓包比较容易抓出登录请求的参数和格式,可以先使用Postman请求一下登录接口,这时Cookies会存到本地(可以通过Postman Cookies管理…

JVM学习(十一):对象的实例化内存布局与访问定位

目录 一、对象的实例化 1.1 创建对象的方式 1.2 创建对象的步骤 二、对象的内存布局 2.1 对象头 2.1.1 运行时元数据&#xff08;Mark Word&#xff09; 2.1.2 典型指针 2.2 实例数据&#xff08;Instance Data&#xff09; 2.3 对齐填充&#xff08;Padding&#…

一个奇葩的网络问题,把技术砖家“搞蒙了“

问题现象 客户反馈有一个server端S&#xff0c; 两个client端C1, C2, S的iptables规则对C1, C2都是放通的&#xff0c;但是C2无法连接上S&#xff0c;客户很着急&#xff0c;催我们尽快解决。 这里解释一下&#xff0c;iptables规则是防火墙规则&#xff0c;是linux系统实现防…

【C++刷题集】-- day1

目录 选择题 单选 编程题 组队竞赛⭐ 【题目解析】 【解题思路】(排序 贪心) 删除公共字符⭐ 【题目解析】 【解题思路】(哈希映射) 选择题 单选 1、 以下for循环的执行次数是 ( ) for(int x 0, y 0; (y 123) && (x < 4); x); 是无限循环 循环次数不…

Leetcode刷题之有效的括号

我们的内心和心智&#xff0c;是决定我们未来命运的最强劲的力量。 -- 奥普拉温弗瑞目录 &#x1f341;一.有效的括号 &#x1f34d;1.使用栈实现 &#x1f352;2.完整代码&#xff1a; 题目描述&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0…

Sonar Qube代码质量检测工具安装及基本使用

Sonar介绍 Sonar Qube是一个开源的代码分析平台&#xff0c;支持Java、Python、PHP、JavaScript、CSS等25种以上的语言&#xff0c;可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的问题。 Sonar Qube可以与多种软件整合进行代码扫描&#xff0c;比如Maven&#xff0c;…

算法套路十七——买卖股票问题:状态机 DP

算法套路十七——买卖股票问题&#xff1a;状态机 DP 状态机DP是一种将动态规划方法应用于有限状态机&#xff08;Finite State Machine&#xff09;的问题求解方法。 状态机DP&#xff08;State Machine DP&#xff09;是一种动态规划的思想&#xff0c;它通常用于解决一些具…

行动元宣布推出面向精密制造领域的智能运动控制解决方案

近日&#xff0c;AI 工业工程化平台行动元宣布推出面向精密制造领域的智能运动控制解决方案。该方案融合大数据模型、数字孪生以及人工智能技术&#xff0c;通过数字化建模、适配、调试等过程&#xff0c;极大提升终端设备集成方案的设计、选型与测试效率&#xff0c;并通过算法…

你不学,我不学,谁来网安,谁来保卫国家!

一、为什么选择网络安全&#xff1f; 这几年随着我国**《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》**等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前…

PCL点云库(6) — Filters模块空间裁剪器类

目录 6.1 3D包围盒裁剪器Class BoxClipper3D< PointT > 6.2 平面裁剪器Class pcl::PlaneClipper3D< PointT > 6.3 立方体过滤Class pcl::CropBox< PointT > 6.4 曲面或多边形过滤 Class pcl::CropHull< PointT > 6.5 完整代码 6.1 3D包围盒裁剪器…

C语言基础:static关键字

本文结合工作经验&#xff0c;研究C语言中static关键字的用法。 文章目录 1 static关键字概念2 用法与使用场景2.1 修饰全局变量2.1.1 代码示例2.1.2 使用场景 2.2 修饰函数2.2.1 代码示例2.2.2 使用场景 2.3 修饰局部变量2.3.1 代码示例2.4.2 使用场景 3 总结 1 static关键字…

第13章:存储过程和存储函数

一、存储过程 1.1理解 含义&#xff1a; 存储过程stored procedure&#xff0c;思想是一组经过预先编译的SQL语句的封装。 存储过程预先存储在MySQL服务器上&#xff0c;需要执行的时候&#xff0c;客户端向服务器端发出调用存储过程的命令&#xff0c;服务器段把这组SQL执…

当我和ChatGPT-4聊完后,我觉得一切可能已经来不及了

飞机上有wifi&#xff0c;了然无味&#xff0c;在万米高空&#xff0c;和ChatGPT-4开始了一场坦诚的沟通&#xff0c;它全程都表现出高情商&#xff0c;以及不断尽量安抚我的情绪&#xff0c;而这&#xff0c;恰恰令我脊背发凉。 部分文字截取 ZM&#xff1a;我能不能理解每次对…