K3s 轻量 K8s 发行版

FreeGuideOnline 最新 2026-07-12

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


安装脚本会自动完成以下操作:
- 检测操作系统并下载对应架构的 K3s 二进制文件。
- 安装 `k3s` 命令到 `/usr/local/bin`。
- 创建 systemd 服务 `k3s.service` 并启动。
- 生成 kubeconfig 文件到 `/etc/rancher/k3s/k3s.yaml`。

安装完成后,检查服务状态:

```bash
sudo systemctl status k3s

步骤 2:配置 kubectl 访问

为了使用 kubectl 管理集群,可以将配置文件复制到当前用户的默认路径,并修改权限:

mkdir -p $HOME/.kube
sudo cp /etc/rancher/k3s/k3s.yaml $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

现在可以查看节点信息:

kubectl get nodes

如果节点状态为 Ready,说明集群已正常运行。

步骤 3:验证组件

查看所有 Pod(包括系统组件)运行状态:

kubectl get pods --all-namespaces

你应该会看到类似 kube-system 命名空间下运行着 corednslocal-path-provisionertraefik 等 Pod。

部署第一个应用

我们使用一个简单的 Nginx 示例来验证集群功能。

创建 Deployment

kubectl create deployment nginx --image=nginx:alpine

检查 Deployment 状态:

kubectl get deployments

暴露服务

通过 kubectl expose 创建一个 NodePort 类型的服务,以便从宿主机访问:

kubectl expose deployment nginx --port=80 --type=NodePort

查看服务分配的端口:

kubectl get svc nginx

输出中 PORT(S) 一列会显示类似 80:3xxxx/TCP,其中 3xxxx 就是 NodePort。在浏览器中访问 http://<你的主机IP>:3xxxx,即可看到 Nginx 欢迎页面。

使用 Traefik Ingress

K3s 内置了 Traefik Ingress Controller,可以更优雅地暴露 HTTP 服务。创建一个 Ingress 资源:

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

保存为 ingress.yaml 并应用:

kubectl apply -f ingress.yaml

修改本地 hosts 文件,将 nginx.local 指向你的主机 IP,然后访问 http://nginx.local,同样可以访问到 Nginx。

K3s 集群管理进阶

添加 Agent 节点(多节点集群)

如果你有额外的机器需要加入集群,先获取主节点的 token 和 IP。

在主节点上查看 token:

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

在需要加入的机器上,设置环境变量并运行安装脚本:

export K3S_URL=https://<主节点IP>:6443
export K3S_TOKEN=上一步获取的token
curl -sfL https://get.k3s.io | sh -

服务启动后,该节点会自动注册为 Agent 节点。在主节点上运行 kubectl get nodes 即可看到新节点出现,并且标签中会显示 node-role.kubernetes.io/agent

常用配置选项

K3s 提供了丰富的安装时配置参数,可以通过环境变量或配置文件指定。以下是一些常用示例:

  • 禁用 Traefik:如果你计划使用其他 Ingress Controller,可在安装脚本中加上 INSTALL_K3S_EXEC="--disable traefik"
  • 使用外部数据库(用于 HA 模式):
    curl -sfL https://get.k3s.io | sh -s - server --datastore-endpoint="mysql://user:pass@tcp(ip:3306)/dbname"
    
  • 自定义 Pod CIDR 或 Service CIDR--cluster-cidr 10.42.0.0/16--service-cidr 10.43.0.0/16
  • 开启嵌入式 etcd 的 HA 模式:至少需要三个节点,每个节点安装时指定 server--cluster-init

升级 K3s

K3s 支持原地升级。只需再次运行安装脚本,它会自动检测并升级到最新稳定版,同时保持集群数据完整:

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

如需升级到特定版本,可通过环境变量指定:

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.28.5+k3s1 sh -