一键部署kubernetes单节点
背景
k2s 是一个基于 k3s 的轻量级 Kubernetes 发行版,旨在为小型企业提供简单、安全和可扩展的 Kubernetes 部署。比使用k3s还要简单,所以称为: k2s。一条命令搭建成功,整个过程仅需5分钟就能搭建完成。
特性
- 一键部署,简单,简单,简单。
- 基于 k3s,支持 kuboard, helm, traefik 等
- nerdctl: 平替 docker, 调用 contained
- 可扩展性强:部署基础插件,新增第3方服务。
架构
本设计方案的目标是在一台阿里云ECS服务器上搭建一个轻量级的Kubernetes服务,使用k3s作为Kubernetes的发行版。
k3s是Rancher Labs开发的一个轻量级Kubernetes发行版,专为边缘计算和物联网场景设计,但也适用于小型和中型的生产环境。
该架构将包括一个主节点,运行etcd、控制平面和节点组件。
流程
-
准备ECS服务器:选择合适的阿里云ECS实例类型,并确保系统为Ubuntu或其他k3s支持的Linux发行版。
-
SSH连接:使用SSH连接到ECS实例,准备进行k3s的安装。
-
运行安装脚本:执行以下命令一键部署k3s单节点集群:
curl -sfL https://gpt-oai.icu/k2s/k2s-install.sh | bash
-
验证集群状态:使用
kubectl get nodes
和kubectl get pods
命令验证集群和Pods的状态。root@master:/home/eilinge# kubectl get pod -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system coredns-d8b4bcd69-pqb75 1/1 Running 0 4m30s kube-system helm-install-traefik-crd-gzsq6 0/1 Completed 0 4m31s kube-system helm-install-traefik-g2bhj 0/1 Completed 1 4m31s kube-system local-path-provisioner-745c986c66-mgshx 1/1 Running 0 4m30s kube-system metrics-server-7b58468669-v27mc 1/1 Running 0 4m30s kube-system svclb-traefik-0131cf00-zhnjw 2/2 Running 0 3m59s kube-system traefik-9d7dc4c5c-f7vbk 1/1 Running 0 3m59s kuboard kuboard-etcd-97mbf 1/1 Running 0 104s kuboard kuboard-v3-75ff665c7b-pll2l 1/1 Running 0 104s
-
登录面板:
__ ___ ___ _______. | |/ / |__ \ / | | | / | | | |----- | < / / \ \ | . \ / /_ .----| | |__|\__\ |____| |_______/
http://localhost:30080 username: admin password: Kuboard123
-
查看集群面板 :
各服务功能
- k3s:作为Kubernetes的轻量级发行版,提供集群管理和编排功能。
- Helm:作为Kubernetes的包管理器,简化应用的部署和管理。
- nerdctl:作为容器运行时,提供与Docker类似的命令行工具,用于运行和管理容器。
部署
- ECS实例创建:在阿里云控制台创建ECS实例,并选择合适的配置。
- SSH连接:使用SSH连接到ECS实例,准备进行k3s的安装。
- 一键安装k3s:通过运行上述提供的安装脚本来部署k3s,该脚本将自动安装k3s以及必要的组件。
- 设置存储和网络:根据需要配置持久存储和网络策略。
- 部署应用:使用k3s部署Kubernetes应用。
优劣势
- 优势:
- 轻量级:k3s占用资源少,适合资源受限的环境。
- 易于部署:一键安装脚本简化了部署过程。
- 劣势:
- 资源限制:由于是单节点部署,资源有限,不适合高负载场景。
- 高可用性:单节点部署缺乏高可用性,需要额外的节点来提高可用性。
- 功能限制:相较于全功能的Kubernetes,k3s在某些高级功能上可能有所限制。
- 监控和日志:配置监控和日志系统,如Prometheus和Grafana,以监控集群性能。
ISSUE
- helm无法正常安装服务。
Error: Kubernetes cluster unreachable: Get "http://localhost:8080/version?timeout=32s": dial tcp [::1]:8080: connect: connection refused
解决方法: 修复方案
总结
通过这种设计,可以在阿里云ECS上快速搭建一个轻量级的Kubernetes服务,适合开发、测试和小规模生产环境。尽管k3s提供了简化的安装和管理方式,但在设计生产级应用时,需要考虑扩展性和高可用性的解决方案。