了解一下k3s

一句话介绍:

k3s - 轻量级的 Kubernetes,易于安装,占用内存少,安装包小于100MB。

它非常适合于以下场景:

  • Edge
  • IoT
  • CI
  • Development
  • ARM
  • Embedding k8s
  • Situations where a PhD in k8s clusterology is infeasible

k3s 在发布以充分作出以下改变:

  1. 打包为单个二进制文件.

  2. 后端存储默认使用轻量级的sqlite3。etcd3, MySQL, Postgres 这些也可以.

  3. 包装简单的启动器去处理大量复杂的TLS和选项.

  4. 在轻量级的使用场景下对其合理的配置和安全加固.

  5. 缩小OS的依赖(仅仅内核和cgroup是需要的). k3s 包必须的依赖有:

    • containerd
    • Flannel
    • CoreDNS
    • CNI
    • Host utilities (iptables, socat, etc)
    • Ingress controller (traefik)
    • Embedded service loadbalancer
    • Embedded network policy controller

工作原理

20200716082430.png

为什么要起这个名字

初衷是希望Kubernetes的安装能减小一半内存使用。Kubernetes用了10个字母简写为k8s. 所以如果要小于一半 Kubernetes,那么就要5个字母,简写为k3s. 这个没有正式形式及非官方的发音。

文档地址

可以查看这里 https://rancher.com/docs/k3s/latest/en/

快速开始 - 安装脚本

k3s install.sh 脚本提供便捷方式安装k3s为服务:

curl -sfL https://get.k3s.io | sh -

kubeconfig 写到这里/etc/rancher/k3s/k3s.yaml,这个服务也是自动启动或重启。这个安装脚本也会安装附加组件,如 kubectl, crictl, k3s-killall.sh, and k3s-uninstall.sh, 如:

sudo kubectl get nodes

K3S_TOKEN 写到了这里 /var/lib/rancher/k3s/server/node-token。在worker nodes 工作结点上安装要传递 K3S_URL along 及 K3S_TOKEN 或者在环境变量加上 K3S_CLUSTER_SECRET, 如:

curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -

手工下载

  • 下载最新的k3s 发行包, x86_64, armhf, 和 arm64 都是支持的。
  • 运行
sudo k3s server &

# Kubeconfig is written to /etc/rancher/k3s/k3s.yaml
sudo k3s kubectl get nodes

# On a different node run the below. NODE_TOKEN comes from
# /var/lib/rancher/k3s/server/node-token on your server

sudo k3s agent --server https://myserver:6443 --token ${NODE_TOKEN}

更多信息可以查看:https://k3s.io/