DevOps/Kubernetes 16

Kubelet 설정 파일

kubelet config file/usr/lib/systemd/system/kubelet.service.d/10-kubeamd.conf해당 파일은 kubeadm, kubelet 1.11 이상에서 동작하는 drop-in 파일입니다. 기존의 서비스 유닛 파일을 변경하지 않고 추가적인 설정을 덧붙이는 유형의 파일입니다. systemd가 kubelet을 실행할 때 적용할 플래그(--config, --cgroup-driver), 시스템 환경 변수(Environment) 및 실행 명령어(ExecStart)를 포함합니다.  Environment systemd 유닛 파일에서 환경 변수를 설정하는 키워드입니다. Environment 라인은 독립적이며, 뒤에 오는 라인이 앞의 값을 덮어 쓰지 않고 각각 고유하게 처리됩니..

DevOps/Kubernetes 2025.01.07

트러블슈팅

1.  ImagePullBackOff1.1  철자 오류 또는 이미지 태그 오류이미지 이름 또는 이미지 태그를 잘못 기입해서 컨테이너 이미지를 찾을 수 없는 경우, 이미지 철자를 고쳐서 *.yaml 파일을 재작성하면 파드를 정상적으로 동작시킬 수 있습니다. 파드의 경우 파드를 삭제한 후 다시 파드를 재생성 해주어야 합니다. 1.2  권한 오류 사설 저장소에서 이미지를 가져와야 할 때 해당 저장소에 접근 권한이 없는 경우 오류가 발생할 수 있습니다. 이를 해결할 수 있는 여러가지 방법이 있는데 가장 간단한 해결 방법에 대해 알아보겠습니다. 그것은 ImagePullSecret을 생성하여 파드에 할당하는 것입니다. ImagePullSecret을 사용하면 파드가 이미지를 가져올 때 필요한 인증 정보를 제공할 수 ..

DevOps/Kubernetes 2024.11.06

서비스 메시

서비스 메시란 서비스 메시는 마이크로 아키텍처 환경에서 코드의 변경 없이 서비스 간 통신을 담당하는 레이어이다. 여기서 서비스란 마이크로서비스 아키텍처에서 특정 기능을 제공하는 독립적인 소프트웨어 컴포넌트를 의미한다. 주로 담당하는 기능은 아래와 같다. - Traffic Management (트래픽 관리)- Security (보안)- Observability (모니터링 + 로깅)- Service Discovery (서비스 간 통신) 서비스 메시 구성요소서비스 메시의 구성 요소로 컨트롤 플레인과 데이터 플레인이 있으며 각기 다른 역할과 기능을 갖고 있다. 컨트롤 플레인 (Control Plane): 관리 및 조정: 네트워크, 서비스, 또는 클러스터의 구성, 정책, 및 규칙을 정의하고 관리합니다.메타데이터 ..

DevOps/Kubernetes 2024.10.30

인그레스 컨트롤러

서비스가 파드로 접근하는데 진입 지점을 제공해준다면 인그레스는 네트워크 7계층에서 여러 서비스로 진입하는데 진입지점을 제공해주고 이를 쿠버네티스 클러스터 안에서 구성할 수 있도록 도와준다. 인그레스를 구성하기 위해선 쿠버네티스 클러스터에 Nginx, HAPROXY, traefik 과 같은 솔루션 중 하나를 선택해서 배포해야 한다. 이와 같은 솔루션을 Ingress controller라고 한다. 그리고 설정 규칙을 Ingress resources라고 한다. 쿠버네티스 클러스터는 Ingress controller가 내장되어 있지 않다. 그래서 인그레스 리소스를 생성해서 적용하기 위해선 인그레스 컨트롤러를 구성해야한다. 인그레스 컨트롤러에는 여러 종류가 있다. 이중에서 GCE와 Nginx가 쿠버네티스 프로젝트..

DevOps/Kubernetes 2024.10.30

쿠버네티스 클러스터와 네트워크

쿠버네티스 네트워크가 구성되는 과정 - 브릿지 네트워크 인터페이스로CNI(Container Network Inteface) 없이 쿠버네티스 클러스터의 네트워크를 설정하기 위해선 어떻게 해야할까? 우선 노드 별로 브릿지 유형의 v-net-0 이름으로 네트워크 인터페이스를 생성한다. 노드 별 브릿지 네트워크를 사용하면 여러 네트워크 인터페이스를 묶어 같은 네트워크 내에서 데이터 패킷을 전달할 수 있도록 해준다. ip link add v-net-0 type bridge  인터페이스를 생성한 후 네트워크 인터페이스를 활성화하기 위한 과정이 필요하다. 활성화 해야지 패킷을 송수신 할 수 있는 상태가 된다. ip link set dev v-net-0 up  네트워크 인터페이스를 활성화 한 후 노드별로 서브넷 마스크..

DevOps/Kubernetes 2024.10.29

Kubernetes Image

