Ingress, kube-dns

장동민·2022년 8월 1일
0

CKA 자격증 준비

목록 보기
10/13

1. Ingress

  • L7 스위치 역할을 논리적으로 수행

  • 클러스터로 접근하는 URL 별로 다른 서비스에 트래픽을 분산

  • Kubernetes Ingress의 기능

    • Service에 외부 URL을 제공
    • 트래픽을 로드밸런싱
    • SSL 인증서 처리
    • Virtual hosting을 지정

※ 문제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
  1. 작업 클러스터 확인

  1. 이름이 ingress-nginx인 namespace 조회

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

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

  1. yaml 파일 생성 및 편집 실행

  1. Ingress 정보 작성 후 저장

  1. yaml 파일 apply 후 ingress 조회

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

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

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


2. Core DNS

  • 쿠버네티스 클러스터에서 사용하는 DNS

  • 클러스터 내의 모든 Service에는 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
  1. 작업 클러스터 확인

  1. 이름이 web이라는 deployment 생성

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

  1. 만들었던 deployment와 service 조회

  1. 임시로 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 파일에 기록합니다.
  1. 작업 클러스터 확인

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

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

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

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

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

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

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

profile
나만의 데이터베이스

0개의 댓글