k3s 详解:轻量级 Kubernetes 的全面指南

2025-02-27 08:30:14

k3s Logo

在容器编排领域,Kubernetes 已经成为事实上的标准。然而,对于资源有限或对性能要求较高的场景(如边缘计算、物联网等),传统的 Kubernetes 部署可能会显得过于庞大和复杂。为了解决这些问题,k3s 应运而生。它是一款轻量级的 Kubernetes 发行版,专为资源受限环境设计,同时保留了 Kubernetes 的核心功能。本文将深入探讨 k3s 的核心功能和使用方法,帮助读者全面掌握这一强大的工具。

k3s 架构

核心功能与特性

1. 安装与配置

下载与安装

首先,确保已经安装了必要的依赖项(如 Docker 或 containerd)。可以通过以下命令快速安装 k3s:

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

该命令会自动下载并安装 k3s,并将其配置为系统服务。

配置文件说明

k3s 使用 /etc/rancher/k3s/config.yaml 文件进行全局配置。常见的配置项包括启用 TLS 加密、设置节点角色等。

# /etc/rancher/k3s/config.yaml
tls-san:
  - "192.168.1.100"
node-label:
  - "node-role.kubernetes.io/worker=true"

2. 集群管理

k3s 提供了简单易用的命令行工具 kubectl 来管理和操作集群。通过这些命令,可以方便地查看集群状态、添加或移除节点等。

查看集群状态

要查看当前集群的状态,可以使用以下命令:

kubectl get nodes

这将列出所有节点及其状态信息。

添加新节点

要向现有集群添加新节点,可以在目标机器上运行以下命令:

curl -sfL https://get.k3s.io | K3S_URL=https://<master-ip>:6443 K3S_TOKEN=<token> sh -

其中 <master-ip> 是主节点的 IP 地址,<token> 是用于认证的共享密钥。

3. 应用部署

k3s 支持多种方式来部署应用程序,包括 YAML 文件、Helm 图表等。下面介绍几种常用的方法。

使用 YAML 文件

编写一个简单的 Deployment YAML 文件 nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

然后使用 kubectl apply 命令部署:

kubectl apply -f nginx-deployment.yaml

使用 Helm 图表

如果需要更复杂的部署逻辑,可以使用 Helm 图表。首先,确保已经安装了 Helm 客户端:

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh

接下来,添加官方 Helm 仓库并安装 Nginx Ingress Controller:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm install ingress-nginx ingress-nginx/ingress-nginx

4. 其他实用功能

除了上述核心功能,k3s 还包含了一些其他实用的功能,进一步提升了用户体验。

监控与日志

k3s 内置了对 Prometheus 和 Fluentd 的支持,可以轻松集成监控和日志收集功能。

备份与恢复

为了确保数据的安全性,k3s 提供了备份和恢复机制。可以通过 Etcd 快照实现集群状态的定期备份。

sudo k3s etcd snapshot-save /var/lib/rancher/k3s/server/db/snapshot.db

示例介绍

假设你正在开发一个微服务架构的应用程序,并希望将其部署到 k3s 集群中。你可以使用 k3s 来简化这个过程。

示例 1:创建 k3s 集群

  1. 在主节点上安装 k3s:
curl -sfL https://get.k3s.io | sh -
  1. 获取加入集群所需的 token:
cat /var/lib/rancher/k3s/server/node-token
  1. 在工作节点上加入集群:
curl -sfL https://get.k3s.io | K3S_URL=https://<master-ip>:6443 K3S_TOKEN=<token> sh -

示例 2:部署应用程序

  1. 编写一个简单的 Deployment YAML 文件 app-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest
        ports:
        - containerPort: 8080
  1. 使用 kubectl apply 命令部署:
kubectl apply -f app-deployment.yaml
  1. 创建一个 Service 对象以暴露应用程序:
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  type: LoadBalancer
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  1. 应用 Service 配置:
kubectl apply -f service.yaml

总结

k3s 是一款轻量级且易于使用的 Kubernetes 发行版,特别适合那些资源受限或对性能有较高要求的场景。通过提供丰富的集群管理和应用部署功能,k3s 不仅简化了 Kubernetes 的部署过程,还确保了其核心功能的完整性和可靠性。

k3s-io
轻量级的 Kubernetes
Go
Apache-2.0
29.0 k