개요 CKA 공부를 위해 KillerCoda 사이트 문제를 풀이한다. 목표 Container가 여러대일때 발생할 수 있는 문제와 설정을 변경하여 장애를 복구한다. 여정 Gather logs 에러가 발생한 모든 컨테이너의 로그를 '/root/logs.log' 위치에 작성하라. # 전체 리소스 확인 k get all -A # 특정위치에 에러를 모아야 하므로 로그 수집 # -c : 특정 컨테이너의 로그만 보여줌 k logs deploy/collect-data -n management -c nginx >> /root/logs.log k logs deploy/collect-data -n management -c httpd >> /root/logs.log Fix the Deployment management 네임스..
개요 CKA 공부를 위해 KillerCoda 사이트 문제를 풀이한다. 목표 Application Deployment 설정을 변경하여 장애를 복구한다. 여정 Deployment is not coming up, find the error and fix it # 모든 리소스 확인 k get all -A # deployment 에러 확인 k describe deploy app -n application1 ... CATEGORY: # 모든 configmap 확인 # 'category'라는 configmap은 없다 k get cm -A # configmap 상세 확인 # configmap-category에는 'category'라는 key는 있다. k describe cm configmap-category # dep..
개요 CKA 공부를 위해 KillerCoda 사이트 문제를 풀이한다. 목표 Kubernetes Apiserver 장애를 복구한다. 여정 The Apiserver manifest contains errors 문제를 해석하면 kubernetes의 apiserver 설정에서 잘못된 부분 3곳을 수정하여 복구하는 과정을 요구한다. /var/log/pods 위치에 kube-system_kube-apiserver-controlplane로 시작하는 디렉토리부터 확인하자 없다면 yaml 파일 문법에서부터 오류가 난 것이다! # 로그 기록 확인 cat /var/log/syslog | grep kube-apiserver ... Could not process manifest file" err="/etc/kubernetes..
개요 CKA 공부를 위해 KillerCoda 사이트 문제를 풀이한다. 목표 Kubernetes Apiserver 장애를 복구한다. 여정 Configure a wrong argument 문제를 해석하면 kubernetes의 apiserver을 잘못된 인자(--this-is-wrong)를 심고, 이를 로그 위치에서 확인한 뒤, 원래대로 복구하는 과정을 요구한다. 로그는 다양한 방법으로 확인할 수 있지만 아래 방법 순서로 확인했다. # kubelet 상태 확인 journalctl # cri 상태 확인 crictl ps ... # cri 로그 확인 crictl logs ... # 로그 기록 확인 cd /var/log/pods cd /var/log/containers 이제 잘못된 인자를 주입하고 복구해보자. # ..
개요 On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다. 목표 Ingress 적용을 통해 Service가 어떤 방식으로 트래픽을 전달하는지 이해한다. 여정 Service와 Service Type Service에서 통신을 위해 사용하는 Type은 아래와 같이 3가지가 있다. NodePort 외부에서 접속하기 위해 사용하는 포트 port Cluster 내부에서 사용할 Service 객체의 포트 targetPort Service객체로 전달된 요청을 Pod(deployment)로 전달할때 사용하는 포트 전체 서비스 흐름으로 보면 NodePort --> Port --> targetPort 이다. Ingress란? Ingress는 클러스터 내의 서비..
개요 On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다. 목표 쿠버네티스 클러스터 내 공유 디렉토리를 사용하기 위한 NFS(Network File System) 서버 설정 PV, PVC, NFS, StorageClass의 관계를 이해한다. 여정 PV와 PVC의 관계 쿠버네티스는 하나 이상의 컨테이너를 포함하는 Pod를 최소 단위로 동작한다. 이러한 Pod가 데이터를 저장하는 공간이 PV(Persistent Volume)이다. 하지만, 한 볼륨을 공유하거나, 다른 볼륨으로 변경해야 할 경우가 생긴다면 어떻게 해야할까? PVC(Persistent Volume Claim)이라는 리소스가 이를 해결해준다. Pod와 PV 간의 연결을 정의하여 PV..
개요 On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다. 목표 쿠버네티스 클러스터를 모니터링하고 종류별 상태를 시각화하기 위한 대시보드 설치 Node의 하드웨어 상태 각 Namespace 별 리소스 상태 Master의 API Server 상태 등 여정 헬름(Helm) 설치 Helm은 쿠버네티스의 패키지 관리를 도와주는 Managing Tool입니다. (공식문서) Helm은 아래와 같이 크게 세가지 요소을 가지고 있습니다. Chart : yaml 파일을 묶어서 정의한 package로 app을 실행시키기위한 모든 리소스가 정의됨. Repository : 생성된 chart들이 저장, 공유되는 공간입니다. docker hub와 유사함. Relea..
개요 On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다. 목표 k8s 환경 내에 간단한 서비스를 배포하기 (배포 과정이 목적이기 때문에 기본 이미지를 사용한다!) 여정 컨테이너 이미지 작성(k8s Hello World) # k8s에서 만든 hello world 컨테이너 이미지 kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 # 결과 확인 curl http://: Deployment YAML 작성 어플리케이션의 컨테이너 이미지와 실행정보를 담은 YAML apiVersion: apps/v1 kind: Deployme..
개요 On-premise에서 kubernetes(= k8s) 환경을 직접 구성해보며 학습하는 Hands On 시리즈입니다. 목표 On-premise 환경에서 Linux 위에 Kubernetes 클러스터 환경 구성 Linux CentOS 7.x Kubernetes 1.25.5 CRI : CRI-O 1.19 CNI : Calico 3.25 Master 1대, Worker 5대 → Worker에만 GPU 설치 여정 공통 - 마스터 & 워커 CRI-O 설치 (CRI-O Docs | CRI-O 기반 쿠버네티스 설치) 1.24.0부터 Dockershim이 제거가 되었다. (참고 : 흔들리는 도커(Docker)의 위상 - OCI와 CRI) 때문에, Container를 실행할 런타임 인터페이스 CRI가 필요하다. CR..