1. Ingress
※ 문제1: Ingress 구성
(참고 URL : https://kubernetes.io/docs/concepts/services-networking/ingress/)
-
작업 클러스터 : k8s
-
ingress-nginx namespace에 nginx 이미지를 app=nginx 레이블을 가지고 실행하는 nginx pod를 구성하세요.
-
현재 appjs-service와 nginx 서비스는 이미 동작 중입니다. 별도 구성이 필요 없습니다.
-
app-ingress.yaml 파일을 생성하고, 다음 조건의 ingress를 구성하세요.
- name: app-ingress
- NODE_PORT:30080/ 접속했을 때 nginx 서비스로 연결
- NODE_PORT:30080/app에 접속했을 때 appjs-service 서비스로 연결
- Ingress 구성에 다음의 annotations을 포함시키세요.
annotations:
kubernetes.io/ingress.class: nginx
- 작업 클러스터 확인

- 이름이 ingress-nginx인 namespace 조회

- 이름이 ingress-nginx인 namespace에 이름이 nginx인 pod 생성 및 이름이 ingress-nginx인 namespace 중 label에 app가 설정된 pod 조회

- 이름이 ingress-nginx인 namespace에서 동작중인 서비스 조회

- yaml 파일 생성 및 편집 실행

- Ingress 정보 작성 후 저장

- yaml 파일 apply 후 ingress 조회

- 이름이 app-ingress인 ingress 자세히 조회(Path 설정 등 확인)

9-1. NODE_PORT:30080/ 접속했을 때 nginx 서비스로 연결 확인

9-2. NODE_PORT:30080/app에 접속했을 때 appjs-service 서비스로 연결 확인

2. Core DNS
svc-name.namespace.svc.cluster.local
- 클러스터에서 동작되는 모든 Pod의 /etc/resolv.conf에는 kube-dns가 namespace로 정의되어 있음
/ # cat /etc/resolv.conf
nameserver 10.96.0.10
search <namespace>.svc.cluster.local svc.cluster.local cluster.local
📌 kube-system namespace의 ClusterIP가 10.96.0.10임

- 특정 Pod에서 service name이나 pod name으로 Access 가능
svc-name.namespace.svc.cluster.local
pod-ip.namespace.pod.cluster.local
3. Core DNS: LAB
- 간단한 web deployment 생성 후 service 구성
- 다른 Pod에서 Domain name 조회 할 수 있는지 TEST
- 작업 클러스터 확인

- 이름이 web이라는 deployment 생성

- 이름이 web이라는 deployment 생성 후 port가 80번인 service 구성

- 만들었던 deployment와 service 조회

- 임시로 dns-test라는 pod를 생성하여 접속 후 앞에 만들었던 deployment의 ClusterIP를 지정하여 nslookup 명령 실행 (Domain name 확인 가능)

※ 문제2: Service and DNS Lookup 구성
(참고 URL : https://kubernetes.io/ko/docs/concepts/services-networking/dns-pod-service/)
- 작업 클러스터 : k8s
- image nginx를 사용하는 resolver pod를 생성하고 resolver-service라는 service를 구성합니다.
- 클러스터 내에서 service와 pod 이름을 조회할 수 있는지 테스트합니다.
- dns 조회에 사용하는 pod 이미지는 busybox이고, service와 pod 이름 조회는 nslookup을 사용합니다.
- service 조회 결과는 /var/CKA2022/nginx.svc에 pod name 조회 결과는 /var/CKA2022/nginx.pod 파일에 기록합니다.
- 작업 클러스터 확인

- image nginx를 사용하는 resolver pod 생성 후 이름이 resolver-service라는 service 구성

- 만든 pod의 IP와 service 구성한 ClusterIP 조회 및 pod와 service 동작 확인

- 임시로 test pod를 생성하여 접속 후 만들었던 Pod의 IP를 가지고 nslookup 명령으로 name 조회

📌 image 버전에 따라 nslookup 명령으로 name 조회가 되는 경우도 있고 되지 않는 경우가 있음(image 버전을 최신 버전으로 설정한 경우)

- Service의 ClusterIP를 가지고 nslookup 명령으로 name 조회

- Pod와 Service의 name 조회한 결과를 각각의 경로에 저장

- 각각의 경로에 저장한 결과 확인
