Debian11之 K3s 部署K8S集群

news2024/11/28 2:44:01

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/524584.html

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

相关文章

GPUAnimation的Mesh动画烘焙到贴图,学习笔记

0.动画烘焙贴图工具作者 Unity-GPU Animation - 知乎 1.安装学习项目 GitHub - striter/Unity3D-ToolChain_StriteR 复制到URP项目中&#xff0c;并删掉多余报错的和GPUAnimation无关的模块 2.把学习项目中的HLSL搬到低版本Unity的CG版本 安装FBX Exporter把烘焙好的mesh导…

【秒杀系统】高并发编程入门学习

文章目录 一、秒杀系统的基本构成二、秒杀系统的常见问题三、秒杀系统的解决技术 一、秒杀系统的基本构成 二、秒杀系统的常见问题 高并发 大量的请求进来&#xff0c;在Redis缓存层会发生缓存雪崩 缓存击穿 缓存穿透这些问题&#xff0c;这些问题就会打挂MySQL。这样就会导致…

23种设计模式之建造者模式(Builder Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的建造者模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

C++ STL 之 list 的模拟实现

文章目录 &#x1f4cd;前言&#x1f308;STL之list的模拟实现&#x1f388;list_node节点的定义&#x1f388;iterator迭代器&#x1f56f;️构造函数&#x1f56f;️*it&#x1f56f;️->&#x1f56f;️it/it&#x1f56f;️it--/--it&#x1f56f;️! / &#x1f388;l…

[MAUI程序设计]界面多态与实现

文章目录 需求一&#xff1a;在不同设备上使用不同 UI 外观定义控件 UI 外观基于平台自定义配置 需求二&#xff1a;在不同数据类别中使用不同的 UI 外观定义视图 UI 外观创建数据模板创建选择器定义数据 需求三&#xff1a;在不同数据状态中使用不同的 UI 外观使用绑定模型更改…

【腾讯云FinOps Crane 集训营】Crane 助力云原生用户充分发挥云上资源的最大价值,帮助企业降本增效之利器

文章目录 Crane 助力云原生用户充分发挥云上资源的最大价值&#xff0c;帮助企业降本增效之利器前言云上资源成本虚高的现状一、云原生的崛起&#xff1a;服务上云二、服务上云的魔咒&#xff1a;服务健壮了&#xff0c;钱袋子却空了三、钱都去哪了&#xff1a;云资源无序投入的…

golang 微服务的负载均衡

上次我们说了一下 微服务的容错处理&#xff0c;是用的 断路器 这一次我们来一起看看 微服务的负载均衡是如何做的 负载均衡 负载均衡是什么呢&#xff1f; 他能够将大量的请求&#xff0c;根据负载均衡算法&#xff0c;将不同的请求分发到多台服务器上进行处理&#xff0c…

Git Mac设置系统命令别名和Git命令别名

有时候git命令的别名过长要如何&#xff0c;在命令行不方便输入&#xff0c;这时候我们可以设置命令别名。 设置系统命令别名 设置系统命令别名可以在.bash_profile文件中配置&#xff0c;这个文件也是我们经常配置环境变量的地方&#xff0c;这个文件本身是不可见的&#xf…

rtp h264 发送和接收程序的问题

目的 为了自己写一个投屏协议&#xff0c;目前重新启用rtp协议&#xff0c;使用rtp协议直传效率最高&#xff0c;并且使用的是udp ffmpeg 发送rtp ffmpeg的rtp发送时一般把sps和pps放在一个包里面&#xff0c;写接收代码的时候要注意&#xff0c;在单包里面可以直接接收到两…

第一章: Mybatis-Plus 之了解

目录 1.1&#xff1a;Mybatis-Plus介绍 1.2&#xff1a;代码及文档地址 1.3&#xff1a;特性 1.4&#xff1a;架构 1.5&#xff1a;作者 下面的图文来自于官方的介绍 1.1&#xff1a;Mybatis-Plus介绍 Mybatis-Plus 是一个 Mybatis 的增强工具&#xff0c;在Mybatis的基…

Seata之 Win系统和 Linux系统搭建

文章目录 1 Seata搭建1.1 Linux环境搭建1.1.1 准备工作1.1.2 下载1.1.3 建表1.1.4 配置 nacos1.1.4.1 新建命名空间1.1.4.2 上传配置至Nacos配置中心1.1.4.3 不上传而使用配置 1.1.5 修改 appplication.yml1.1.5.1 seata.store1.1.5.2 seata.config1.1.5.3 seata.registry 1.1.…

多模态:InstructBLIP

多模态&#xff1a;InstructBLIP IntroductionMethoddatasetInstruction-aware 视觉提取架构Dataset Balance 实验参考 Introduction 作者表示&#xff0c;与nlp任务不同&#xff0c;多模态任务由于引入额外的视觉输入&#xff0c;它的任务更加多样化&#xff0c;这似的联合多…

Immich让你从此告别百度网盘备份手机照片

一. Immich 是什么 Immich是一个开源的图片自托管服务&#xff0c;它能实现类似于百度网盘的照片自动备份、分类等功能&#xff0c;它同时提供了Web管理页面&#xff0c;和移动端APP&#xff0c;可以轻松备份手机中的照片至家庭服务器中。这一应用也在很多群辉玩家中用于替代“…

在 Windows 上安装 Helm包

一、前言 个人主页: ζ小菜鸡大家好我是ζ小菜鸡&#xff0c;让我们一起学习在 Windows 上安装 Helm包。如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连) 二、 Helm是什么 Helm是Kubernetes的包管理工具&#xff0c;类似于centos的yum&#xff0c;能够快速查找、下载和安装…

(2022 EMNLP)结合面部表情的情感分析

论文题目&#xff08;Title&#xff09;&#xff1a;Face-Sensitive Image-to-Emotional-Text Cross-modal Translation for Multimodal Aspect-based Sentiment Analysis 研究问题&#xff08;Question&#xff09;&#xff1a;面向面部敏感的图像-情感-文本翻译的跨模态的多…

【开源项目】TinyId 全网最好的分布式ID生成系统的源码解析

TINYID介绍 项目地址&#xff1a;https://github.com/didi/tinyid Tinyid是滴滴开发的一款分布式ID系统&#xff0c;Tinyid是在美团&#xff08;Leaf&#xff09;的leaf-segment算法基础上升级而来&#xff0c;不仅支持了数据库多主节点模式&#xff0c;还提供了tinyid-client客…

23种设计模式之适配器模式(Adapter Pattern)

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章将23种设计模式中的适配器模式&#xff0c;此篇文章为一天学习一个设计模式系列文章&#xff0c;后面会分享其他模式知识。 如果文章有什么需要改进的地方还请大佬…

[GYCTF2020]EasyThinking

功能&#xff1a;登录&#xff0c;注册&#xff0c;搜索 回显登录用户名&#xff0c;搜索历史 简单测试搜索历史发现可能不存在sql注入 www.zip下载源码 访问一个不存在的路径&#xff0c;爆出 thinkphp的框架&#xff0c;版本是6.0.0 参考&#xff1a;ThinkPHP 6.0.1 漏洞…

MyBatis操作数据库实现增删改查

创建数据库 语句要分别执行 CREATE DATABASE mybatis;USE mybatis;CREATE TABLE user(id INT(10) NOT NULL PRIMARY KEY,name VARCHAR(20) DEFAULT NULL,INSERT INTO user(id,name,pwd) VALUES (1,张三,123456), (2,李四,121212), (3,王五,1314520) 搭配环境 1、在pojo包创…

25.基于混合整数规划方法的微网电池储能容量优化配置

关键词&#xff1a;储能容量优化 储能配置 微网 编程语言&#xff1a;matlab 主题&#xff1a;基于混合整数规划方法的微网电池储能容量优化配置 主要内容&#xff1a; 本代码目的为实现微电网内电池容量的优化配置&#xff0c;目标函数为配置过程中整体的运行成本最小或…