전체 글 204

[Kubernetes] 네임스페이스가 다른 서비스끼리 통신하는 방법(DNS)

kubernetes에는 같은 네임스페이스 내의 서비스는 서비스 이름만으로 접근이 가능하지만 네임스페이스가 서로 다를 경우에는 FQDN(Fully Qualified Domain Name)을 사용해서 접근해야한다.  kubernetes service를 생성하면 자동으로 DNS 레코드가 등록되고 서비스명.네임스페이스.svc.cluster.local 형태로 사용할 수 있다.    예를 들어, redis 서비스를 다음과 같이 만들었다면apiVersion: v1kind: Servicemetadata: name: redis namespace: redis-servicespec: type: ClusterIP selector: app: redis ports: - port: 6379 target..

systemd에 서비스 등록하기(서비스 자동 실행 & 모니터링 설정)

스크립트 파일로 관리하던 서비스를 systemd에 등록해서 관리하는 방식으로 바꾸려고 한다.  AS-IS- systemd가 아닌, 백그라운드 프로세스로 돌고있는 서비스- 서비스 및 서버가 다운될 경우 자동 재시작 불가- 서비스가 재시작 될 때 날짜와 시간을 수동으로 관리해야 함 TO-BE- 서비스가 동작하지 않고있으면 실행시켜주는 모니터링 systemd service를 등록- 서비스가 중지될 경우 자동으로 재시작해줌- 서비스가 재시작 될 때 날짜와 시간을 log 파일로 기록- systemd service를 enable로 설정해서, 서버 재시작 시 모니터링 서비스도 자동으로 시작됨   필요한 작업은 다음과 같다:1. 서비스 스크립트 파일(`service.sh`)2. 모니터링 스크립트 파일(`monitor...

Linux/기타 2025.03.14

[Kubernetes] PV, PVC 삭제 안됨 해결 방법(terminating 상태)

PV, PVC 를 사용하고있는 pod나 storageClass를 삭제했음에도 불구하고 PV 또는 PVC를 삭제해도 terminating 상태에서 계속 멈춰있는 경우가 있다.  원인?PV, PVC의 정보를 보면 finalizers 필드에 kubernetes.io/pvc-protection이 설정되어있을 수 있다 $ kubectl describe | grep FinalizersFinalizers: [kubernetes.io/pvc-protection] . PV, PVC가 삭제될 때 관련된 리소스가 남아있거나, 작업중인 리소스가 있다면 데이터 손실을 방지하기 위해 안전장치를 걸어주는 역할을 한다는데 어차피 삭제할 PV, PVC 이니 이 설정을 해제시키고 다시 삭제를 해봤다.  # PV 삭제 안되는 경..

kubernetes pod에서 특정 데이터만 추출하기(json 형식)

예를 들어 kubernetes에서 돌고있는 pod의 특정 정보를 뽑아내야 한다고 하자.   추출할 정보 예시:1. deployment로 배포한 pod의 deployment 이름2. 배포한 pod의 개수(replica)3. 컨테이너 각각의 이름, 리소스 kubectl get deployments -o json | jq -c ' .items[] | { name: .metadata.name, newReplicaSet: .status.replicas, containers: [ .spec.template.spec.containers[] | {name, resources: .resources} ] }' 필요한 필드값을 명시하면 된다.   결괴 예시:web dep..

[Git config] 글로벌 설정 & 로컬 설정

Git은 로컬 설정을 우선 적용하며, 로컬 설정이 없을 경우 글로벌 설정을 사용함.   글로벌 계정 설정 (기본 계정 고정)git config --global user.name "GlobalUserName"git config --global user.email "global@example.com" 로컬 계정 설정 (프로젝트별 계정 지정) 해당 프로젝트 디렉토리에서 실행git config user.name "LocalUserName"git config user.email "local@example.com" 확인 글로벌 설정 확인: git config --global --list  로컬 설정 확인:git config --local --list

error: Metrics API not available(결론: 포트 확인)

metric-server를 설치 했는데도 정상적으로 작동하지 않는 경우가 있다.  1. kubectl logs 결과 tls 에러가 발생하는 경우 pod가 돌지도 않고, hpa targets도 unknown으로 뜬다.  tls: failed to verify certificate: x509: cannot validate certificate for 10.0.2.10 because it doesn't contain any IP SANs" node="master"  이 경우에는 kubectl edit deployment metrics-server -n kube-system 명령어로 파일에 진입해서 kubelet과의 TLS 인증서 검증을 무시하도록 하고, 메트릭 서버가 클러스터 노드의 네트워크 인터페이스를 직접..

VitualBox ssh 연결(포트포워딩 방법)

Oracle VirtualBox에서 VM 생성 후 ssh 연결하는 방법  1. 호스트 IP확인  `파일 > 도구 > 네트워크 관리자 > 호스트 전용 네트워크` 에서 호스트 IP 확인     IPv4 접두사에 있는 192.168.56.1 주소가 내가 접근 가능한 VM 주소다.   2. VM 네트워크 확인`VM 설정 > 네트워크` 에서 `다음에 연결됨` 을 NAT 네트워크로 설정    3. 포트포워딩 `파일 > 도구 > 네트워크 관리자 > NAT 네트워크` 에서 `만들기` 버튼을 눌러서 생성 후 `포트포워딩`을 추가하는데, 호스트 IP가 아까 확인한 주소다. 게스트 IP는 VM 내부의 주소고(`ip ad` 명령어로 확인 가능) 게스트 포트는 ssh 연결을 할테니 22포트 사용 호스트 포트는 사용 가능한 범위..

VM 2024.12.02

ubuntu에 쿠버네티스 설치하는 방법

0. 설치 전 확인사항호환되는 리눅스 머신. 쿠버네티스 프로젝트는 데비안 기반 배포판, 레드햇 기반 배포판, 그리고 패키지 매니저를 사용하지 않는 경우에 대한 일반적인 가이드를 제공한다.2 GB 이상의 램을 장착한 머신. (이 보다 작으면 사용자의 앱을 위한 공간이 거의 남지 않음)2 이상의 CPU.클러스터의 모든 머신에 걸친 전체 네트워크 연결. (공용 또는 사설 네트워크면 괜찮음)모든 노드에 대해 고유한 호스트 이름, MAC 주소 및 product_uuid. 자세한 내용은 여기를 참고한다.컴퓨터의 특정 포트들 개방. 자세한 내용은 여기를 참고한다.스왑의 비활성화. kubelet이 제대로 작동하게 하려면 반드시 스왑을 사용하지 않도록 설정한다. 1. VM서버 구성 서버 설정 만약 너무 과도하게 리소스를..

bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program 에러

StorageClass로 NFS 스토리지를 Pod에 연결하려니 발생한 에러   journalctl -u kubelet -n 100 명령어로 확인해보니  master kubelet[896]: E1127 08:46:29.250652 896 kubelet.go:2345] "Skipping pod synchronization" err="container runtime is down"   kubelet이 컨테이너 런타임에 연결할 수 없다는게 뭔소린가 했더니nfs-common 을 master와 nfs 서버에만 설치해서 발생한 문제였다.  apt install nfs-common 명령어를 모든 master와 node에 다 돌리고 나니 문제 해결.