Taint 설정 해제 하기
처음 Kubernetes
를 설치하여 Master Node(Leader Node)
휘하에 Worker Node
를 붙였다면, 기본적으로 Pod 들은 Worker Node
에만 올라가도록 설정되어 있습니다.
Master Node(Leader Node)
에도 Pod을 올리고 싶다면 Taint
설정을 해제해야 하는데요.
우선 Taint
설정이 어떻게 되어 있길래 안올라가는지 확인해 봅시다.
kubectl describe nodes ${node_name} |grep Taints
저의 경우에는 다음과 같이 입력합니다.
kubectl describe nodes k8s-master.example.com |grep Taints
이리하면 결과는 다음과 같이 나오게 됩니다.
Taints: node-role.kubernetes.io/control-plane:NoSchedule
보시면 Node자체에 Role이 설정되어 있는걸 볼 수 있습니다.
control-plane이라고 나와있지만, master라고 나와있는 경우도 있을 것입니다.
두 경우 이름에 차이가 있지만 크게 다르지 않습니다.
그러면 이제 해당 기능을 죽여볼까요??
kubectl taint nodes ${node_name} node-role.kubernetes.io/${node-role}:NoSchedule-
Node의 Role의 경우 kubectl get nodes -A
을 통해 ROLES
컬럼을 확인해 보시면 됩니다.
자!! 그럼 다시 한번 저의 경우로 예시를 보여드려야 더 이해가 쉬우시겠죠??
우선 ROLE을 먼저 찾아봅시다.
아래 예시를 보면 ROLES에 control-plane
이 보이시죠?? 저게 우리가 ${node-role}
에 작성해야 하는 부분입니다.
kubectl get nodes -A
# 결과 값
NAME STATUS ROLES AGE VERSION
k8s-master.example.com Ready control-plane 23h v1.30.2
k8s-node1.example.com Ready <none> 23h v1.30.2
k8s-node2.example.com Ready <none> 23h v1.30.2
이제 보든 준비가 끝났습니다. 해당 기능을 죽여보죠.
해당 기능을 제거할때는 마지막에 -
붙여 주면 됩니다.
kubectl taint nodes k8s-master.example.com node-role.kubernetes.io/control-plane:NoSchedule-
Master Node(Leader Node)에 Nginx 올려보기
이젠 준비가 끝났습니다.
그럼 한번 Pod을 올려볼까요???Kubernetes
에서는 노드를 지정해서 해당 Pod을 올릴 수 있습니다.
아래 nginx관련 yaml파일을 참고해 보시죠.
# nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
nodeSelector:
kubernetes.io/hostname: k8s-master.example.com
해당 파일을 실행하 Pod을 띄워보도록 하겠습니다.
kubectl apply -f nginx.yaml
이제 정상적으로 동작하는지 확인해 보면 됩니다.
확인 방법은 두 가지가 있습니다.
두 명령어를 입력후에 Node
컬럼에서 우리가 지정한 nodeSelector
의 Node가 명시되어 있다면 이제 Master Node(Leader Node)
에서도 Pod이 동작한다는 것을 확인 할 수 있습니다.
# 상세하기 모든 정보를 보고 싶은 경우
kubectl describe pod ${pod-name}
# 대략적인 모든 Pod의 정보를 보고 싶은 경우
kubectl get all -o wide
### describe
Name: nginx-pod
Namespace: default
Priority: 0
Service Account: default
Node: k8s-master.example.com/192.168.0.230
Start Time: Thu, 13 Jun 2024 06:29:57 +0000
Labels: app=nginx
### get all
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod/nginx-pod 1/1 Running 0 6m59s 192.57.202.14 k8s-master.example.com <none> <none>
pod/nginx-pod-k8s-master.example.com 1/1 Running 0 7m7s 192.57.202.13 k8s-master.example.com <none> <none>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 24h <none>
참고사항
다시 Pod을 못올리도록 설정하고 싶은 경우
kubectl taint nodes ${node-name} node-role.kubernetes.io=${role}:NoSchedule
'Study > Kubernetes' 카테고리의 다른 글
Kubernetes에서 NFS와 PV,PVC,를 이용한 데이터 관리하기 (0) | 2024.06.27 |
---|---|
kubernetes 환경 구성하기(feat. cri-o, Utuntu 22.04, calico) (0) | 2024.06.23 |
Kubernetes 구성중 Swap Memory를 Off 해야하는 이유!! (0) | 2024.06.23 |
댓글