K3S 轻量级 Kubernetes 搭建教程

K3S 是 Rancher Labs 推出的轻量级 Kubernetes 发行版,将完整的 K8S 功能压缩到不到 100MB 的单一二进制文件中。K3S 使用 SQLite 替代 etcd 作为默认数据存储,内置了 Flannel 网络插件和 Traefik Ingress 控制器,非常适合在搬瓦工 VPS 这类资源受限的环境中运行。

一、K3S 与标准 K8S 对比

  • 内存占用:K3S 约 512MB,标准 K8S 需要 2GB+。
  • 安装方式:K3S 一条命令完成,K8S 需要多个组件分别安装。
  • 存储后端:K3S 默认 SQLite,K8S 使用 etcd。
  • 内置组件:K3S 内置 Flannel、CoreDNS、Traefik、ServiceLB。
  • 兼容性:K3S 完全兼容 K8S API,kubectl 和 Helm 均可正常使用。

二、环境要求

  • 操作系统:Ubuntu 20.04+、Debian 11+、CentOS 7+。
  • 内存:最低 512MB,推荐 1GB 以上。
  • CPU:最低 1 核。
  • 磁盘:至少 10GB 可用空间。

搬瓦工 VPS 购买地址:bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。

三、安装 K3S Server(主节点)

3.1 一键安装

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

安装完成后 K3S 会自动启动并配置为系统服务。

3.2 验证安装

systemctl status k3s
k3s kubectl get nodes
k3s kubectl get pods -A

3.3 配置 kubectl

mkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
chmod 600 ~/.kube/config

安装标准 kubectl(可选):

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

四、自定义安装选项

4.1 禁用默认组件

# 不安装 Traefik(使用自己的 Ingress Controller)
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik" sh -

# 不安装 ServiceLB
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable servicelb" sh -

# 同时禁用多个组件
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--disable traefik --disable servicelb" sh -

4.2 使用外部数据库

curl -sfL https://get.k3s.io | sh -s - server \
  --datastore-endpoint="mysql://user:pass@tcp(db-host:3306)/k3s"

五、添加 Agent 节点

5.1 获取 Server Token

cat /var/lib/rancher/k3s/server/node-token

5.2 在 Agent 节点上安装

curl -sfL https://get.k3s.io | K3S_URL=https://SERVER_IP:6443 K3S_TOKEN=YOUR_TOKEN sh -

5.3 验证节点加入

在 Server 节点上查看:

kubectl get nodes -o wide

六、部署应用

6.1 部署 Nginx

kubectl create deployment nginx --image=nginx:alpine --replicas=2
kubectl expose deployment nginx --port=80 --type=LoadBalancer

K3S 内置的 ServiceLB 会自动为 LoadBalancer 类型的 Service 分配外部端口。

6.2 使用 YAML 部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: web-app
        image: nginx:alpine
        ports:
        - containerPort: 80
        resources:
          requests:
            memory: "32Mi"
            cpu: "50m"
          limits:
            memory: "64Mi"
            cpu: "100m"
---
apiVersion: v1
kind: Service
metadata:
  name: web-app
spec:
  selector:
    app: web-app
  ports:
  - port: 80
    targetPort: 80
  type: LoadBalancer
kubectl apply -f web-app.yaml

6.3 配置 Ingress

K3S 内置 Traefik 作为 Ingress Controller:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-app-ingress
spec:
  rules:
  - host: app.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-app
            port:
              number: 80

七、安装 Helm

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

使用 Helm 部署应用:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-redis bitnami/redis --set architecture=standalone

八、K3S 管理

# 查看 K3S 服务日志
journalctl -u k3s -f

# 重启 K3S
systemctl restart k3s

# 停止 K3S
systemctl stop k3s

# 完全卸载 K3S Server
/usr/local/bin/k3s-uninstall.sh

# 完全卸载 K3S Agent
/usr/local/bin/k3s-agent-uninstall.sh

九、常见问题

K3S 启动失败

journalctl -u k3s --no-pager | tail -50

常见原因是端口被占用(6443)或内存不足。

kubectl 连接被拒绝

确保 kubeconfig 文件路径正确:

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get nodes

Pod 网络不通

检查 Flannel 网络是否正常:

kubectl get pods -n kube-system | grep flannel
kubectl logs -n kube-system -l app=flannel

总结

K3S 是在搬瓦工 VPS 上运行 Kubernetes 的最佳选择,资源占用低、安装简单、功能完整。安装后可以继续配置 Helm 包管理器ArgoCD GitOpsRancher 管理平台 等工具。选购搬瓦工 VPS 请参考 全部方案,使用优惠码 NODESEEK2026 享受 6.77% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。