안녕하세요, 쯀리입니다.
Udemy에서 풀어보는 Quiz들을 답과 함께 풀어볼건데, 같이 가실까요?
PODs
문제1. How many pods exist on the system? 시스템에 몇 개의 파드가 존재하나요?
kubectl get pods
기본적으로 pod의 종류를 확인할때 사용하는 명령어입니다.
문제 2. Create a new pod with the nginx image.
Image name: nginx
2-1. 첫번째 방법 : run (간단한 명령어로 실행할 수 있을때 사용합니다. )
kubectl run nginx --image nginx
2-2. 두번째 방법: yaml생성
nginx.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
해당파일 적용
kubectl apply -f nginx-pod.yaml
3. What is the image used to create the new pods?
You must look at one of the new pods in detail to figure this out.
describe 명령어
kubectl describe <resource type> <resoure 명>
kubectl describe pod [pod명]
4. Which nodes are these pods placed on?
You must look at all the pods in detail to figure this out.
pod에 대한 정보 모두 확인하기
kubectl get pods -o wide
5. How many containers are part of the pod webapp?
kubectl describe pods webapp
7. What images are used in the new webapp pod? nginx와 agentx입니다
8. What is the state of the container agentx in the pod webapp?
Wait for it to finish the ContainerCreating state
Error & Waiting
9. Why do you think the container agentx in pod webapp is in error?
Try to figure it out from the events section of the pod.
위에 보면 dockerhub에 이미지가 없다고 나옵니다. 에러 원인: Failed to pull image ”agentx”
10. What does the READY column in the output of the kubectl get pods command indicate?Ready부분에 나오는 숫자가 어떤의미인지?
Running Coneainers in POD / Total Containers in POD
webapp을 보면 2개 컨테이너중에 1개만 실행되는 것을 우리는 유추해볼 수 있습니다.
11. Delete the webapp Pod.
kubectl delete pod webapp
12. Create a new pod with the name redis and the image redis123.
Use a pod-definition YAML file. And yes the image name is wrong!
Name: redis
Image name: redis123
kubectl run redis --image=redis123 --dry-run -o yaml
// redis-yml.yaml로 yaml파일 생성
kubectl run redis --image=redis123 --dry-run -o yaml > redis-yml.yaml
//yaml로 만들어진 파일 실행k
kubectl apply -f redis-yaml.yaml
13. Now change the image on this pod to redis. Once done, the pod should be in a running state.
첫번째 방법 : kubectl edit 방법
kubectl edit pod redis
//image수정
...
spec:
containers:
- args:
- redis
image: redis
name: pod
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
...
2. yaml 파일이 있다면 수정 후 pod삭제 후 다시 apply
ReplicaSets
1. How many ReplicaSets exist on the system?
kubectl get rs
kubectl get replicaset
2. How many PODs are DESIRED in the new-replica-set?
4개가 필요하다고 적혀있습니다.
3. What is the image used to create the pods in the new-replica-set?
이번에도 좀 넓게 볼까요?
kubectl get rs -o wide
images 부분은 busybox로 되어있네요
4. How many PODs are READY in the new-replica-set?
위에서 보면 READY상태인 POD는 0개입니다.
5. Why do you think the PODs are not ready? 4개의 POD를 확인해보겠습니다.
kubectl get pods
//아마 전부 다 ImagePullBackOff 상태이겠네요
kubectl describe pod new-replica-set-nsf9k
이미지를 불러올 수 없다고 써져 있습니다.
6. Delete one PODs.
7. How many PODs exist now?POD가 하나가 삭제되면 자동으로 하나를 더 생성해서 4개의 POD를 만드는 것을 볼 수 있습니다.
kubectl delete pod new-replica-set-nsf9k
kubectl get pods
8. Why are there still 4 PODs, even after you deleted one?
ReplicaSet은 원하는 수의 POD가 항상 실행되도록 보장합니다.
ReplicaSet ensures that desired number of PODs always run
9. Create a ReplicaSet using the replicaset-definition-1.yaml file located at /root/.
There is an issue with the file, so try to fix it.
우선 실행해볼게요.
kubectl apply -f replicaset-definition-1.yaml
apiVersion이 잘못되었으니 변경하고 다시 실행해 주겠습니다.
12. Create a ReplicaSet using the replicaset-definition-1.yaml file located at /root/.
There is an issue with the file, so try to fix it.
우선 먼저 실행해봅시다.
라벨에 문제가 있는 것 같아요
둘이 일치해야하는데 다르기 때문에 selector가 label을 못불러와서 확인이 어렵기 때문입니다.
...
spec:
replicas: 2
selector:
matchLabels:
tier: nginx
template:
metadata:
labels:
tier: nginx
...
//yaml 다시 돌려줍니다
kubectl apply -f replicaset-definition-2.yaml
13. Delete the two newly created ReplicaSets - replicaset-1 and replicaset-2
kubectl delete rs replicaset-1
kubectl delete rs replicaset-2
//또는
kubectl delete rs replicaset-1 replicaset-2
14. Fix the original replica set new-replica-set to use the correct busybox image.
busybox777로 되어있는 부분을 busybox로 변경해줍니다.
kubectl edit rs new-replica-set
...
spec:
containers:
- command:
- sh
- -c
- echo Hello Kubernetes! && sleep 3600
image: busybox
imagePullPolicy: Always
name: busybox-container
resources: {}
...
❗️k8s특이점은 replicaset을 edit으로 해서 수정하였다고 해도 완벽하게 수정 안되는 경우가 있음
이럴땐 pod를 전부 삭제
kubectl delete pods --all
15. Scale the ReplicaSet to 5 PODs.
Use kubectl scale command or edit the replicaset using kubectl edit replicaset
- scale up 명령어
kubectl scale --replicas=6 replicaset/rs(type) myapp-replicaset(name)
2. kubectl edit
replicas 부분을 6개로 변경
16. Scale the ReplicaSet to 5 PODs. (위와 동일합니다.)
17. Now scale the ReplicaSet down to 2 PODs.
18. Use the kubectl scale command or edit the replicaset using kubectl edit replicaset.
참조
※ Udemy Labs - Certified Kubernetes Administrator with Practice Tests
'IT 잡지식 > DevOps' 카테고리의 다른 글
[CKA] KodeKloud - Manual Scheduling (0) | 2024.06.03 |
---|---|
[CKA] KodeKloud - CoreConcept Deployments와 Namespaces (0) | 2024.05.27 |
[CKA] Kubernetes 개념2 (Replication ControllersVS Replica Set) (0) | 2024.04.02 |
[CKA] CKA를 준비하며 다시잡는 쿠버네티스 개념 (0) | 2024.03.28 |
[K8s] Kubernetes-쿠버네티스란? (0) | 2024.01.02 |