HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • 概览

    • K8s 实战学习实验室
    • 服务访问清单
    • K8s-Lab 学习总纲、仓库评估与专家路线图
  • 课程正文

    • 环境验证与第一课:认识你的真实集群
    • 第二课:kubectl apply 之后,到底发生了什么
    • 第三课:调度器如何选节点,为什么 Pod 会 Pending
    • 第四课:Kubernetes 网络、协议分层、VXLAN/IPIP/WireGuard 原理与排障
    • 第五课:NetworkPolicy、零信任网络与流量边界
    • 第六课:身份、认证、授权、准入与 ServiceAccount / RBAC 原理
    • 第七课:ConfigMap 与 Secret 注入模型、更新机制与安全边界
    • 第八课:存储持久化、PV / PVC / StorageClass 与 NFS 原理
    • 第九课:StatefulSet、Headless Service、稳定身份与存储原理
    • 第十课:探针、滚动更新、优雅终止与 PDB 原理
    • 第十一课:requests / limits、QoS、OOM 与驱逐原理
    • 第十二课:HPA、自动扩缩容、指标链路与副本伸缩原理
    • 第十三课:Service、EndpointSlice、kube-proxy、CoreDNS 与服务发现原理
    • 第十四课:Ingress-nginx、反向代理、Host / Path、NodePort 与北南向流量原理
    • 第十五课:HTTPS、TLS、SNI、证书信任与 Ingress 终止原理
    • 第十六课:cert-manager、Ingress 自动签发、证书生命周期与 ACME 工作流原理
    • 第十七课:ACME、Let's Encrypt、HTTP-01 / DNS-01、Orders / Challenges 与生产限制原理
    • 第十八课:大模型全生态,从数据到训练到部署到治理原理
    • 第十九课:大模型数据集、清洗、标注、切分、版本管理与质量治理原理
    • 第二十课:大模型训练、SFT、LoRA、Checkpoint、Adapter 与模型产物原理
    • 第二十一课:大模型推理、量化、KV Cache、vLLM、吞吐/延迟与部署发布链路原理
  • 实验操作记录

    • 本次仓库审查操作记录与命令原理
    • 本轮操作记录:环境验证、集群基线盘点与故障样本采集
    • 本轮操作记录:kubectl apply 主链路实验
    • 本轮操作记录:调度实验与 Pending 排查
    • 本轮操作记录:Kubernetes 网络原理、协议对比与调试实验
    • 本轮操作记录:NetworkPolicy 与零信任网络实验
    • 本轮操作记录:身份、认证、授权、准入实验
    • 本轮操作记录:ConfigMap 与 Secret 注入、更新与安全边界实验
    • 本轮操作记录:存储持久化、PV / PVC / StorageClass 与 NFS 实验
    • 本轮操作记录:StatefulSet、Headless Service 与稳定身份实验
    • 本轮操作记录:探针、滚动更新、优雅终止与 PDB 实验
    • 本轮操作记录:资源模型、QoS、OOM 与 CPU 节流实验
    • 本轮操作记录:HPA 自动扩缩容实验
    • 本轮操作记录:Service、EndpointSlice、CoreDNS 与服务发现排障实验
    • 本轮操作记录:Ingress-nginx、NodePort 与北南向流量实验
    • 本轮操作记录:HTTPS、TLS、自签证书与 Ingress 实验
    • 本轮操作记录:cert-manager 安装、CA 签发与 Ingress 自动证书实验
    • 本轮操作记录:ACME staging、HTTP-01 失败样本与排障实验
    • 本轮操作记录:大模型全生态与基础原理科普文撰写
    • 本轮操作记录:大模型数据集样本与治理文档编写
    • 本轮操作记录:大模型训练与模型产物概念文撰写
    • 本轮操作记录:大模型推理与服务发布概念文撰写

节点标签与本机访问配置

节点标签(Labels)

为什么要给节点打标签?

标签是 K8s 中最重要的组织机制。通过标签你可以:

  • 调度控制: "这个 Pod 只能跑在 HK 节点" → nodeSelector: topology.kubernetes.io/region: hk
  • 拓扑感知: "3 个副本分散到不同 zone" → topologySpreadConstraints
  • 资源分类: "GPU 任务只去有 GPU 的节点" → resources.limits: nvidia.com/gpu: 1

我们的标签方案

# Master (LA)
kubectl label node us480851516617a \
  topology.kubernetes.io/region=la \
  topology.kubernetes.io/zone=la-1

# Worker-1 (LA, 有 VPN)
kubectl label node us590068728056 \
  topology.kubernetes.io/region=la \
  topology.kubernetes.io/zone=la-1 \
  workload=general \
  vpn-active=true          # 标记有 VPN 运行,Ingress 避开

# Worker-2 (LA, 干净)
kubectl label node cp-3 \
  topology.kubernetes.io/region=la \
  topology.kubernetes.io/zone=la-2 \  # 不同 zone,模拟多可用区
  workload=general

# Worker-3 (HK, 小配置)
kubectl label node hk652699382121 \
  topology.kubernetes.io/region=hk \
  topology.kubernetes.io/zone=hk-1 \
  tier=edge                # 边缘节点

# Worker-4 (HK, 大磁盘)
kubectl label node wk-1 \
  topology.kubernetes.io/region=hk \
  topology.kubernetes.io/zone=hk-1 \
  tier=storage \
  storage=large            # NFS Server、监控存储放这里

标签命名规范

前缀含义示例
topology.kubernetes.io/K8s 官方拓扑标签region, zone
node.kubernetes.io/节点特性instance-type
无前缀自定义workload, tier, storage

面试考点: topology.kubernetes.io/region 和 topology.kubernetes.io/zone 是 K8s 标准标签,被 TopologySpreadConstraints 和云厂商的 CSI 驱动识别。自定义标签可以用任意 key。

Master 的 Taint

# kubeadm init 自动添加了这个 Taint:
# node-role.kubernetes.io/control-plane:NoSchedule
#
# 含义:除非 Pod 显式 tolerate 这个 taint,否则不会被调度到 Master
# 这是生产最佳实践——Master 只跑控制面组件

本机 kubectl 配置

kubeconfig 文件包含:

  • cluster — API Server 地址 + CA 证书
  • user — 认证凭据(证书或 token)
  • context — cluster + user 的组合
# 从 Master 拷贝到本机
scp root@107.148.176.193:/etc/kubernetes/admin.conf ~/.kube/config-k8s-lab

# API Server 地址改为公网 IP(WireGuard IP 本机不可达)
sed -i '' 's|https://10.10.0.1:6443|https://107.148.176.193:6443|' ~/.kube/config-k8s-lab

# 使用
export KUBECONFIG=~/.kube/config-k8s-lab
kubectl get nodes

安全提醒: admin.conf 是集群最高权限(cluster-admin)。生产环境中不应该把 admin 凭据分发给所有人,而是为每个用户/团队创建独立的 ServiceAccount + RBAC 权限。

最终集群状态

NAME              STATUS   ROLES           IP         位置   标签
us480851516617a   Ready    control-plane   10.10.0.1  LA     region=la, zone=la-1
us590068728056    Ready    worker          10.10.0.2  LA     region=la, zone=la-1, vpn-active
cp-3              Ready    worker          10.10.0.3  LA     region=la, zone=la-2
hk652699382121    Ready    worker          10.10.0.4  HK     region=hk, zone=hk-1, tier=edge
wk-1              Ready    worker          10.10.0.5  HK     region=hk, zone=hk-1, tier=storage

Phase 0 完成。集群已就绪,可以开始部署工作负载。

→ Phase 1: 核心基础