K8s新手系列之指定Pod调度到指定节点上

### 节点亲和性-混合使用硬性和软性规则
示例:
```csharp
apiVersion: v1
kind: Pod
metadata:
  name: mixed-affinity-pod
spec:
  affinity:
    nodeAffinity:
      # 硬性限制
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: env
            operator: In
            values: ["prod"]
      # 软性限制
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 80
        preference:
          matchExpressions:
          - key: gpu
            operator: Exists
  containers:
  - name: nginx
    image: nginx

nodeName、nodeSelector和节点亲和性的区别

特性 nodeName nodeSelector 节点亲和性(Node Affinity)
调度方式 直接指定节点名称 通过标签匹配节点 通过灵活的规则表达式匹配节点
匹配规则 精确匹配节点名称 精确匹配标签键值对 支持多种操作符(In, NotIn, Exists, Gt, Lt等)
策略类型 硬约束(必须满足) 硬约束(必须满足) 支持硬约束(requiredDuringScheduling)和软约束(preferredDuringScheduling
灵活性 最低(需手动指定节点) 中等(仅支持精确匹配) 最高(支持复杂逻辑和优先级)
语法复杂度 最简单(单字段配置) 较低(标签键值对) 较高(嵌套表达式)
应用场景 调试、特殊需求 简单的标签选择 复杂的调度策略(如跨区域部署、资源优化)