Ops 56

node-core-dns 파드란?

K8s에 떠있는 파드 하나에 내부로 접속해서 resolv.conf 파일을 열어보면 다음과 같다. bash-4.4$ cat /etc/resolv.confsearch mongodb.svc.cluster.local svc.cluster.local cluster.local default.svc.cluster.localnameserver 192.254.25.10options ndots:5 kube-proxy는 svc -> pod 트래픽을 이동시킨다. 그러므로 만약 다른 파드로 트래픽을 보내고 싶다면 svc로 트래픽을 보내면 된다. svc의 도메인과 ip 매핑 정보는 CoreDNS에 저장되어 있는데, DNS 쿼리 성능을 높히기 위해, CoreDNS의 캐시를 가지고 있는 파드를 daemonset으로 배포하는데, ..

Ops/Kubernetes 2025.12.31

[Terraform] 테라폼 동작원리 ( + Ansible )

Terraform이 강력한 이유는 tfstate 파일로 인프라를 리소스 단위로 상태 관리를 하기 때문이다. AWS, AZURE 같은 Public Cloud 환경은 여러 리소스 ( VPC, EC2 등 )이 서로 유기적으로 연동되어 있는데, 이를 '코드'로 구현하고 구현된 '상태'를 비교하여 어떤 인프라 요소가 생성, 변경, 삭제 되는지를 예측할 수 있다. 반면 대표적인 또 다른 배포도구인 Ansible은 상태를 관리하지 않는다. 상태를 관리하는 Terraform, 상태를 관리하지 않는 Ansible. 두 도구의 철학은 다르다. Terraform은 비교로 인프라를 관리하고Ansible은 명령으로 인프라를 관리한다. Terraform은내가 원하는 상태는 'EC2가 t3.small이야' 라고 말하면 테라폼..

Ops/CICD 2025.12.26

[Prometheus] Vector와 Scalar란?

Vector는 방향 + 크기, Scalar는 크기 이다. 메트릭에서 '방향'의 개념은 라벨(Label)이다. Vector는 라벨(방향) + 값(크기), Scalar는 값(크기)이다. 나의 경우, K8s 파드의 메모리 사용률을 확인하기 위해 아래 PromQL을 작성하였는데, 값이 출력되지 않았다. PromQL ( Vector / Vector )container_memory_working_set_bytes{namespace="$namespace", container="$container"} / (sum(kube_pod_container_resource_limits{namespace="$namespace", container="$container"}) / count(kube_pod_container..

Ops/Monitoring 2025.12.17

[이슈] Network Policy - failed to get status by proxying to the pod, you might lack permissions to get pods/proxy

이슈 CNPG Cluster 파드에 kube-system, cnpg-system 네임스페이스로 부터 들어오는 트래픽이 8000번 포트로 접근할 수 있도록 허용하는 Network Policy를 적용하였는데, 다음과 같은 에러가 발생하였다. kubectl cnpg status cluster-example-1failed to get status by proxying to the pod, you might lack permissions to get pods/proxy: the server is currently unable to handle the request (get pods https:cluster-example-1-1:8000) 해결결론부터 말하면, ingress로 네임스페이스 뿐가 아니라 calico..

Ops/Kubernetes 2025.12.08

Ingress에서 Gateway API로 전환해야 하는 이유

Ingress에서 GatewayAPI로 전환해야 하는 이유는 더이상 kubernetes는 Ingress 관련 추가 기능을 제공하지 않기 때문이다.Ingress is frozen. New features are being added to the Gateway API. https://kubernetes.io/docs/concepts/services-networking/ingress/ 추가 기능을 제공하지 않은 이유는 다음과 같다. Ingress는 Kubernetes-Native하지 못하고 특정 벤더 종속성을 띈다. Ingress 구조 자체가 단순하여 복잡한 기능을 제공하려면 Ingress에 어노테이션을 달아야 하는데, 특정 벤더에 종속된 어노테이션이다보니 k8s 리소스인 Ingress가 특정 벤더 설정으로..

Ops/Kubernetes 2025.10.23

K8S NFS 동적 프로비저닝 구현하기

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner GitHub - kubernetes-sigs/nfs-subdir-external-provisioner: Dynamic sub-dir volume provisioner on a remote NFS server.Dynamic sub-dir volume provisioner on a remote NFS server. - kubernetes-sigs/nfs-subdir-external-provisionergithub.com NFS Provisioner를 활용하면, K8S에서 동적으로 NFS 스토리지에 볼륨을 생성할 수 있다. K8S에 Helm으로 NFS Provisioner 배포하기helm..

Ops/Kubernetes 2025.09.16

Prometheus Federation 구현하기

Prometheus는 다른 Prometheus가 수집한 메트릭을 수집할 수 있다. 이것을 'federate'라 부른다. 쿠버네티스 클러스터 안의 수집기들이 수집하는 메트릭을 외부의 프로메테우스가 수집하려면 복잡하지만 클러스터 안 프로메테우스는 간단한 설정으로 수집이 가능하다. 그래서 클러스터 마다 프로메테우스를 올리고 이를 다시 부모 프로메테우스가 수집하는 방식으로 구현하고자 한다. 부모 프로메테우스 prometheus.yml 설정 prometheus.yml: scrape_configs: - job_name: prometheus static_configs: - targets: - localhost:9090 - job_name: 'federate' ..

Ops/Monitoring 2025.09.16

[이슈, GitLab] unauthorized: authentication required 오류

GitLab Runner로 이미지를 GitLab Registry로 Push하던 중 unauthorized: authentication required 오류가 발생하였다. docker push gitlab.example.com/myproject/docs:latestThe push refers to a repository [gitlab.example.com/myproject/docs]630816f32edb: Preparing530d5553aec8: Preparing...4b0bab9ff599: Waitingd1c800db26c7: Waiting42755cf4ee95: Waitingunauthorized: authentication required docker login도 잘 되어서 의아했는데 공식문서에..

Ops/CICD 2025.08.26

ArgoCD로 멀티 클러스터 배포 관리하기

관리용 클러스터에 ArgoCD를 배포하고 해당 ArgoCD에서 여러 클러스터의 배포를 관리하려고 한다. ArgoCD가 여러 클러스터에 접근하려면 인증정보를 가지고 있어야 하는데, 인증정보를 등록하는 가장 간단한 방법은 kubectl config에 등록된 context를 바로 추가하는 것이다. 1. 관리용 K8S 구축 및 ArgoCD 서비스 배포 ( Skip ) 2. Argo CLI 환경 구성하기 LINUX AMD64 환경이라면 이 방법이 가장 간단하다. 배포된 ArgoCD GUI로 접속하고 Documentation 탭에서 LINUX(AMD64)용 CLI를 다운로드한다. 그럼 argocd-linux-amd64 파일을 받을 수 있는데, argocd-linux-amd64 파일을 linux 서버로 ..

Ops/CICD 2025.08.25