Search code examples
kubernetesdevopsreleasekubernetes-helm

Deploy helm on master node with taints labels


Hi I am trying to initialize helm tiller on master node.

Master node is:

Name:               ip-10-3-196-251.ec2.internal
Roles:              master
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/instance-type=m4.xlarge
                    beta.kubernetes.io/os=linux
                    failure-domain.beta.kubernetes.io/region=us-east-1
                    failure-domain.beta.kubernetes.io/zone=us-east-1a
                    kubernetes.io/role=master
Annotations:        node.alpha.kubernetes.io/ttl=0
                    scheduler.alpha.kubernetes.io/taints=[{"key":"dedicated","value":"master","effect":"NoSchedule"}]
                    volumes.kubernetes.io/controller-managed-attach-detach=true
CreationTimestamp:  Mon, 01 Jun 2020 12:50:53 +0200
Taints:             node-role.kubernetes.io/master=true:NoSchedule
Unschedulable:      false

...
...
...

I am running this:

helm init \
    --history-max=1000 \
    --service-account tiller \
    --node-selectors "kubernetes.io/role=master" \
    --override spec.template.spec.tolerations[0].key=node-role.kubernetes.io/master \
    --override spec.template.spec.tolerations[0].effect=NoSchedule \
    --skip-refresh \
    --upgrade

But when I describe the pod i am getting still

Events:
  Type     Reason             Age                From                Message
  ----     ------             ----               ----                -------
  Normal   NotTriggerScaleUp  1m (x86 over 16m)  cluster-autoscaler  pod didn't trigger scale-up (it wouldn't fit if a new node is added): 9 node(s) didn't match node selector
  Warning  FailedScheduling   1m (x57 over 17m)  default-scheduler   0/11 nodes are available: 1 Insufficient cpu, 3 PodToleratesNodeTaints, 8 MatchNodeSelector.e

Do you know what is wrong?


Solution

  • Master node has taint node-role.kubernetes.io/master=true:NoSchedule but you have given node-role.kubernetes.io/master:NoSchedule in the command.

    Use below command

    helm init \
        --history-max=1000 \
        --service-account tiller \
        --node-selectors "kubernetes.io/role=master" \
        --override spec.template.spec.tolerations[0].key=node-role.kubernetes.io/master \
        --override spec.template.spec.tolerations[0].operator=Equal \
        --override spec.template.spec.tolerations[0].value=true \
        --override spec.template.spec.tolerations[0].effect=NoSchedule \
        --skip-refresh \
        --upgrade