0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述K3S和K8S的区别

马哥Linux运维 来源:CSDN技术社区 2025-04-18 10:27 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

K3S和 K8S 有何不同?

1、K3s:轻量级的K8s

K3s 是CNCF 认证的 Kubernetes 发行版和Sandbox项目,专为低资源环境而设计。由 Rancher Labs 维护着 K3s。

总的来说,K3s 提供了一个开销较小的 Kubernetes 集群设置,但仍然集成了 K8s 的大部分架构和功能。

以下是 K3s 成为轻量级发行版的原因:

• 打包为具有最小外部依赖性的单个二进制文件

• 低硬件要求和内存占用

• 能够作为单个服务器和高可用性服务器运行

K3s 将标准的 Kubernetes组件打包在一个不到 100 MB 的二进制文件中。这是通过删除额外的驱动程序、可选的卷插件和第三方云集成来完成的。

K3s 应该能够在具有至少 512M RAM(尽管建议使用 1GB)和一个 CPULinux 操作系统中运行。

尽管 K3s 是 Kubernetes 的轻量级版本,但它并没有改变 Kubernetes 的核心工作方式。K3s 架构由运行在集群中的 master 服务器和代理(或工作节点)组成。它仍然有 CoreDNS 和 Ingress Controller 作为核心 Networking 的一部分。它有一个内置的 SQLite 数据库来存储所有的服务器信息。

尽管如此,如果我们需要一个高可用性服务器,也可以插入到一个外部数据库,例如ETCD[8]、MySQL[9]或Postgres[10]。Flannel[11]作为集群网络的默认CNI[12]插件。

最后,作为完全认证的 K8s 版本,我们可以编写 YAML 来像使用 K8s 一样在 K3s 集群上运行。例如,当我们管理工作负载[13]或定义 pod与服务和负载平衡的网络[14]时,同样使用kubectl[15]与集群交互。

2、使用

下面看看如何安装 K3s,如何访问集群,如何将节点添加到 master。

2.1 安装

基本安装命令:

curl-sfLhttps://get.k3s.io|sh-





这会执行来自 k3s 官方安装脚本[17],并在我们的 Linux 主机中将 K3s 作为服务运行。

作为替代方案,我们可以下载一个特定指定版本[18]并安装它。无论哪种方式,我们都可以将服务器配置[19]选项与环境变量[20]混合使用。

例如,我们可能想要禁用 Flannel 并使用不同的 CNI 提供程序。

我们可以通过运行脚本来做到这一点:

$curl-sfLhttps://get.k3s.io|sh-s---flannel-backendnone





如果我们已经安装了 K3s 二进制文件,我们可以在命令行中添加环境变量前缀:

$INSTALL_K3S_EXEC="--flannel-backendnone"k3sserver





2.2 集群访问

默认情况下,K3s 将在/etc/rancher/k3s目录中安装一个配置文件。安装完成后,和 K8s 类似,我们需要定义一个配置文件位置。

我们可以通过导出一个环境变量让 K3s 指向配置文件:

$exportKUBECONFIG=/etc/rancher/k3s/k3s.yaml





作为替代方案,可以在 K8s 默认指向的主目录中定义配置文件:

$mkdir-p~/.kube
$sudok3skubectlconfigview--raw|tee~/.kube/config
$chmod600~/.kube/config





可以检查集群是否正在运行:

$kubectlgetnodes
NAME      STATUS ROLES        AGE VERSION
 Ready control-plane,master 4d3h v1.25.6+k3s1





值得注意的是,我们可以看到控制平面将与主节点一起运行。

现在让我们看看创建了哪些容器(pods):

$kubectlgetpods--all-namespaces
NAMESPACE      NAME                    READY STATUS      RESTARTS    AGE
kube-system     helm-install-traefik-crd-6v28l       0/1  Completed    0       4d2h
kube-system     helm-install-traefik-vvfh2         0/1  Completed    2       4d2h
kube-system     svclb-traefik-cfa7b330-fkmms        2/2  Running     10(8hago)  4d2h
kube-system     traefik-66c46d954f-2lvzr          1/1  Running     5(8hago)   4d2h
kube-system     coredns-597584b69b-sq7mk          1/1  Running     5(8hago)   4d2h
kube-system     local-path-provisioner-79f67d76f8-2dkkt  1/1  Running     8(8hago)   4d2h





可以在集群上看到可用 pod 的列表。

可以看到一个基本的 K3s 设置,包括:

• Traefik[21]作为 HTTP 反向代理和负载均衡的入口控制器

• CoreDns[22]管理集群和节点内的 DNS 解析

• Local Path Provisioner[23]提供了一种在每个节点中利用本地存储的方法

