概述

K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化,简单来说就是低配版的k8s;rancher官网,特点如下。

  • 简单但功能强大的 batteries-included 功能本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik Ingress controller。

  • 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。

  • 最大程度减轻了外部依赖性,K3s 仅需要 kernel 和 cgroup 挂载

  • 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。

Docker

在 k3s 中默认使用 containerd 作为容器运行环境,但可以通过配置修改 运行环境为 docker。如果想使用默认的 containerd ,可以跳过。

安装

Docker 提供了一键脚本,可以直接使用进行安装,安装命令如下所示:

curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh

安装完成以后通过可以 docker version 即可确认到版本信息:

root@canyuegongzi:~# docker version
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:46:01 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.6
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8728dd2
  Built:            Fri Apr  9 22:44:13 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

通过 systemctl start docker启动 Docker:

root@canyuegongzi:~# systemctl start docker  // 启动 docker
root@canyuegongzi:~# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
root@canyuegongzi:~#

镜像加速

Docker 镜像默认是从 Docker Hub来下载,由于其服务器在国外,速度会比较慢。因此我们可以配置成国内的镜像仓库。

阿里云官网搜索输入关键字【容器镜像服务】并点击进入;

复制阿里云镜像加速地址;

编辑 /etc/docker/daemon.json;

vi /etc/docker/daemon.json

内容如下:

{
          "registry-mirrors": ["阿里云镜像加速地址"]
}

重启 Docker 服务:

sudo systemctl daemon-reload
sudo systemctl restart docker

k3s

k3s 早期时候因为国内网络的原因,无法通过官方的提供的脚本一键安装,只能通过离线安装的方式。2020 年之后官方提供了国内环境下的安装脚本。

安装

server --docker指定了 Docker 为运行时, 也可以在安装后通过修改配置文件的方式指定 Docker为 运行时容器。安装脚本如下:

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

验证

通过 k3s kubectl get node验证 k3s 是否安装成功。

k3s kubectl get node
root@canyuegongzi:~# k3s kubectl get node
NAME           STATUS   ROLES                  AGE   VERSION
canyuegongzi   Ready    control-plane,master   87s   v1.20.6+k3s1

k3s 镜像加速

编辑配置文件,内容如下:

vim /etc/rancher/k3s/registries.yaml
mirrors:
  mirror.aliyuncs.com:
    endpoint:
      - "https://********.mirror.aliyuncs.com" 镜像加速地址(章节2中提到的)

#configs:
#  "registry.cn-hangzhou.aliyuncs.com": # 私有镜像库填这里
#    auth:
#      username: xxxxxx
#      password: xxxxxx

kubectl

Kubernetes 命令行工具 kubectl,可以使用 kubectl 来部署应用、监测和管理集群资源以及查看日志。

根据自己需要安装对应的 kubectl 工具并配置环境变量。

kubectl下载地址

执行 cat /etc/rancher/k3s/k3s.yaml会输出一段yaml格式内容,复制内容并新建文件粘贴,修改 127.0.0.1 为 k3s服务器的ip地址,保存关闭记事本【以config 命名且不需要扩展名】。

在用户主目录创建 .kube 文件夹(注:Linux在 ~ 目录下创建 .kube 文件夹),并复制 config 文件到此目录下,文件结构如下;

yongf@DESKTOP-KEDMIQA MINGW64 ~/.kube
$ ls
ali  cache  config  tx

yongf@DESKTOP-KEDMIQA MINGW64 ~/.kube

执行 kubectl get node有如下输出:

root@canyuegongzi:~# kubectl get nodes
NAME           STATUS   ROLES                  AGE   VERSION
canyuegongzi   Ready    control-plane,master   80m   v1.20.6+k3s1

备注

kubectl 远程连接时可能会有如下错误,需要 GitHub 提示修改,实验学习环境下影响不大,可以在服务器中操作,只是较繁琐一些,每一次部署需要上传 yml 文件到 服务器。

## 错误
Unable to connect to the server: x509: certificate is valid for 10.43.0.1, 127.0.0.1, 192.168.1.127, not xx.xx.xx.xx

总结

至此,k3s 的基本安装已经完成,其中 kubectl 命令、资源等和 k8s 相差不大,后续会再更新相关的内容。

Logo

开源、云原生的融合云平台

更多推荐