前言
今天在给测试k8s各类发行版本的时候发现了名为k0s的发行版,听过k3s,却没听过k0s。轻量级的kubernetes早已存在。那么k0s存在的意义是什么,说到这里我痛恨国内互联网恶臭现象,除了主题,文章一字不换的复制,复制也好,起码标个原作者链接吧。说着轻量级可是文章里并没有轻量级这个词,也没说明优化了哪些地方,删了什么功能。据我亲身实践,k0s不是轻量级kubernetes发行版,简化了kubernetes部署步骤。(个人意见)
官方简介
k0s 号称是一款简易、稳定且经过认证的 Kubernetes 发行版,它提供了构建 Kubernetes 集群所需的所有内容,预先配置了所有所需的功能,使得构建 Kubernetes 集群只需复制一个可执行文件到每个主机并运行它即可。
- 主要特性
- 打包为单个静态文件
- 自托管的隔离 control plane (除非你额外在master node 部署 worker,否则该node无法部署任何服务!)
- 支持多个存储后端:etcd, SQLite, MySQL (以及其他的兼容版本), PostgreSQL(k3s项目产物)
- 弹性控制平面
- 上游采用原生 Kubernetes
- 支持自定义 container runtime(默认为 containerd,现在1.20版本原生k8s也默认采用containerd)
- 支持自定义 Container Network Interface (CNI) 插件(默认为 calico)
- 支持 x86_64 和 arm64 架构
- k0s 中的"0"的包含三层含义:零摩擦、零依赖和零成本 (Zero Friction, Zero Deps, Zero Cost)
- 易学习,上手简单,不像kubeadm部署那么麻烦(比k3s难一点,所以k3s才是易学习,上手简单,因为有脚本,k0s虽然也有脚本但那叫脚本?)
部署k0s
为写这篇文章我斥巨资5元钱购买竞价实例来做实验
获取预构建二进制文件
预构建二进制文件简称二进制包,由于k0s官网懒得做各类发行版本包,所以只有linux全发行版通用二进制文件,如下所述
引用:我们真的不想开始维护各种OS发行版的安装和打包。因此,单一二进制文件的包装模型允许我们更多地关注核心问题,而不是包装的不同风格,如DEBs、rpm和其他。
请到官方Github releases获取二进制文件,截止本文更新日期,稳定版本为0.9.1,测试版本为v0.10.0-beta1,我将使用0.9.1版本部署k0s,皆为 Linux amd64平台,如使用Linux arm64平台请将amd64更换为arm64。
指令(请检查网络是否通畅,如网络不通畅请将github.com更换为file.share.cloudyun.xyz,目前提供k0s-v0.9.1版本包括win以及Source code,其它版本将于几天后手动/另类方法同步):
wget https://github.com/k0sproject/k0s/releases/download/v0.9.1/k0s-v0.9.1-amd64 -O /usr/local/bin/k0s #获取预构建二进制文件,如使用arm64平台请将amd更换为arm
chmod +x /usr/local/bin/k0s #赋予可执行权限
如未安装wget与curl,请使用一下指令安装:
apt update && apt install -y wget curl #ubuntu/debian
yum makecache && yum install -y wget curl #centos/fedora
因k0s不提供内置kubectl,需要额外安装kubectl,安装在何处都行不一定非得在宿主机内
指令(该地址于境内网络通畅/镜像多,暂不予提供镜像):
curl --output /usr/local/bin/kubectl -L "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kub