k3s
k8s是业界公认的有效管理容器化工作负载的服务平台,对于企业级用户来说,部署一套k8s是非常简单的事情,但是对于我们一些个人用户出于学习或者自己想搞事情的目的来说,搭建一套k8s的成本还是太高了一些。于是k3s横空出世,k3s是由Rancher团队搞出来的一套k8s替代方案,当年Rancher也是比较出色的容器编排平台解决方案(但他的1.X版本的编排系统还是算了……)。
k3s从名字来看就知道一定是k8s的袖珍版,没错,根据官网[K3s - 轻量级 K3s - 轻量级 Kubernetes | Rancher文档的介绍
- K3s 是一个轻量级的 Kubernetes 发行版,它针对边缘计算、物联网等场景进行了高度优化。K3s 有以下增强功能:
- 打包为单个二进制文件。
- 使用基于 sqlite3 的轻量级存储后端作为默认存储机制。同时支持使用 etcd3、MySQL 和 PostgreSQL 作为存储机制。
- 封装在简单的启动程序中,通过该启动程序处理很多复杂的 TLS 和选项。
- 默认情况下是安全的,对轻量级环境有合理的默认值。
- 添加了简单但功能强大的`batteries-included`功能,例如:本地存储提供程序,服务负载均衡器,Helm controller 和 Traefik Ingress controller。
- 所有 Kubernetes control-plane 组件的操作都封装在单个二进制文件和进程中,使 K3s 具有自动化和管理包括证书分发在内的复杂集群操作的能力。
- 最大程度减轻了外部依赖性,K3s 仅需要 kernel 和 cgroup 挂载。 K3s 软件包需要的依赖项包括:
- containerd
- Flannel
- CoreDNS
- CNI
- 主机实用程序(iptables、socat 等)
- Ingress controller(Traefik)
- 嵌入式服务负载均衡器(service load balancer)
- 嵌入式网络策略控制器(network policy controller)
与k8s最大的区别在于,系统占用小,对Arm架构的支持甚至可以支持部署在树莓派上面,这对于边缘计算、物联网平台来说是再好不过的消息,并且因为部署及启动集群的时间非常短,对于开发及测试环境,也特别适用。
k3s架构图
KubeSphere
KubeShpere集群首页
kubeSphere工作负载监控
KubeSphere是用于管理k8s集群的一套可视化工具,最大的特点是安装非常便捷,官网提供了All-in-One安装脚本,让开发人员能够快速搭建一个单节点k8s集群。
KubeSphere对用户体验及审美有特殊癖好的开发人员来说,也是福音。对于k8s各种配置文件都有可视化界面可以进行编辑。
按照官方文档 部署 K3s 和 KubeSphere (https://kubesphere.io/zh/docs/installing-on-linux/on-premises/install-kubesphere-and-k3s/)所述的安装方案,目前会遇到卡死的情况,所以采用手动方式来进行安装。
安装单节点k3s
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.21.4+k3s1 sh -
如以上语句安装了v1.21.4稳定版本的k3s,安装脚本通过环境变量控制脚本的执行参数,详细的参数列表可以查看官方安装文档 Rancher Docs: Installation Options (https://rancher.com/docs/k3s/latest/en/installation/install-options/#options-for-installation-with-script),安装过程中因为涉及访问github.com,整个安装的时间视网络情况而定,在我这里也就30秒。此过程没有太大问题,如果遇到脚本输出以下日志
Downloading hash https://github.com/k3s-io/k3s/releases/download/{your version}/sha256sum-amd64.txt
之后便退出了,可以试着访问日志中的这个地址,很可能是github.com访问困难造成的,只能多多尝试。安装完成后可以使用以下命令查看节点信息以证明安装成功。
k3s kubectl get node
安装KubeSphere
使用官方文档 在 Kubernetes 上最小化安装 KubeSphere (
k3s kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml
k3s kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml
以上脚本部署了v3.2.1版本的KubeSphere,如果想要指定版本号,可以将脚本中的版本号对应替换。
脚本会拉取几个镜像,在此过程中可能又会因为众所周知的问题导致卡死,不能说太细只能多多尝试几次自行解决。安装过程可通过以下脚本查看
k3s kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
Error from server (BadRequest): container "installer" in pod "ks-installer-85dcfff87d-2w9f5" is waiting to start: trying and failing to pull image
例如通过以上脚本的返回信息,可得知目前正在拉取镜像并且正在重试。
通过以上两部分简单的脚本,就可以实现搭建一个单节点k3s+KubeSphere的服务平台了,对于个人开发者测试使用,或者体验DevOps来说已足够。