一、k3s介绍
1.1 什么是k3s?
k3s是经过CNCF认证的由Rancher公司开发维护的一个轻量级的 Kubernetes 发行版,内核机制还是和 k8s 一样,但是剔除了很多外部依赖以及 K8s 的 alpha、beta 特性,同时改变了部署方式和运行方式,目的是轻量化 K8s,简单来说,K3s 就是阉割版 K8s,消耗资源极少。它主要用于边缘计算、物联网等场景。
1.2、K3s特点
- 安装简单,占用资源少,只需要512M内存就可以运行起来;
- apiserver 、schedule 等组件全部简化,并以进程的形式运行在节点上,把程序都打包为单个二进制文件,每个程序只需要占用100M内存;
- 使用基于sqlite3的轻量级存储后端作为默认存储机制。同时支持使用etcd3、MySQL 和PostgreSQL作为存储机制;
- 默认使用 local-path-provisioner 提供本地存储卷;
- 默认安装了Helm controller 和 Traefik Ingress controller;
- 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。
- 减少外部依赖,操作系统只需要安装较新的内核(centos7.6就可以,不需要升级内核)以及支持cgroup即可,k3s安装包已经包含了containerd、Flannel、CoreDNS,非常方便地一键式安装,不需要额外安装Docker、Flannel等组件。
1.3、 k3s和k8s如何选择
K8s和k3s各有优劣。若是你要进行大型的集群部署,建议你选择使用K8s;若是你处于边缘计算等小型部署的场景或仅仅须要部署一些非核心集群进行开发/测试,那么选择k3s则是性价比更高的选择。
二、实验环境
序号 |
名称 |
IP地址 |
操作系统 |
硬件配置 |
1 |
k3s-master |
192.168.5.115 |
Ubuntu22.04 |
2vCPU, 2G内存,50G硬盘 |
2 |
k3s-node |
192.168.5.113 |
Ubuntu22.04 |
2vCPU, 2G内存,50G硬盘 |
三、部署k3s集群
3.1、初始化准备
3.1.1、配置静态IP地址
因为两台机器都是Ubuntu22.04系统,这个版本的IP地址配置是通过netplan来配置的。配置方式如下:
注:这个配置文件其实是有模版的。我们可以用man netplan
这条命令查看帮助,找到里面的example,这里有一些示例,照着写就行。示例如下所示:
3.1.2、配置主机名
控制节点执行命令:hostnamectl set-hostname k3s-master
工作节点执行命令:hostnamectl set-hostname k3s-node
3.1.3、配置host文件,节点间通过主机名互相访问
编辑/etc/hosts文件,每个节点添加以下内容:
3.1.4、关闭交换分区swap
通过swapoff -a
命令关闭交换分区,然后注释掉/etc/fstab文件中的swap分区的挂载,就可以永久关闭swap分区了。各个节点操作一样。如下所示:
3.1.5、优化内核参数
在各个节点上执行以下操作。