默认值决定了你能做什么
一句话总结
轻量级发行版的差异不是功能,而是基本值,那个基本值决定了在运营中可以做的事情。
为什么要知道基本值后再选择呢?
k3s和k0s都是以单个二进制文件部署的轻量级容器管理系统。虽然看起来相似,但基本值不同,而这些基本值决定了在运营中可以做的事情。
仓库
k3s的基本存储库是sqlite。kine这个层模仿了etcd的API,然后放上了sqlite。对于轻量级的单机来说足够了。etcdctl也不能使用成员管理。
k0s--enable-worker设置后是真正的etcd。可以实际处理快照、成员管理、恢复等。CKA的etcd问题和实际的控制平面运营与此相关。
需要注意的是k0s的--single是模式。虽然看起来很简单,但那边是kine(sqlite)k0s etcd member-list就这样拒绝。
Error: wrong storage type: kine
基本组成要素
k3s 默认包含traefik ingress和local-path配置器。 在开发环境中很方便。k0s什么都不放,直接调整所需的。在运营中,这边更好——因为以后清理默认配置会更麻烦。
大幅度
k0s的基本频段(板10.244.0.0/16·服务10.96.0.0/12)与**标准容器管理系统相同。**所以如果在其他群集中叠加设置的话,就会叠加。k3s的10.42/10.43因为是非标准,所以偶然避免了碰撞。
与其说哪一个是正确的,不如说了解并选择自己环境的替代品才是正确的。而且,如果偶然地依靠被推开的状态,那么在更换发行版的那一刻,陷阱就会复活。
不管以什么标准来选择
选择发行版不是根据喜好,而是根据在哪里放什么来决定。
| 情况 | 正确的事情 | 理由 |
|---|---|---|
| 边缘·IoT·单节点 | k3s | 双精度,内存512MB以上 |
| 开发用本地 | kind, minikube | 制作和丢弃速度快 |
| 想照样学习标准 | kubeadm | 认证考试和文档都以此为前提 |
| 自动 | k0s, Cluster API | 声明性地创建多个群集 |
| 想减少管理负担 | 管理型(EKS·GKE) | 不看控制平面 |
如果是考试准备的话,就是kubeadm。k3s使用SQLite代替etcd,控制平面是 因为是同一过程,所以在考试中问到的“etcd备份”、“静态板修改”、“证书更新” 就那样不行。舒服和学习是不同的。
基本值造成的差异
即使是相同的容器管理,基本内容也不同,这决定了实践和运营。 切开。
| kubeadm | k3s | k0s | |
|---|---|---|---|
| 数据存储 | etcd | SQLite(基本),等d可行 | etcd(基本),kine可行 |
| CNI | 无 — 直接安装 | Flannel | Kube-router |
| Ingress | 无 | Traefik | 无 |
| LoadBalancer | 无 | ServiceLB(klipper) | 无 |
| 存储类 | 无 | local-path | 无 |
第一次用kubeadm搭建的话,**节点会停留在NotReady状态。**不是故障 因为没有CNI。如果不知道这个的话,在第一次安装时要花一个小时。
相反,k3s包含了所有内容,所以很方便,但需要知道如何减去基本值。
# Traefik 과 ServiceLB 를 빼고 직접 고른 것을 쓴다
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable=traefik --disable=servicelb" sh -
搬的时候会有什么问题吗?
更换发行版的事情比想象中要经常发生。遇到的问题通常有三个。
- 存储类别名称 —
local-path哇standard如果名字不一样的话,PVC 停留在Pending。不要在manifest中写名字,而是使用基本类。 用价值注入。 - LoadBalancer实现 — k3s的ServiceLB直接写入节点IP。MetalLB 如果搬到原来的地方,需要设置IP带宽。
- 入口控制器差异 — Traefik 和 NGINX 的注释不同。 使用Gateway API的话,之前的费用会大大减少。
在实际工作中真正重要的东西
**如果要处理etcd,从存储库开始确认。**在kine(sqlite)上etcdctl不能使用成员管理、Snapchat恢复。k0s也--single因为模式是kine,所以命令是wrong storage type: kine拒绝。
叠加建立时,首先检查大域是否重叠。 k0s的基本大域与标准容器管理系统相同,如果在其他群集中建立,就会发生冲突。k3s之所以成功,不是因为设计,而是因为非标准大域偶然地腾出了空间,一旦更换发布版,陷阱就会重新出现。
**作为基本配置的组成部分,以后要移除会更麻烦。**在开发环境中,包含traefik和local-path的比较方便,但在运营中,最好直接选择所需的。
在下次实习中建立k0s,进行备份和恢复一圈。