k3s 介绍

发布时间: 更新时间: 总字数:2253 阅读时间:5m 作者: IP上海 分享 网址

k3s是一个高可用的、经过认证的Kubernetes发行版,设计用于无人值守、资源受限的服务器中或物联网设备内的服务。

相关链接

  • k3s 官网:https://k3s.io
  • k3s 源码:https://github.com/rancher/k3s

起源

2019年2月26日,业界领先的容器管理软件提供商Rancher Labs(以下简称Rancher)宣布推出轻量级Kubernetes发行版K3s,这款产品专为在资源有限的环境中运行Kubernetes的研发和运维人员设计。Rancher此次发布的K3s项目,将满足在边缘计算环境中运行在x86、ARM64和ARMv7处理器上的小型、易于管理的Kubernetes集群日益增长的需求。

K3s如何减少Kubernetes的大小

为了减少运行Kubernetes所需内存,Rancher K3s开发团队主要专注于以下四个方面的主要变化:

  • 删除旧的、非必须的代码:K3s不包括任何默认禁用的Alpha功能或者过时的功能,原有的API组件目前仍运行于标准部署当中。除此之外,Rancher还删除了所有非默认许可控制器,in- tree云提供商和存储驱动程序,但允许用户添加任何他们需要的驱动程序。
  • 整合正在运行的打包进程:为了节省RAM,Rancher将通常在Kubernetes管理服务器上运行的多流程合并为单个流程。Rancher还将在工作节点上运行的kubelet、kubeproxy和flannel代理进程组合成一个进程。
  • 使用containerd代替Docker作为运行时的容器引擎:通过用containderd替换Docker,Rancher能够显著减少运行时占用空间,删除libnetwork、swarm、Docker存储驱动程序和其他插件等功能。
  • 除了 etcd 之外,引入 SQLite 作为可选的数据存储:Rancher在k3s中添加了SQLite作为可选的数据存储,从而为etcd提供了一个轻量级的替代方案。该方案不仅占用了较少的内存,而且大幅简化了操作。

推动Kubernetes在边缘计算场景落地

随着Kubernetes的部署开始有边缘部署的发展趋势,企业需要运维管理的Kubernetes集群数量正在迅速增加。在许多最有趣的边缘计算用例当中,组织将运行成千上万的只有一个、两个或者三个节点的Kubernetes集群,运维人员需要负责管理如此大规模的基础架构,而K3s正是为此而生,旨在最大限度地简化用户的安装和操作体验。K3s主要功能包括:

  • 生产级Kubernetes:K3s是一个符合标准的、已获CNCF官方认证的Kubernetes发行版。
  • 一个没有主机依赖的二进制文件:在任何设备上安装Kubernetes所需的一切都包含在这一个40MB的二进制文件当中,不需要像KuberSpray、KubeADM或者RKE这样的外部安装程序。只需要一个命令,用户就可以配置或者升级单节点K3s集群。
  • 一条命令,向集群添加节点:若想向集群添加其他节点,管理员只需在新节点上运行一条命令,指向原始服务器,通过安全token传递即可。
  • 自动生成证书:集群启动时,在Kubernetes主服务器和节点之间建立TLS所需的所有证书都会被自动创建,还会自动创建服务账号的加密密钥。

how it works k3s

Rancher同时发布了支持x86_64、ARM64和ARMv7架构的K3s,使K3s得以更加灵活地跨任何边缘基础架构工作。除了边缘计算的使用场景,K3s还非常适合那些寻求简单方法来部署Kubernetes轻量级发行版的用户。在早期技术预览期间,许多用户反馈说K3s对于CI/CD环境、嵌入式系统和本地Kubernetes部署特别有帮助。

K3s的四大使用场景

  • 边缘计算
  • 与应用程序绑定使用
  • 嵌入式设备
  • CI环境

安装

Mac 需要安装 Multipass。它提供命令行界面,允许用户协调Ubuntu Linux虚拟机的创建,管理和维护,以简化应用程序的开发,并且可以在mac上使用。

首先我们使用brew(一个软件包管理工具)安装 Multipass

创建VM

现在使用Multipass来创建一个VM:需要1GB内存和5GB磁盘

# multipass launch --name k3s --mem 1G --disk 5G
Creating k3s /
Retrieving image: 6%
...
Retrieving kernel image: -
Starting k3s -
...
Launched: k3s

离线解决方案:

multipass launch --name k3s --mem 1G --disk 5G http://127.0.0.1:8080/ubuntu-18.04-server-cloudimg-amd64.img
multipass launch --name k3s --mem 1G --disk 5G file:///Users/xiexianbin/Downloads/ubuntu-18.04-server-cloudimg-amd64.img

基础镜像下载地址:http://cloud-images.ubuntu.com/releases/server/releases/bionic/release-20191008/ubuntu-18.04-server-cloudimg-amd64.img

安装k3s

等待VM创建,然后为VM启动一个shell

# multipass shell k3s

修改/etc/resolv.conf,保证容器可以上网。

下载离线镜像:

wget wget https://github.com/rancher/k3s/releases/download/v0.9.1/k3s-airgap-images-amd64.tar
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp k3s-airgap-images-amd64.tar  /var/lib/rancher/k3s/agent/images/

接着运行如下命令来安装k3s:

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

multipass@k3s:~$ curl -sSL https://raw.githubusercontent.com/rancher/k3s/master/install.sh | sh
[INFO]  Finding latest release
[INFO]  Using v0.9.1 as release
[INFO]  Downloading hash https://github.com/rancher/k3s/releases/download/v0.9.1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/rancher/k3s/releases/download/v0.9.1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Creating /usr/local/bin/kubectl symlink to k3s
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Creating /usr/local/bin/ctr symlink to k3s
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s

测试kubectl命令

安装好k3s之后,在mac上运行它,使用kubectl验证它。

multipass@k3s:~$ sudo kubectl get nodes
NAME   STATUS   ROLES    AGE     VERSION
k3s    Ready    master   3m16s   v1.15.4-k3s.1
multipass@k3s:~$ sudo kubectl get pods --all-namespaces
NAMESPACE     NAME                         READY   STATUS      RESTARTS   AGE
kube-system   coredns-66f496764-hp2t8      1/1     Running     0          3m35s
kube-system   helm-install-traefik-nqj5s   1/1     Running     0          3m36s
kube-system   svclb-traefik-cd2sx          3/3     Running     0          3m37s
kube-system   traefik-d869575c8-q7hh9      1/1     Running     0          3m38s

注意:K3s默认使用containerd,要使用docker需要设置--docker:

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--docker" sh -

配置私有镜像仓库

$ cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "k8s.gcr.io":
    endpoint:
    - "https://k8s.xxx.io"
  "gcr.io":
    endpoint:
    - "https://gcr.xxx.io"
  "ghcr.io":
    endpoint:
    - "https://ghcr.xxx.io"
  "registry.k8s.io":
    endpoint:
    - "https://registry.xxx.io"
EOF
$ systemctl restart k3s

说明

转载自 RancherLabs 2019-2-27 《Rancher发布K3s!史上最轻量K8s发行版,赋能边缘计算》

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数