파드를 생성할 때 이미지란을 적어주는 부분이 있다. 위 그림을 통해 이미지를 적는 형식을 알 수 있다. 위 예시에서 docker.io는 Docker Hub를 가리킵니다. library의 경우 공식 이미지들이 저장되는 네임스페이스를 나타냅니다. nginx는 이미지의 이름입니다. 정리하면 Dokuber Hub, library 네임스페이스에서 nginx 이미지를 가지고 오는 것입니다.프라이빗 레지스트리에서 이미지를 가지고 오는 경우도 있습니다. 이럴 때에는 Pod를 생성하는 yaml 파일에 imagePullSecrets에 docker-registry 유형의 secret을 만들어 추가해주면 해당 secret 정보를 바탕으로 프라이빗 레지스트리에서 이미지를 가지고 올 수 있습니다.

DevOps/Kubernetes 2024.10.29

Service Account 관련 주요 사항

개념서비스어카운트는 쿠버네티스나 프로메테우스와 같은 애플리케이션이 쿠버네티스 클러스터에 요청을 할 때 필요한 인증 및 인가를 위해 도입되는 개념이다. 이번 시간에는 해당 개념을 알고있는 사람을 대상으로 관련 내용을 정리해보는 시간을 가졌다.부가 내용- 파드 생성시 서비스 어카운트를 지정하지 않으면 쿠버네티스 기본 서비스 어카운트가 설정된다. 따라서 파드 생성시 서비스 어카운트를 지정하고 싶지 않으면 아래 그림처럼 authomountServiceAccountToken: false를 지정해야한다. - 현재 러닝 중인 파드에 새로운 서비스 어카운트를 지정하고 싶다면 yaml 파일 수정 후 파드를 삭제하고 다시 생성해야한다. kubectl edit pod my-kubernetes-dashboard 명령어로는 새..

DevOps/Kubernetes 2024.10.29

Kubernetes Authorization / 쿠버네티스가 인가를 처리하는 방법

1. 쿠버네티스의 인가이번 글은 쿠버네티스 클러스터가 api-server로 요청이 왔을 때 인가를 처리하는 방법에 대한  글입니다. 인증 과정 뒤에 해당 요청의 주체가 권한이 있는지 확인하는 작업으로 인증을 통과한 주체를 대상으로 권한을 확인하는 프로세스입니다. 인증과정이 궁금하시다면 아래 링크를 클릭해주세요. 쿠버네티스에서 인증을 처리하는 과정이 궁금하다면? 쿠버네티스가 인가를 처리하는 방법에는 크게 4가지 유형이 있습니다. 우선 Node Authorizer 부터 살펴보겠습니다. 1.1 Node Authorizer kubelet이 kube-apiserver를 대상으로 읽기와 쓰기 작업을 요청한다고 했을 때 kubelet에게 부여한 인증서를 기반으로 인가를 처리하는 예시를 살펴보겠습니다. 위 그림의 인증..

DevOps/Kubernetes 2024.10.28

Kubernetes API에 대해 알아보자

1. Kubernetes API 쿠버네티스 API는 목적에 따라 그룹화 되어 있다. version은 쿠버네티스의 버전을 보여주는 기능을 담당한다. metrics와 healthz는 클러스터의 상태를 모니터하는데 기능을 담당한다. logs는 써드파티 앱과 쓰여 로그와 관련된 기능을 담당한다. api와 apis에 대해 조금더 자세히 살펴보자.  api는 코어그룹이라고해서 위 그림에서 보시다 시피 쿠버네티스의 기본적인 리소스를 포함한다. 경로에 그룹 이름이 따로 붙지 않아 /api/v1/pods 와 같은 방식으로 접근한다. curl 명령어를 통해 kube-apiserver를 조회해서 조회할 수 있는 api목록을 확인할 수 있다.. apis는 Non-Core API Grouops이라고 해서 Core API 외에 ..

DevOps/Kubernetes 2024.10.28

Kubernetes Cluster 접근시 클러스터가 인증을 처리하는 방법

1. 쿠버네티스 클러스터 접근 주체쿠버네티스 클러스터에 접근하는 주체에는 관리자, 개발자 그리고 서비스 어카운트가 있다. 쿠버네티스는 파일, 인증서 그리고 LDAP 같은 수단을 통해 접근 주체의 인증을 처리하고 있다. 쿠버네티스 클러스터의 대표적인 컴포넌트인 kube-apiserver에 접근하는 방법으로 kubectl을 이용한 방법과 curl을 이용한 방법이 있다. 이 때 클러스터는 유저의 인증 및 요청을 처리한다. 클러스터는 4가지 유형으로 유저의 인증을 처리한다. 1.1 유저 인증 처리 방법 - 유저 아이디 + 패스워드- 토큰- 인증서- 외부 인증 서비스 1.1.1 유저 아이디 + 패스워드 / 토큰.csv 파일을 만들어 해당 파일 안에 패스워드, 유저 이름, 유저 아이디, 그룹을 명시한다. 이후 서비..

DevOps/Kubernetes 2024.10.27