1.k3s一个master一个slave安装
机器规划(2 台虚拟机, CentOS‑9 )
| 主机名 | IP | 角色 |
|---|---|---|
| k3s‑server | 192.168.118.100 | Server(控制平面,master) |
| k3s‑worker01 | 192.168.122.101 | Agent(worker 工作节点) |
- 关闭防火墙(测试环境;生产环境需要放行端口)
# Ubuntu ufw disable # CentOS/RHEL systemctl stop firewalld systemctl disable firewalld- 关闭 swap!k8s 系产品必须关闭 swap
swapoff -a #临时关闭swap sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab #永久关闭- 设置主机名(分别在对应机器设置)
# server节点执行 hostnamectl set-hostname k3s-server # worker节点执行 hostnamectl set-hostname k3s-worker01- 时间同步,系统时间保持一致
timedatectl set-ntp trueK3s 默认自带 containerd 容器运行时,不用手动装 docker。
步骤 1:部署 K3s Server(控制节点,192.168.122.10 上执行)
官方一键安装脚本。
curl -sfL https://get.k3s.io | sh -加速一键安装脚本(推荐)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -执行完脚本之后:
- k3s 服务自动启动
systemctl status k3s - kubeconfig 配置文件自动生成:
/etc/rancher/k3s/k3s.yaml - 获取 node‑token!worker 加入集群需要这个 token,非常重要
cat /var/lib/rancher/k3s/server/node-token复制输出的一长串 token 字符串,保存下来,后面 worker 要用。
✨ 在 server 节点,kubectl 已经直接可用!k3s 内置 kubectl 命令,不用单独装
# 验证节点,刚装完只有server一个节点 kubectl get nodes此时状态应该 Ready。
补充说明:默认 k3s server 内置嵌入式 sqlite 数据库(单 master 场景);多 master 高可用才需要外置 etcd。我们本节课就单 master。
🚀 步骤 2:部署 K3s Agent(worker 工作节点,192.168.122.11 机器上执行)
worker 机器上执行安装脚本,需要传入两个环境变量
K3S_URL指定 server 节点地址https://192.168.118.100:6443K3S_TOKEN就是刚才 server 拿到的 node‑token
官方脚本
# 替换下面IP和token为你自己环境的值 curl -sfL https://get.k3s.io | K3S_URL=https://192.168.118.100:6443 K3S_TOKEN="你的node-token字符串" sh -加速脚本(推荐)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.118.100:6443 K3S_TOKEN=K107c36d4ba7f53e3ddd030016525bb7ec5be55c5be981aae97c3806587724d6eb2::server:ca69e6133590fe25261005c225ad06c2 sh -worker 节点安装完之后,服务名字是k3s‑agent
systemctl status k3s-agent✅ 步骤 3:回到 server 节点验证整个集群
在 k3s‑server 执行
kubectl get nodes预期输出会看到两台节点,STATUS 都是 Ready。
NAME STATUS ROLES AGE VERSION k3s-server Ready control-plane,master 15m v1.30.x+k3s1 k3s-worker01 Ready <none> 3m v1.30.x+k3s1再看系统 pod 是否全部 running
kubectl get pods -n kube-systemkube‑system 里面跑 traefik (ingress)、local‑path‑provisioner (本地存储)、coredns 等 k3s 自带组件。全部 Running 代表集群安装成功!
加速地址(所有机器都要做)
sudo mkdir -p /etc/rancher/k3s sudo cat > /etc/rancher/k3s/registries.yaml << 'EOF' mirrors: docker.io: endpoint: - "https://docker.m.daocloud.io" - "https://dockerproxy.com" - "https://docker.nju.edu.cn" - "https://registry-1.docker.io" rancher: endpoint: - "https://docker.m.daocloud.io" EOF sudo systemctl restart k3s systemctl restart k3s-agentsudo mkdir -p /etc/rancher/k3s sudo cat > /etc/rancher/k3s/registries.yaml << EOF mirrors: docker.io: endpoint: - "https://docker.mirrors.ustc.edu.cn" - "https://hub-mirror.c.163.com" - "https://mirror.baidubce.com" rancher: endpoint: - "https://docker.mirrors.ustc.edu.cn" EOF sudo systemctl restart k3s systemctl restart k3s-agentHELM学习
👉Helm 就是 Kubernetes 的包管理器,类似 Ubuntu apt、Centos yum。
基础名词
- Helm Chart就是软件安装包;把一整套 k8s 资源 yaml 打包。 Chart 里面包含:一堆模板 yaml + values.yaml(配置参数文件)。 模板里面留占位符,安装的时候填入自定义参数渲染出最终 yaml。
- values.yaml自定义配置文件!不要直接改模板!修改 values 来覆盖参数。
安装 Chart 时,可以改副本数、镜像版本、存储类、资源限制,全部在 values 写。
- Release(发布实例)在集群里面每一次 helm 安装就生成一个 Release; 同一个 Chart 可以在集群装多份,每一份就是独立 Release,名字不一样。
💡注意:helm本地客户端工具;k3s 已经内置 helm,不需要额外安装 helm 二进制。
在 K3s 节点或管理机上安装Helm v3 CLI,推荐用官方脚本,简单可靠。
方法一:使用官方安装脚本(推荐)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash安装完成后验证:
helm version先用社区维护的国内镜像源
添加 itboon 镜像源(国内可用)
helm repo add bitnami https://helm-charts.itboon.top/bitnami --force-update helm repo update