Kubernetes(业界简称k8s) 确实难学。 部署困难, 概念繁重,由于业界文档乱七八糟,理解起来又特别吃力费解。
拿万事开头难,来形容K8s的部署安装 绝对是再适合不过了。正所谓连安装都解决不了,何谈体验。那时候就在我要放弃的时候,我找到了k3s。
什么是k3s? 你就当作是Rancher团队 体会到了k8s给企业和开发者带来了“重”的痛苦后,所开发出来又完全符合k8s标准的优化版本。
虽然说是优化,但它高度整合了k8s所有的概念,这意味着你在k3s所掌握的知识是可以完美兼容到k8s上。部署方式高效、优雅又简洁,起码你不需要再陷入在部署陷阱里无法自拨。
同时k3s 属于 kubernetes 官方认证的发行版,即使你在企业中使用,只要规模不上数十加百台服务,你完全不用担心k3s会给你带坑。
环境准备
本文的部署安装仅仅针对本机测试,本人使用的机器为Mac Air m1。如果配置环境不一致并遇上问题,请查看其他文献并进行调整。
在Mac机上可以通过Multipass 进行模拟集群环境,点击请移步Multipass - 在Mac book 上轻松搭建Linux 虚拟机。
通过Multipass 构建了以下环境,其中server节点(192.168.64.2) 会作为Master。

马上在server节点安装k3s
k3s官网:https://k3s.io/
通过Multipass 进入server节点(192.168.64.2):
multipass shell server
#######
Welcome to Ubuntu 20.04.4 LTS (GNU/Linux 5.4.0-107-generic aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Apr 17 18:36:50 CST 2022
System load: 0.64
Usage of /: 58.3% of 4.68GB
Memory usage: 79%
Swap usage: 0%
Processes: 136
Users logged in: 0
IPv4 address for cni0: 10.42.0.1
IPv4 address for enp0s1: 192.168.64.2
IPv6 address for enp0s1: fd67:d40e:50d4:ad7b:5054:ff:fe98:d2a6
* Super-optimized for small spaces - read how we shrank the memory
footprint of MicroK8s to make it the smallest full K8s around.
https://ubuntu.com/blog/microk8s-memory-optimisation
9 updates can be applied immediately.
To see these additional updates run: apt list --upgradable
Last login: Thu Apr 14 14:51:43 2022 from 192.168.64.1
ubuntu@server:~$
键入k3s master 端的安装命令并回车:
ubuntu@server:~$ curl -sfL https://get.k3s.io | sh -
#######成功的信息
[INFO] Finding release for channel stable
[INFO] Using v1.22.7+k3s1 as release
[INFO] Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.22.7+k3s1/sha256sum-arm64.txt
[INFO] Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.22.7+k3s1/k3s-arm64
[INFO] Verifying binary download
[INFO] Installing k3s to /usr/local/bin/k3s
[INFO] Skipping installation of SELinux RPM
[INFO] Creating /usr/local/bin/kubectl symlink to k3s
[INFO] Creating /usr/local/bin/crictl symlink to k3s
[INFO] Creating /usr/local/bin/ctr symlink to k3s
[INFO] Creating killall script /usr/local/bin/k3s-killall.sh
[INFO] Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO] env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO] systemd: Creating service file /etc/systemd/system/k3s.service
[INFO] systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO] systemd: Starting k3s
要确保k3s成功安装,只需要运行如下命令:
ubuntu@server2:~$ k3s -v
######
k3s version v1.22.7+k3s1 (8432d7f2)
go version go1.16.10
接下来添加node1、node2 作为集群节点
- 第一件事,先从server 节点获得token。
ubuntu@server2:~$ sudo cat /var/lib/rancher/k3s/server/node-token
K103cefa023d87f18ed7194edccd28808880684af1abf4daa2d50fdf34db2291283::server:f8761e328d46b6c3d3695c70b8b4697b
记下上面的token值:K103cefa023d87f18ed7194edccd28808880684af1abf4daa2d50fdf34db2291283::server:f8761e328d46b6c3d3695c70b8b4697b
- 然后通过multipass 分别进入node1节点服务器:
multipass shell node1
在node1 的环境下,执行添加节点命令:
ubuntu@node1:~$ sudo curl -sfL https://get.k3s.io | K3S_URL=https://192.168.64.2:6443 K3S_TOKEN=K103cefa023d87f18ed7194edccd28808880684af1abf4daa2d50fdf34db2291283::server:f8761e328d46b6c3d3695c70b8b4697b sh -
#####
#其中K3S_URL 指向server节点,即192.168.64.2。必须要添加https前缀,可以忽略是否有在server节点安装了SSL证书。
#K3S_TOKEN 就是在server节点上获取的token
- 把上述步骤也在Node2节点操作一遍后,验证集群是否安装成功,回到server节点执行如下命令:
ubuntu@server:~$ sudo kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
server Ready control-plane,master 15d v1.22.7+k3s1 192.168.64.2 <none> Ubuntu 20.04.4 LTS 5.4.0-107-generic containerd://1.5.9-k3s1
node2 Ready <none> 15d v1.22.7+k3s1 192.168.64.4 <none> Ubuntu 20.04.4 LTS 5.4.0-107-generic containerd://1.5.9-k3s1
node1 Ready <none> 15d v1.22.7+k3s1 192.168.64.3 <none> Ubuntu 20.04.4 LTS 5.4.0-107-generic containerd://1.5.9-k3s1
ubuntu@server:~$
#####
#查看集群状态的命令为kubectl get node -o wide
#STATUS 为Ready ,则代表已经添加成功。
通过上述安装后,已经代表k3s 在本机是正常执行,下一篇我们再讲解如何在k3s下建立起一个可访问的应用程序。