k3s安装部署流程
一、 K3s 简介
K3s 是由 Rancher Labs 开发的一个轻量级 Kubernetes 发行版。它专为物联网(IoT)、边缘计算、CI/CD 等资源受限的环境设计。K3s 将 Kubernetes 的核心组件打包为一个单一的二进制文件,大小不到 100MB,极大地简化了安装和部署过程,同时保留了 Kubernetes 的核心功能。
二、 环境准备
在开始安装 K3s 之前,请确保您的服务器满足以下基本要求:
操作系统:主流的 Linux 发行版(如 Ubuntu, CentOS, Debian 等)。
硬件配置:最低要求 1 核 CPU、512MB 内存。建议生产环境至少 2 核 2GB。
网络:节点之间网络互通,能够访问外网(如果无法访问外网,需提前准备离线镜像)。
端口:确保 6443(Kubernetes API Server)、80 和 443(Ingress Controller)端口未被占用且防火墙放行。
三、 单节点安装(快速入门)
对于测试和开发环境,部署一个单节点的 K3s 集群是最快的方式。K3s 提供了一键安装脚本,默认会将该节点同时作为 Server(控制平面)和 Agent(工作节点)。
1. 安装 Server 节点
在目标服务器上执行以下命令:
curl -sfL https://get.k3s.io | sh -
安装脚本会自动下载 K3s 二进制文件、启动服务并设置开机自启。安装完成后,可以通过以下命令查看节点状态:
sudo kubectl get nodes
2. 获取 Node Token
如果需要将其他工作节点加入集群,需要获取 Server 节点的 Token。Token 存储在 Server 节点的文件系统中:
sudo cat /var/lib/rancher/k3s/server/node-token
3. 加入 Agent 节点
在另一台服务器上,使用获取到的 Token 和 Server 节点的 IP 地址,执行以下命令将其作为 Agent 节点加入集群:
curl -sfL https://get.k3s.io | K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<NODE_TOKEN> sh -
注意:请将 <SERVER_IP> 替换为实际的 Server 节点 IP,将 <NODE_TOKEN> 替换为上一步获取的 Token 字符串。
四、 高可用安装(生产环境推荐)
在生产环境中,单节点的控制平面存在单点故障风险。K3s 支持高可用(HA)部署,通常采用嵌入式数据库(SQLite、etcd)或外部数据库(MySQL、PostgreSQL)的方式。
以外部数据库模式为例,假设您已经准备好了一个外部 MySQL 数据库实例。数据库连接地址示例为:https://www.ipipp.com:3306。
1. 初始化第一个 Server 节点
在第一台 Server 节点上,通过环境变量指定外部数据库连接串启动:
curl -sfL https://get.k3s.io | sh -s - server --datastore-endpoint="mysql://admin:password@tcp(https://www.ipipp.com:3306)/k3s"
2. 加入其他 Server 节点
在其他的 Server 节点上,使用相同的数据库连接串,并加入第一个 Server 节点:
curl -sfL https://get.k3s.io | sh -s - server --datastore-endpoint="mysql://admin:password@tcp(https://www.ipipp.com:3306)/k3s" --token=<NODE_TOKEN_FROM_FIRST_SERVER>
通过这种方式,您可以建立多个 Server 节点组成高可用控制平面,然后按照前面的步骤将 Agent 节点加入集群。
五、 验证与测试
集群部署完成后,我们可以部署一个简单的 Nginx 应用来验证集群是否正常工作。
1. 创建部署及服务
创建一个名为 nginx-test.yaml 的文件,内容如下:
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service spec: type: NodePort selector: app: nginx ports: - port: 80 targetPort: 80 nodePort: 30001
使用 kubectl 应用该配置:
sudo kubectl apply -f nginx-test.yaml
2. 检查运行状态
查看 Pod 是否正常运行:
sudo kubectl get pods -l app=nginx
查看 Service 状态:
sudo kubectl get svc nginx-service
如果一切正常,您可以通过 http://<NODE_IP>:30001 访问到 Nginx 的默认欢迎页面。
六、 卸载 K3s
如果您需要卸载 K3s,K3s 在安装时已经为您生成了相应的卸载脚本。
卸载 Server 节点:
/usr/local/bin/k3s-uninstall.sh
卸载 Agent 节点:
/usr/local/bin/k3s-agent-uninstall.sh
这些脚本会自动停止服务、清理容器、删除相关的配置文件和二进制文件,不留残留。
七、 总结
K3s 凭借其极简的架构和一键式的安装体验,大大降低了 Kubernetes 的使用门槛。无论是单节点的快速验证,还是基于外部数据库的高可用生产集群,K3s 都提供了清晰明了的部署路径。通过掌握上述流程,您可以快速搭建起稳定的容器编排平台,为业务应用的云原生化奠定基础。