k3s实践-01

k3s的安装及基本工作方式解读

本文主要介绍k3s的安装和核心组件解读。

k3s是all-in-one的轻量k8s发行版,把所有k8s组件打包成一个不到100M的二进制文件了。具备如下显著特点:

  • 打包成单一二进制
  • 默认集成了sqlite3来替代etcd,也可以指定其他数据库:etcd3、mysql、postgres。
  • 默认内置Coredns、Metrics Server、Flannel、Traefik ingress、Local-path-provisioner等
  • 默认启用了TLS加密通信。

安装

官方提供了一键安装脚本install.sh ,执行curl -sfL https://get.k3s.io | sh -可一键安装server端。此命令会从https://update.k3s.io/v1-release/channels/stable取到最新的稳定版安装,可以通过INSTALL_K3S_VERSION环境变量指定版本,本文将以1.19为例。

启动 k3s server端(master节点).

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.19.16+k3s1 sh -

由于网络原因,可能会失败,自行想办法下载下来,放置 /usr/local/bin/k3s,附上执行权限chmod a+x /usr/local/bin/k3s, 然后上面的命令加上INSTALL_K3S_SKIP_DOWNLOAD=true再执行一遍即可。

安装里log里会输出一些重要信息: kubectl、crictl、卸载脚本、systemd service

不出意外,k3s server会被systemd启动,执行命令查看systemctl status k3s或者通过软链的kubectl验证是否启动成功:

➜  kubectl get no
NAME            STATUS   ROLES    AGE     VERSION
gitlab-server   Ready    master   6m43s   v1.19.16+k3s1

(Optional) 启动 k3s agent端 (添加worker节点).

curl -sfL https://get.k3s.io | K3S_URL=https://172.25.11.130:6443 K3S_TOKEN=bulabula INSTALL_K3S_VERSION=v1.19.16+k3s1 sh -
  • K3S_TOKEN内容需要从server端的/var/lib/rancher/k3s/server/node-token文件取出
  • K3S_URL中的IP是master节点的IP。

集群访问

默认kubectl通过localhost访问本地集群,所以上文敲kubectl是没问题的,如果要被外部访问或者纳管的话,可以把kubeconfig文件拷走,默认路径是 /etc/rancher/k3s/k3s.yaml 。记得修改文件内的server字段,改成外部可访问到的IP。

架构说明

TODO.