728x90
반응형
Practice Test - Manual Scheduling
Pod 생성 후 Pending 원인 찾기
- schedule pod가 보이지 않음
$ k get po -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-787d4945fb-hrs5c 1/1 Running 0 4m
coredns-787d4945fb-qwttb 1/1 Running 0 4m
etcd-controlplane 1/1 Running 0 4m16s
kube-apiserver-controlplane 1/1 Running 0 4m18s
kube-controller-manager-controlplane 1/1 Running 0 4m13s
kube-proxy-dfpt6 1/1 Running 0 3m45s
kube-proxy-krtw5 1/1 Running 0 4m
- Pod yaml 파일에 nodeName을 정의하여 노드를 지정함
---
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
nodeName: node01
- Pod가 배포될 Node를 바꾸기 위해서는 Pod 재생성이 필요함
$ k replace --force -f nginx.yaml
Practice Test - Labels and Selectors
- Label : 각 개체에 추가하는 속성
- Selector : Labels을 사용하여 필터링할 조건을 명시
- Annotation : 정보 수집 목적(이름, 버전, 연락처 등)
- ReplicaSet, Service 등에서 Selector를 통해 Pod를 묶음(연결)
$ k get po --selector='env=dev'
$ k get po --selector bu=finance --no-headers | wc -l
$ k get all --selector='env=prod' --no-headers=true | wc -l
$ k get po --selector='env=prod,bu=finance,tier=frontend'
- ReplicaSet 생성 yaml 수정하기
[수정 전]
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-1
spec:
replicas: 2
selector:
matchLabels:
tier: front-end
template:
metadata:
labels:
tier: nginx
spec:
containers:
- name: nginx
image: nginx
[오류 메세지] matchLabels와 일치하는 labels가 없음
$ k apply -f replicaset-definition-1.yaml
The ReplicaSet "replicaset-1" is invalid: spec.template.metadata.labels: Invalid value: map[string]string{"tier":"nginx"}: `selector` does not match template `labels`
[수정 후]
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: replicaset-1
spec:
replicas: 2
selector:
matchLabels:
tier: front-end
template:
metadata:
labels:
tier: front-end
spec:
containers:
- name: nginx
image: nginx
Practice Test - Taints and Tolerations
- Taints : Node에 설정
- taint-effect (pod에 미치는 영향)
- NoSchedule
- PreferNoSchedule
- NoExcute : 기존에 생성된 부적합 pod를 evict 시킴 (해당 pod는 삭제)
- taint-effect (pod에 미치는 영향)
- Tolerations : Pod에 설정
Pod가 Node에 배치될 때 고려하는 조건 중 하나
특정 Node에서 특정 Pod만 올라갈 수 있게 제한을 둘 수 있음
Pod에 Toleration이 적합하게 있어도 Taint가 있는 node에만 올라가진 않음
Master Node에는 Taint가 자동으로 설정되어 있음
- Taint :
$ k describe no node01 | grep -i taint
## 명령어 사용법 확인
$ k taint -h
$ k taint no node01 spray=mortein:NoSchedule
## 노드 taint 제거
$ k taint no controlplane node-role.kubernetes.io/control-plane:NoSchedule-
- Taint가 설정된 Node에 배포될 수 있는 Pod 생성 yaml :
## toleration 설정용 pod 템플릿 생성
$ k run bee --image=nginx --dry-run=client -o yaml > bee.yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: bee
name: bee
spec:
containers:
- image: nginx
name: bee
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
tolerations:
- key: "spray"
operator: "Equal"
value: "mortein"
effect: "NoSchedule"
status: {}
참고 자료 : https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
728x90
'기타 > 자격증' 카테고리의 다른 글
[CKA][실습] 3. Logging & Monitoring (0) | 2023.02.11 |
---|---|
[CKA][실습] 2. Scheduling (2) (0) | 2023.02.11 |
[CKA][실습] 1. Core Concepts (2) (0) | 2023.02.05 |
[CKA][실습] 1. Core Concepts (0) | 2023.02.04 |
AWS Solutions Architect - Associate 시험 자료 및 후기 (0) | 2019.10.23 |