首页 > 解决方案 > 污染 Kubernetes 实时集群中的节点

问题描述

如何使用 YAML 文件实现相同的命令,以便我可以执行kubectl apply -f?下面的命令有效,但我不知道如何通过清单文件使用它。

$ kubectl taint nodes \
          172.4.5.2-3a1d4eeb \
          kops.k8s.io/instancegroup=loadbalancer \
          NoSchedule

标签: kuberneteskubectl

解决方案


使用该-o yaml选项并保存生成的 YAML 文件并确保删除状态和一些额外的东西,这将应用 taint,但为您提供以后可以用来执行的 yaml,kubectl apply -f并将其保存到版本控制(即使您从命令行创建资源,然后获取 yaml 并应用它,它不会重新创建资源,所以很好)

注意:大多数命令支持--dry-run,只会生成 yaml 而不会创建资源,但在这种情况下,我无法使用--dry-run,可能是该命令不支持该标志。

C02W84XMHTD5:~ iahmad$ kubectl taint node minikube dedicated=foo:PreferNoSchedule -o yaml
apiVersion: v1
kind: Node
metadata:
  annotations:
    node.alpha.kubernetes.io/ttl: "0"
    volumes.kubernetes.io/controller-managed-attach-detach: "true"
  creationTimestamp: 2018-10-16T21:44:03Z
  labels:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: linux
    kubernetes.io/hostname: minikube
    node-role.kubernetes.io/master: ""
  name: minikube
  resourceVersion: "291136"
  selfLink: /api/v1/nodes/minikube
  uid: 99a1a304-d18c-11e8-9334-f2cf3c1f0864
spec:
  externalID: minikube
  taints:
  - effect: PreferNoSchedule
    key: dedicated
    value: foo

然后将 yaml 与 kubectl apply 一起使用:

apiVersion: v1
kind: Node
metadata:
  name: minikube
spec:
  taints:
  - effect: PreferNoSchedule
    key: dedicated
    value: foo

推荐阅读