Kubernetes

hdfs-k8s helm deploy

JungGwig 2019. 11. 4. 17:57

zookeeper 변경

datanode, namenode { statefulset, deployment, daemonset : apiversion change }

spec.selector.matchLabels.app = spec.template.metadata.labels.app 작성

 

Master node Taint

 

Taints / Tolerations ?

 

Kubernetes Node에는 Taint 설정을 통해 해당 노드에 Pod가 할당 또는 실행되는 것을 막을 수 있다. 하지만 Pod의 정의에 Toleration을 설정하면 Taint 설정되어 있는 노드에도 Pod를 할당할 수 있다. Master 노드는 기본적으로 Taint 설정이 되어 있다.

Kubectl describe node master 명령어 입력시 출력

yaml file에서 spec.tolerations 항목에 node-role.kubernetes.io/master 라는 키로 설정된 NoSchedule 효과를 Toleration하겠다는 설정 시 master node에 pod을 할당하는 것이 가능하다. Toleration 설정을 했다고 taint 설정되어 있는 노드에 Pod가 할당되는 것이 아니라 taint 설정되어 있는 노드 또한 할당 가능한 노드로서 선정된다는 의미이다.

 

Taints / Toleration 기본 사용 방법

$ kubectl taint nodes <NODE_NAME> key=value:NoSchedule
// key-value라는 키와 값으로 NoSchedule 설정

$ kubectl taint nodes <NODE_NAME> key:NoSchedule
// key라는 키의 NoSchedule Taints 해제

container spec에서 spec.tolerations 의 구성은 "key", "operator", "value", "effect" 로 되어있다. effect에는 NoSchedule 외에도 NoExecute, PreferNoSchedule를 사용할 수 있다.

 

PreferNoSchedule은 NoSchedule과 거의 동일한 기능을 하지만 NoSchedule에 비해 다소 가벼운 제한이기 때문에, 여러 이유로 인해 결국 Pod이 할당 될 수 있다.

NoExecute는 NoSchedule과 다른 기능을 한다. 이미 Pod가 할당된 노드에 대해 NoSchedule을 설정하더라도 실행 중인 Pod는 계속 실행되지만, NoExecute를 설정할 경우 기존에 실행 중인 Pod가 종료된 뒤 다른 노드에 할당되게 된다.

 

 

Master Node에 namenode 할당하기