쿠버네스티는 설치할 때마다 새로워요.
hw가 문제일 때도 있고, kernel 버전이 안 맞을 때도 있죠
하지만 대부분의 절망 포인트는 네트워크 더라고요...
pod안에서 외부 dns 접근 못하던 문제를 어떻게 우회해서 해결했는지 정리했습니다
예상 독자는 다음과 같아요
- 온프렘 환경에서 고군분투 쿠버를 설치하시는 분들
- 네트워크 잘 모르는데 쿠버 설치하시는 분들
- 저를 불쌍히 여기실 수 있는 분들
문제: pod 안에서 dns 를 찾지 못함
이번에는 새로운 네트워크 망에 k8s cluster를 설치하는 작업을 했어요
그런데 이상하게 서버 몇대가, 회사 DNS에 접근을 잘 못하더라고요.
12대 중 2대가 접근이 되지 않아서 /etc/hosts에 특정 host를 명시해줬어요
불안한 마음에 k8s 설치하고 busybox 띄워서 nslookup/ping/telnet 해봤는데 응답이 없어요 ㅜ
hostalias로 명시하고 들어가니 접근은 가능하더라고요.
3일 정도 붙잡고 있다가, 일단 마침표 찍는 것이 우선이기에 다른 방식들을 찾아봤어요.
후보 1: k8s pod 안에 hostalias로 host와 ip를 명시하자
처음에는 이거로 하려했어요.
어떤 host에 접근해야하는지 명확하게 알 수 있어, 관리가 쉬울 것 같았기 때문이죠
jupyterhub 와 sparkapplication에 모두 hostalias를 사용할 수 있어요
https://artifacthub.io/packages/helm/riftbit/jupyterhub
https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/pull/1133
하지만 Jupyterhub에서 실행하는 spark_submit의 executor에 hostalias를 전달할 방법이 없었어요
GPT에서 알려준대로 해봤는데 다 안되더라고요.
오픈은 해야하니까 다른 방법을 찾아봤어요
후보 2: coredns configmap에 박아두자
GPT 에 물어보니까 coredns의 configmap에 넣으라하더라고요.
시키는대로 hosts configmap에 추가하니 pod 내부에서 ip 접근이 가능했어요
```
hosts {
10.***.66.*** custom.custom.com
}
```
마무리
정석의 방법은 아니지만, 저처럼 일단 해결해야하는 분들이 도움을 받으셧으면 좋겠어요.
쿠버 네트워크 이슈 글을 쓰다보니까 급 슬퍼지는군요

작년 연말에는 인프라팀이 서버 재시작했는데, pod 내부에서 외부 dns 못 붙은 적이 있어요
`net.ipv4.ip_forward = 0` 설정이 초기화되서 그랬던 건데, 원인 찾느라 한참 걸렸어요.
궁금하신 분은 아래 링크 보시면 절규에 가까운 장애 대응글이 정리되어 있어요
https://mightytedkim.tistory.com/180
참고
https://mightytedkim.tistory.com/43
Kubernetes) k8s와 Airflow 이용한 spark작업_SparkKubernetesOperator
요약 1. kubenetes 환경에서 airflow를 이용해 spark_submit을 함 2. SparkKubernetesOpertor(SKO)를 선택함 개요 상황 쿠버네티스 클러스터 환경에서 spark_submit 관리 필요 후보 (3가지) KubernetePodOperator(KPO) : dag SparkA
mightytedkim.tistory.com
https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/docs/user-guide.md
GitHub - GoogleCloudPlatform/spark-on-k8s-operator: Kubernetes operator for managing the lifecycle of Apache Spark applications
Kubernetes operator for managing the lifecycle of Apache Spark applications on Kubernetes. - GitHub - GoogleCloudPlatform/spark-on-k8s-operator: Kubernetes operator for managing the lifecycle of A...
github.com
https://artifacthub.io/packages/helm/riftbit/jupyterhub
jupyterhub 0.1.19 · riftbit/riftbit
JupyterHub brings the power of notebooks to groups of users. It gives users access to computational environments and resources without burdening the users with installation and maintenance tasks
artifacthub.io
'기타 > K8S' 카테고리의 다른 글
kubernetes) k8s dashboard limited acess 설정하기_readonly (0) | 2023.04.23 |
---|---|
k8s) worker 재시작했을 때 not ready 인 경우 (0) | 2023.03.09 |
K8S) 인증서 갱신하기 (0) | 2023.02.26 |
mc)mc cp와 mc mirror 차이 (1) | 2023.01.09 |
Kubernetes) 인프라팀의 network 초기화로 비상걸린썰_온프렘,ip_forward (0) | 2022.12.29 |