共计 3072 个字符,预计需要花费 8 分钟才能阅读完成。
概述
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
通过
启动 Docker:systemctl start 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 年之后官方提供了国内环境下的安装脚本。
安装
指定了 Docker 为运行时, 也可以在安装后通过修改配置文件的方式指定 Docker 为 运行时容器。安装脚本如下:server --docker
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker
## --tls-san 参数是可以允许公网 ip 证书
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - --docker --tls-san 148.*.*.*
验证
通过
验证 k3s 是否安装成功。k3s kubectl get node
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 工具并配置环境变量。
执行
会输出一段 yaml 格式内容,复制内容并新建文件粘贴,修改 127.0.0.1 为 k3s 服务器的 ip 地址,保存关闭记事本【以 config 命名且不需要扩展名】。cat /etc/rancher/k3s/k3s.yaml
在用户主目录创建 .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 相差不大,后续会再更新相关的内容。