문제 #1 You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts.Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh, the command should use kubectl.Finally write a second command doing the same thing into /opt/course/1/context_default_no_kubectl.sh, but without the..
문제#1 PV및 PVC 생성 및 데이터 읽기/쓰기1) 문제시나리오- PV,PVC 구성하여 Pod가 데이터를 읽고 쓸 수 있도록 설정 (1) PV 생성 - 이름: manual-pv- 스토리지 크기:1Gi- 접근 모드: ReadWriteOnce- 호스트노드의 /mnt/data: 디렉토리를 사용하도록 설정(2) PersistentVolumeClaim - 이름: manual-pvc- 요청 스토리지 크기: 500Mi- 접근 모드: ReadWriteOnce(3) Pod 생성- 이름: test-pod- 볼륨: PVC를 마운트하여, /data경로에서 데이터를 읽고 쓸 수 있도록 설정 - Pod가 실행되면 /data/testfile.txt 파일을 생성하고, 파일에 "Hello from Kubernetes!" 라는 내용을..
1. 문제#1: CoreDNS를 통한 내부 DNS 확인1) 문제시나리오(1) 서비스 생성 - nginx 이미지를 사용하여 Deployment와 ClusterIP 서비스를 생성 - Deployment 이름: nginx-deployment, 서비스 이름: 'nginx-service'(2) DNS 테스트 - 테스트용 Pod를 생성 - 테스트용 Pod에서 nginx-service와 FQDN(nginx-service.default.svc.cluster.local)으로 요청을 보냄 - 요청이 성공적으로 전달되는지 확인 2) 해결과정 (1) Deployment및 Service YAML작성 - nginx-deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: nam..
1. 문제#1 ExternalName 서비스 생성 및 확인 1) 문제 시나리오- 내부 Pod가 외부 DNS이름(example.com)으로 요청을 전달할 수 있도록 ExternalName 서비스를 구성해야 함 (1) ExternalName 서비스 생성 - 서비스 이름은 'external-service'로 설정 - 외부 DNS이름은 example.com으로 설정 (2) 테스트용 Pod생성 - busybox이미지를 사용하여 테스트용 Pod를 생성 - 테스트용 Pod에서 curl명령어를 사용하여 external-service로 요청을 보냄(3) 결과확인- 외부DNS이름으로 요청 전달여부 확인 2) 해결과정(1) ExternalName서비스 YAML 작성#externalname-service.yamlapiVer..
1. 문제#1 Pod간 통신 제한 1) 문제 시나리오(1) Deployment 생성 - frontend와 backend Deployment를 생성 - fronend 2개의 레플리카, backend 1개의 레플리카를 실행 (2) NetworkPolicy생성- frontend Pod만 backend Pod와 통신할 수 있도록 NetworkPolicy를 구성 - 다른 Pod는 backend와 통신할 수 없어야 한다. (3) 결과확인- frontend Pod에서 backend Pod로 요청이 성공적으로 전달되는지 확인 - 다른 Pod(별도의 테스트용 Pod)에서 backend로 요청이 차단되는지 확인 2) 해결과정 (1) Deployment YAML 작성 - frontend deploymentapiVersion..
1. 문제 #1 LB 서비스 및 ExternalTrafficPolicy 설정 1) 시나리오 - 쿠버네티스 클러스터에서 외부 트래픽을 처리하기 위해 로드밸런서 서비스를 구성(1) 로드밸런서 서비스 생성- nginx 이미지를 사용하여 Deployment 생성 - 이름: nginx-deployment- 3개의 레플리카- LB 이름: nginx-loadbalancer - 외부 클라이언트가 서비스의 외부 IP를 통해 HTTP 요청을 보낼 수 있도록 구성 (2) ExternalTrafficPolicy 설정 - LB서비스의 ExternalTrafficPolicy를 Local로 설정하여, 트래픽이 로컬노드에서만 처리되도록 구성 - 각 노드에서 실행 중인 Pod만 트래픽을 처리하도록 보장 (3) 결과 확인 - 외부 IP..
1. 문제#1 1) 문제시나리오(1) 데몬셋 생성 - 클러스터의 모든 노드에서 실행되는 데몬셋을 생성 - 각 노드에서 로그 수집 에이전트(busybox)를 실행하도록 구성- 로그 수집 에이전트는 /var/log 디렉토리의 파일 목록을 10초마다 출력(2) 특정 노드 제외- 데몬셋이 특정 조건(노드 레이블)을 만족하지 않는 노드에서는 실행되지 않도록 설정 - exclude=true 레이블을 가진 노드는 DaemonSet의 대상에서 제외2) 해결 과정 (1) 특정 노드에 레이블 추가 - 클러스터의 모든 노드 확인 kubectl get nodesNAME STATUS ROLES AGE VERSIONnode-a Ready 5d v1.28.0node-b ..
1. 문제#11) 문제 시나리오: - 클러스터에서 Deployment의 CPU 사용량을 기준으로 레플리카 수를 자동으로 조정하는 HPA를 구성해야함 (1) Deployment 생성- stress-ng 이미지를 사용하여 Deploment 생성- 이름: hpa-deployment- 2개의 레플리카 (2) HPA- CPU 사용량이 평균적으로 50%이상일때 레플리카 수를 자동으로 확장하도록 HPA를 구성- 최소 레플리카 수:2, 최대 레플리카 수 5로 설정(3) CPU 부하 생성:- 기존 Pod 내부에서 부하테스트 도구(stress-ng)를 실행하여 CPU 부하를 생성 2) 해결과정 (1) YAML 작성 apiVersion: apps/v1kind: Deploymentmetadata: name: hpa-depl..
1. 문제#1 Sidecar 컨테이너를 활용한 로그 처리 1) 문제 시나리오 (1) Pod 구성- 메인 컨테이너 nginx를 실행하며, HTTP요청을 처리- Sidecar 컨테이너는 busybox이미지를 사용하여 메인 컨테이너의 로그를 /var/log/nginx 디렉토리에서 읽고, 이를 실시간으로 출력 (2) 공유 불륨 설정 - 두 컨테이너는 emptyDir 볼륨을 공유해야 하며, 메인 컨테이너는 로그 데이터를 이 볼륨에 저장 (3) 결과 확인 2) 해결과정(1) YAML작성apiVersion:v1kind: Podmetadata: name: sidecar-podspec: volumes: - name: shared-logs #공유 볼륨 정의 emptyDir: {} #emptyDir 볼륨은 P..
* Topology Spread Constraint: Pod를 클러스터 내에서 균등하게 분산시키거나 특정 조건에 따라 배치하도록 제어하는 데 사용. 1. 문제#1 Pod를 Zone간 균등 분산 1)문제 시나리오(1) 노드 레이블 설정 - 클러스터의 각 노드에 topology.kubernetes.io/zone 레이블을 추가합니다.- node-a: zone-a, node-b:zone-b,node-c: zone-c(2) Deployment 생성 - 이름: 'spread-deployment' - 6개의 replica- 각 Zone('topology.kubernetes.io/zone')에 Pod가 균등하게 배치되도록 설정 - Pod간의 Zone각 차이(maxSkew)는 최대 1로 설정 2)해결과정 (1)노드 ..