k3s
官方网址:www.rancher.cn/k3s/
k3s是经CNCF一致性认证的Kubernetes发行版,专为物联网及边缘计算设计。
K3s 仅需要 kernel 和 cgroup 挂载。 K3s 软件包需要的依赖项包括:
- containerd
- Flannel
- CoreDNS
- CNI
- 主机实用程序(iptables、socat 等)
- Ingress controller(Traefik)
- 嵌入式服务负载均衡器(service load balancer)
- 嵌入式网络策略控制器(network policy controller)
为何叫k3s
引用官网的说法
我们希望安装的 Kubernetes 在内存占用方面只是一半的大小。Kubernetes 是一个 10 个字母的单词,简写为 K8s。所以,有 Kubernetes 一半大的东西就是一个 5 个字母的单词,简写为 K3s。K3s 没有全称,也没有官方的发音。
单点安装
# 一键安装
curl -sLS https://get.k3sup.dev | sh -
通过如上只执行了一个命令即部署了一套 all in one k3s 单节点环境,相对 k8s 无需额外安装如下组件:
- kubelet
- kube-proxy
- Docker
- etcd
- ingress,如 ngnix
适用场景
- 边缘计算-Edge
- 物联网-IoT
- CI
- Development
- ARM
- 嵌入 K8s
工作原理
存储
本地存储
k3s 删除了 k8s 内置 cloud provider
以及 storage
插件(当然这不会影响使用通过手动安装的外部插件),内置了 Local Path Provider
。
外部存储插件 longhorn
可以通过使用外部的存储插件解决 k3s
存储问题
GitHub地址: github.com/longhorn/lo…
Longhorn
轻量级、可靠且功能强大。可以使用kubectl apply
命令或使用Helm charts
在现有的Kubernetes
集群上安装Longhorn。安装Longhorn之后,它将为Kubernetes集群添加持久卷支持。
网络
默认情况下,K3s 将以 Flannel
作为 CNI
运行,使用 VXLAN
作为默认后端。
Flannel
Flannel 的默认后端是 VXLAN
。
CLI Flag 和 Value | 描述 |
---|---|
--flannel-backend=vxlan (默认) | 使用 VXLAN 后端。 |
--flannel-backend=ipsec | 使用 IPSEC 后端,对网络流量进行加密。 |
--flannel-backend=host-gw | 使用 host-gw 后端。 |
--flannel-backend=wireguard | 使用 WireGuard 后端,对网络流量进行加密。可能需要额外的内核模块和配置。 |
k3s 除了内置 Flannel
网络插件以外,还内置了 CoreDNS、Traefik Ingress Controller、Service Load Balancer
,如果不使用默认的组件,用户也可以自己部署其他组件,比如使用 MetalLB
替代内置的 load balancer
。
Traefik
是一个现代的 HTTP
反向代理和负载均衡器,它是为了轻松部署微服务而生的。在设计,部署和运行应用程序时,它简化了网络复杂性。
k8s
Kubernetes,又称为 k8s
(首字母为 k、首字母与尾字母之间有 8 个字符、尾字母为 s,所以简称 k8s)或者简称为 "kube" ,是一种可自动实施 Linux 容器操作的开源平台。
Kubernetes相关术语
和其它技术一样,Kubernetes 也会采用一些专用的词汇,这可能会对初学者理解和掌握这项技术造成一定的障碍。为了帮助您了解 Kubernetes,我们在下面来解释一些常用术语。
- 主机(Master): 用于控制 Kubernetes 节点的计算机。所有任务分配都来自于此。
- 节点(Node):负责执行请求和所分配任务的计算机。由 Kubernetes 主机负责对节点进行控制。
- 容器集(Pod):被部署在单个节点上的,且包含一个或多个容器的容器组。同一容器集中的所有容器共享同一个 IP 地址、IPC、主机名称及其它资源。容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。
- 复制控制器(Replication controller):用于控制应在集群某处运行的完全相同的容器集副本数量。
- 服务(Service):将工作内容与容器集分离。Kubernetes 服务代理会自动将服务请求分发到正确的容器集——无论这个容器集会移到集群中的哪个位置,甚至可以被替换掉。
- Kubelet:运行在节点上的服务,可读取容器清单(
container manifest
),确保指定的容器启动并运行。 - kubectl: Kubernetes 的命令行配置工具。
推荐阅读
k3s vs k8s
功能对比
- 移除过时的功能、Alpha功能、非默认功能,这些功能在大多数Kubernetes集群中已不可用。
- 删除内置插件(比如云供应商插件和存储插件),可用外部插件程序替换。K3s在默认状态下只会启动除自身进程之外的两个应用:coredns和traefik。
- 添加SQLite3作为默认的数据存储。etcd3仍然可用,但并非默认项。
- 默认执行容器从docker换成了containerd。
- 封装在简单的启动程序中,该启动程序处理很多复杂的 TLS 和选项。
k9s
k9s 是一个基于 curses 的全屏终端 UI 管理工具,可以与 Kubernetes 集群进行交互,可以观察系统资源,在各种资源之间切换,检查清单、日志、监控事件并执行 Pod 等,从而确保桌面空间不至于被大量终端窗格所占据
GitHub地址:github.com/derailed/k9…
常用命令
# List all available CLI options
$ k9s help
# To get info about K9s runtime (logs, configs, etc..)
$ k9s info
# To run K9s in a given namespace
$ k9s -n mycoolns
# Start K9s in an existing KubeConfig context
$ k9s --context coolCtx
# Start K9s in readonly mode - with all modification commands disabled
$ k9s --readonly