Repository Reading Site
节点标签与本机访问配置
标签是 K8s 中最重要的组织机制。通过标签你可以: | 前缀 | 含义 | 示例 | |------|------|------| | `topology.kubernetes.io/` | K8s 官方拓扑标签 | region, zone | | `node.kubernetes.io/` | 节点特性 | instance-type | | 无前缀
节点标签与本机访问配置
节点标签(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 完成。集群已就绪,可以开始部署工作负载。