일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SessionManager 터널링
- 마운트
- InnoDB
- ix is lock
- mysql 아키텍쳐
- innodb구조
- 온라인 ddl
- MySQL
- mysql 엔진
- mysql 구조
- 리눅스
- 밑바닥부터 만드는 운영체제
- ec2
- nandtotetris
- x lock s lock
- 필수 스크립트
- S3 private통신
- s3 sync
- 운용 시 유용한 쿼리
- 도커
- dff
- performance스키마
- innodb 버퍼풀
- 안전하게 테이블 변경
- Terraform
- sessionManager
- 어뎁티브 해시 인덱스
- 밑바닥부터 구현하는 컴퓨팅 시스템
- s3
- BastianHost
- Today
- Total
이것이 점프 투 공작소
쿠버네티스의 DNS 서버와 Pod의 LivenessProbe 을 통한 상태확인 본문
쿠버네티스가 어떻게 리소스간 디스커버리를 하는지 정리해보았습니다!
/etc/hosts
리눅스 시스템에 존재하는 도메인이름을 ip로 변경해주는 파일입니다.
왼쪽은 ip주소 오른쪽은 도메인이름으로 작성됩니다.
도메인 이름으로 요청을 보내게 되면 서버는 가장 먼저 로컬 캐시를 확인 후 /etc/hosts 파일을 찾아 ip 변환작업을 진행합니다.
메모리에 올라가있는 데이터이기에 etc/hosts 파일을 수정했다면 아래 명령어를 통해 network데몬을 재시작 해주어야합니다.
sudo /etc/init.d/networking restart
/etc/resolv.conf
DNS서버 다른말로 Name서버를 설정하는 파일입니다.
로컬에 존재하는 /etc/hosts 파일에 요청한 도메인에 대한 정보가 없다면 /etc/resolv.conf파일에 적힌 DNS서버에 해당 도메인에 대한 ip정보를 요청합니다.
/etc/resolv.conf 파일에 아래와 같이 적혀있다면 자동으로 찾을 도메인 주소가 적혀있는 것 입니다.
telnet www 라고만 요청을 해도 해당 search를 가진 서버에서는 www.naver.com 으로 인식합니다.
search naver.com
1. kube-dns (쿠버네티스의 DNS서버)
쿠버네티스에서는 최초 클러스터가 생성될때 kube-system namespace안 에 kube-dns 라는 리소스가 생성됩니다.
그 중 svc service/kube-dns를 쿠버네티스의 DNS서버로 사용합니다.
생성된 쿠버네티스 서비스들은 각각 resolv.conf 파일의 namespace 부분에 service/kube-dns IP를 가지게되며 이를 통해 서비스간 디스커버리를 할 수 있습니다.
2. 리소스의 etc/resolv.conf 파일 확인
kubectl exec 'pod이름' -n 'namespace이름' -- cat /etc/resolv.conf
위 명령어를 통해 생성된 pod의 resolv.conf 파일을 조회해보면 nameserver에 앞서 조회한 service/kube-dns IP를 확인 할 수 있습니다.
추가로 FQDN은 아래와 같은 형식으로 생성됩니다.
<service-name>.<service-namespace>.svc.cluster.local
3. DNS이름을 이용한 디스커버리 및 요청
kubectl exec <전송을 보내려는 pod이름> -n <전송을 보내려는 pod의 namespace> -- curl -s < 전송받을 서비스의 namespace명 >.<전송을 보내려는 서비스 이름>
'k8s' 카테고리의 다른 글
EKS node-subnet, pod-subnet 분리하는법 (0) | 2023.09.03 |
---|---|
쿠버네티스 리소스 특정 Revision으로 롤백하기 (0) | 2023.05.17 |