资源不够想玩k8s?搭建单节点k3s与kubeSphere管理端

系统 Linux
k3s是由Rancher团队搞出来的一套k8s替代方案,当年Rancher也是比较出色的容器编排平台解决方案。

k3s

k8s是业界公认的有效管理容器化工作负载的服务平台,对于企业级用户来说,部署一套k8s是非常简单的事情,但是对于我们一些个人用户出于学习或者自己想搞事情的目的来说,搭建一套k8s的成本还是太高了一些。于是k3s横空出世,k3s是由Rancher团队搞出来的一套k8s替代方案,当年Rancher也是比较出色的容器编排平台解决方案(但他的1.X版本的编排系统还是算了……)。

k3s从名字来看就知道一定是k8s的袖珍版,没错,根据官网[K3s - 轻量级 K3s - 轻量级 Kubernetes | Rancher文档的介绍

  • K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能:
  • 打包为单个二进制文件。
  • 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。
  • 封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。
  • 默认情况下是安全的,对轻量级环境有合理的默认值。
  • 添加了简单但功能强大的`batteries-included`功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik Ingress controller。
  • 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。
  • 最大程度减轻了外部依赖性,K3s 仅需要 kernel 和 cgroup 挂载。 K3s 软件包需要的依赖项包括:
  • containerd
  • Flannel
  • CoreDNS
  • CNI
  • 主机实用程序(iptables、socat 等)
  • Ingress controller(Traefik)
  • 嵌入式服务负载均衡器(service load balancer)
  • 嵌入式网络策略控制器(network policy controller)

与k8s最大的区别在于,系统占用小,对Arm架构的支持甚至可以支持部署在树莓派上面,这对于边缘计算、物联网平台来说是再好不过的消息,并且因为部署及启动集群的时间非常短,对于开发及测试环境,也特别适用。

k3s架构图

KubeSphere

KubeShpere集群首页

kubeSphere工作负载监控

KubeSphere是用于管理k8s集群的一套可视化工具,最大的特点是安装非常便捷,官网提供了All-in-One安装脚本,让开发人员能够快速搭建一个单节点k8s集群。

KubeSphere对用户体验及审美有特殊癖好的开发人员来说,也是福音。对于k8s各种配置文件都有可视化界面可以进行编辑。

按照官方文档 部署 K3s 和 KubeSphere (https://kubesphere.io/zh/docs/installing-on-linux/on-premises/install-kubesphere-and-k3s/)所述的安装方案,目前会遇到卡死的情况,所以采用手动方式来进行安装。

安装单节点k3s

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.21.4+k3s1 sh -

如以上语句安装了v1.21.4稳定版本的k3s,安装脚本通过环境变量控制脚本的执行参数,详细的参数列表可以查看官方安装文档 Rancher Docs: Installation Options (https://rancher.com/docs/k3s/latest/en/installation/install-options/#options-for-installation-with-script),安装过程中因为涉及访问github.com,整个安装的时间视网络情况而定,在我这里也就30秒。此过程没有太大问题,如果遇到脚本输出以下日志

Downloading hash https://github.com/k3s-io/k3s/releases/download/{your version}/sha256sum-amd64.txt

之后便退出了,可以试着访问日志中的这个地址,很可能是github.com访问困难造成的,只能多多尝试。安装完成后可以使用以下命令查看节点信息以证明安装成功。

k3s kubectl get node

安装KubeSphere

使用官方文档 在 Kubernetes 上最小化安装 KubeSphere (

​https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/#部署-kubesphere)中提到的两个脚本在已搭建好的k3s集群中快速部署KubeSphere​

k3s kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml

k3s kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml

以上脚本部署了v3.2.1版本的KubeSphere,如果想要指定版本号,可以将脚本中的版本号对应替换。

脚本会拉取几个镜像,在此过程中可能又会因为众所周知的问题导致卡死,不能说太细只能多多尝试几次自行解决。安装过程可通过以下脚本查看

k3s kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
Error from server (BadRequest): container "installer" in pod "ks-installer-85dcfff87d-2w9f5" is waiting to start: trying and failing to pull image

例如通过以上脚本的返回信息,可得知目前正在拉取镜像并且正在重试。

通过以上两部分简单的脚本,就可以实现搭建一个单节点k3s+KubeSphere的服务平台了,对于个人开发者测试使用,或者体验DevOps来说已足够。

责任编辑:姜华 来源: 今日头条
相关推荐

2020-02-29 15:20:18

K8SKubernetes集群

2020-04-14 13:15:27

k3sSSL证书树莓派

2022-04-22 13:32:01

K8s容器引擎架构

2023-11-06 07:16:22

WasmK8s模块

2023-09-06 08:12:04

k8s云原生

2023-10-27 08:01:23

SSH连接K3s

2021-10-27 08:25:10

K8SRedis数据持久化

2020-09-11 19:41:06

KubernetesK8SK3S

2022-10-10 12:54:00

Flink运维

2024-03-01 19:59:17

2022-04-29 11:13:08

K8s资源Linux

2023-05-25 21:38:30

2023-08-03 08:36:30

Service服务架构

2023-08-04 08:19:02

2021-05-07 09:31:33

KindK8s Operator

2023-01-04 17:42:22

KubernetesK8s

2020-03-31 12:50:34

树莓派K3sKubernetes集

2020-05-12 10:20:39

K8s kubernetes中间件

2022-09-05 08:26:29

Kubernetes标签

2021-04-23 08:35:16

k8s故障检测
点赞
收藏

51CTO技术栈公众号