• Helm[24],我们可以使用它来打包、部署

K3s 将在单个服务器或代理进程中运行所有组件,而不是在不同的进程中运行组件。由于它被打包在一个文件中,我们也可以[离线安装]((https://docs.k3s.io/installation/airgap “离线安装”)。当然,我们还可以使用 K3d[25] 在 Docker 中运行 K3s 。

2.3 添加节点

如果我们想将节点添加到集群中,只需要执行指向节点主机的相同命令

$curl-sfLhttps://get.k3s.io|K3S_URL=https://:6443K3S_TOKEN=mynodetokensh-





K3S_TOKEN 存储在本地:

$cat/var/lib/rancher/k3s/server/node-token





一旦工作节点加入主节点,控制平面就会识别节点和在其上调度服务 Pod。

3、部署服务

$kubectlcreatedeploymentnginx--image=nginx--port=80--replicas=3


$kubectlgetpods
NAME         READY STATUS RESTARTS AGE
nginx-ff6774dc6-ntxv6 1/1  Running 0    17s
nginx-ff6774dc6-qs4r6 1/1  Running 0    17s
nginx-ff6774dc6-nbxmx 1/1  Running 0    17s





应该看到三个正在运行的容器。

Pod 不是永久资源,会不断创建和销毁,IP 发生变化。因此,需要一个服务来动态地将 pod 的 IP 映射到外部世界。

我们将选择一个 ClusterIp 类型的 Service:

$kubectlcreateserviceclusteripnginx--tcp=80:80





看看我们的服务定义:

$kubectldescribeservicenginx
Name:      nginx
Namespace:    default
Labels:     app=nginx
Annotations:   
Selector:    app=nginx
Type:      ClusterIP
IP Family Policy:SingleStack
IP Families:   IPv4
IP:       10.43.238.194
IPs:       10.43.238.194
Port:      80-8080/TCP
TargetPort:   80/TCP
Endpoints:    10.42.0.10:80,10.42.0.11:80,10.42.0.9:80





我们可以看到访问应用程序的 pod(或容器)地址对应的 Endpoints。

服务没有直接访问权限。Ingress Controller 通常位于它前面,用于缓存、负载平衡和安全合规控制,例如过滤掉恶意请求。

最后,让我们在 YAML 文件中定义一个 Traefik 控制器。这会将流量从传入请求路由到服务:

apiVersion:networking.k8s.io/v1
kind:Ingress
metadata:
name:nginx
annotations:
 ingress.kubernetes.io/ssl-redirect:"false"
spec:
rules:
-http:
  paths:
  -path:/
   pathType:Prefix
   backend:
    service:
     name:nginx
     port:
      number:80




我们可以通过将此资源应用于集群来创建 ingress:

$kubectlapply-f.yaml





$kubectldescribeingressnginx
Name:      nginx
Labels:     
Namespace:   default
Address:    192.168.1.103
Ingress Class: traefik
Default backend:
Rules:
Host   PathBackends
----   ------------
*
      / nginx:80(10.42.0.10:80,10.42.0.11:80,10.42.0.9:80)
Annotations: ingress.kubernetes.io/ssl-redirect:false





现在可以通过从主机或浏览器向 192.168.1.103 地址发送 GET 请求来访问 Nginx 主页。

我们可能想向入口控制器添加一个 负载均衡器[26] K3s 默认使用 ServiceLB[27]。

4、K8s 和 K3s 有何不同

K3s 和 K8s 之间最显着的区别是包装。K3s 是一个不到 100MB 的单一打包二进制文件。K8s 有多个组件作为进程运行。

此外,作为一个更轻量级的版本,K3s 可以在几秒钟内启动一个 Kubernetes 集群。我们可以用更少的资源更快地运行操作。

K3s 支持 AMD64、ARM64 和 ARMv7 等架构。这意味着我们可以在任何地方运行它,例如,在 Raspberry PI Zero 中。K3s 还可以处理连接受限的环境。

在学习 K3s 时上手更快,需要掌握的命令更少。开始使用它的工作量比 K8s 少,例如,如果我们还没有使用分布式集群的背景。

但是,对于复杂的集群或繁重的工作负载,我们仍然应该考虑使用 K8s。K3s 确实提供了一个高可用性选项,但它需要做更多的工作才能插入,例如,不同的数据库或集成云提供商。

如果要在 K3s 和 K8s 之间做出决定,可能会归结为资源的考量。但是,K3s 是持续集成测试的不错选择。

链接:https://blog.csdn.net/qq_39578545/article/details/129647767

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    88

    文章

    11635

    浏览量

    218102
  • 服务器
    +关注

    关注

    13

    文章

    10108

    浏览量

    90969
  • 操作系统
    +关注

    关注

    37

    文章

    7334

    浏览量

    128730
  • kubernetes
    +关注

    关注

    0

    文章

    256

    浏览量

    9425

原文标题:K3S和 K8S 有何不同?

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是 K8S,如何使用 K8S

    Kubernetes(简称K8S)是一个用于管理容器化应用程序的开源平台。以下是关于K8S及其使用方法的介绍: 一、什么是 K8S 核心特点 自动化容器编排:自动处理容器的部署、扩展、负载均衡
    发表于 06-25 06:45

    k8s核心原理学习指南3

    k8s学习3 - 核心原理
    发表于 09-25 16:37

    OpenStack与K8s结合的两种方案的详细介绍和比较

    OpenStack与K8S结合主要有两种方案。一是K8S部署在OpenStack平台之上,二是K8S和OpenStack组件集成。
    的头像 发表于 10-14 09:38 2.8w次阅读

    如何使用kubernetes client-go实践一个简单的与K8s交互过程

    【导读】Kubernetes项目使用Go语言编写,对Go api原生支持非常便捷。 本篇文章介绍了如何使用kubernetes client-go实践一个简单的与K8s交互过程
    的头像 发表于 02-02 11:16 7698次阅读
    如何使用kubernetes client-go实践一个简单的与<b class='flag-5'>K8s</b>交互过程

    Docker不香吗为什么还要用K8s

    Docker 虽好用,但面对强大的集群,成千上万的容器,突然感觉不香了。 这时候就需要我们的主角 Kubernetes 上场了,先来了解一下 K8s 的基本概念,后面再介绍实践,由浅入深步步为营
    的头像 发表于 06-02 11:56 3954次阅读

    简单说明k8s和Docker之间的关系

    这篇文章主要介绍了k8s和Docker关系简单说明,本文利用图文讲解的很透彻,有需要的同学可以研究下 最近项目用到kubernetes(以下简称k8sks之间有
    的头像 发表于 06-24 15:48 4019次阅读

    K8S集群服务访问失败怎么办 K8S故障处理集锦

    。 kubectl delete svc nginx-deployment 问题3K8S集群服务暴露失败? Error from server (AlreadyExists): services “nginx-deployment” already exists 原因分
    的头像 发表于 09-01 11:11 1.7w次阅读
    <b class='flag-5'>K8S</b>集群服务访问失败怎么办 <b class='flag-5'>K8S</b>故障处理集锦

    K8S(kubernetes)学习指南

    K8S(kubernetes)学习指南
    发表于 06-29 14:14 0次下载

    mysql部署在k8s上的实现方案

    的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。这里主要讲 mysql 部署在 k8s 上,mysql 部署在 k8s 上的优势主要有以下几点。
    的头像 发表于 09-26 10:39 3123次阅读

    k8s是什么意思?kubeadm部署k8s集群(k8s部署)|PetaExpres

    k8s是什么意思? kubernetes简称K8s,是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful
    发表于 07-19 13:14 1564次阅读

    什么是K3sK8sK3sK8s有什么区别

    Kubernetes,通常缩写为 K8s,是领先的容器编排工具。该开源项目最初由 Google 开发,帮助塑造了现代编排的定义。该系统包括了部署和运行容器化系统所需的一切。
    的头像 发表于 08-03 10:53 9135次阅读

    k8s生态链包含哪些技术

    1. Apache APISIX Ingress 定义   在 K8s 生态中,Ingress 作为表示 K8s 流量入口的一种资源,想要让其生效,就需要有一个 Ingress Controller
    的头像 发表于 08-07 10:56 1961次阅读
    <b class='flag-5'>k8s</b>生态链包含哪些技术

    k8s云原生开发要求

    Kubernetes(K8s)云原生开发对硬件有一定要求。CPU方面,建议至少配备2个逻辑核心,高性能CPU更佳。内存至少4GB,但8GB或更高更推荐。存储需至少20-30GB可用空间,SSD提升
    的头像 发表于 10-24 10:03 1071次阅读
    <b class='flag-5'>k8s</b>云原生开发要求

    k8s和docker区别对比,哪个更强?

    部署、扩展、管理和应用生命周期管理能力,可实现高可用性和自动伸缩,两者常结合使用以优化容器化和应用管理。UU云小编将对k8s和docker区别进行详细对比:
    的头像 发表于 12-11 13:55 1155次阅读

    解析K8S实用命令

    前言: 作为运维工程师,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文将深入解析 K8S 最实用的命令,从基础操作到高级技巧,助你成为容器化集群管理专家。
    的头像 发表于 07-24 14:07 567次阅读