01

为什么学k3s?

由于k3s是k8s的轻量化版本,且k8s后续版本不计划支持docker,又因为k3s已经使用containerd替换docker来做容器的runtime。此时,如果你想从k8s庞杂的工作中过渡到一种更为清晰简洁的状态,那么我建议你使用k3s。

02


K3S是什么?

什么是k8s?

Kubernetes(简称k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了资源调度、部署管理、服务发现、扩容缩容、监控、维护等一整套功能。努力成为跨主机集群的自动部署、扩展以及运行应用程序容器的平台。它支持一系列容器工具,包括Docker等。

什么是k3s?

k3s是一个轻量级的k8s。

其适用于:

  • 边缘计算-Edge

  • 物联网-IoT

  • CI

  • Development

  • ARM

  • 嵌入 K8s

  • 不想深陷 k8s 运维管理的人

其拥有的能力:

  • 打包为单个二进制文件。

  • 基于sqlite3的轻量级存储后端作为默认存储机制。etcd3,MySQL,Postgres 仍然可用。

  • 封装在简单的启动程序中,该启动程序处理很多复杂的 TLS 和选项。

  • 默认情况下是安全的,对轻量级环境有合理的默认值。

  • 添加了简单但功能强大的“batteries-included”功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik ingress controller。

  • 所有Kubernetes控制平面组件的操作都封装在单个二进制文件和进程中。这使k3s可以自动化和管理复杂的集群操作,例如分发证书。

  • 外部依赖性已最小化(仅需要现代内核和 cgroup 挂载)。

为什么叫k3s?

我们希望安装的 Kubernetes 在内存占用方面只是一半的大小。Kubernetes 是一个10个字母的单词,简写为 k8s。所以,有Kubernetes一半大的东西就是一个5个字母的单词,简写为k3s。K3s 没有全称,也没有官方的发音。

03


安装k3s

本次我们选择使用server+agent两个节点演示。

在server节点上执行如下命令:

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

安装后检查:

root@phyger-ubuntu:/home/phyger# kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.5+k3s2", GitCommit:"746cf4031370f443bf1230272bc79f2f72de2869", GitTreeState:"clean", BuildDate:"2020-12-18T01:41:55Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.5+k3s2", GitCommit:"746cf4031370f443bf1230272bc79f2f72de2869", GitTreeState:"clean", BuildDate:"2020-12-18T01:41:55Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

可以看到,版本信息已经成功显示。

查看节点列表:

root@phyger-ubuntu:/home/phyger# kubectl get nodes
NAME STATUS ROLES AGE VERSION
phyger-ubuntu Ready master 64m v1.19.5+k3s2

在agent节点上执行如下命令:

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://{server-ip}:6443 K3S_TOKEN={k3s-token} sh -

agent安装成功后查看节点列表:

root@phyger-ubuntu:/home/phyger# kubectl get nodes
NAME       STATUS  ROLES   AGE   VERSION
phyger-ubuntu  Ready  master  127m   v1.19.5+k3s2
ubuntu      Ready   <none>  6m9s   v1.19.5+k3s2

可以看到,agent已经添加到集群中。

04


Q&A

可能在你安装完agent后,虽然k3s-agent服务已经正常运行,但是在集群中仍然无法查询到agent节点, 这是为什么呢?

通常的原因是网络不通所致。

解决方法:

#关闭防火墙
systemctl stop firewalld && systemctl disable firewalld && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

往期推荐

快速入门云计算

Python 内存管理大揭秘

经典 | 32个常用 Python 实现

点亮在看!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