본문 바로가기

DevOps

(23)
[쿠버네티스 #tip2] 파이썬으로 만든 컨테이너에서 print출력이 되지 않을 때 파이썬 flask를 활용해 웹서버를 구축할 때 생긴 오류였다. 진행하고 있던 내용은 외부의 DB에서 데이터를 쿠버네티스 클러스터 내의 웹서버에 보내고 이 웹서버가 다시 쿠버네티스 클러스터 내의 DB로 저장하는 상황이었는데 데이터를 넘겨주는 과정에서 잘 넘어가는지 확인하기 위해 pod에 접근했었다. 근데 로컬에서 잘만되던 코드가 클러스터에 올려놓으니까 거짓말처럼 되지가 않았다. DNS 서비스에 문제가 있나 싶어 coredns도 확인해봤고 pod의 로그를 확인해봐도 rest api가 잘 성공했다는 200코드만 뜰 뿐 data에 대한 print문이 출력되지 않았다. 그 이후 수많은 구글링을 시도했고 결국 인프런 쿠버네티스강사님에게 질문을 했었다. 문제는 python에 있었고 print할 때 해당 코드를 flu..
[쿠버네티스 #4] Replica set 과 Deployment 오늘 소개할 것은 쿠버네티스 컨트롤러 중 Replica set과 Deployment이다. 이 두 가지의 컨트롤러의 가장 큰 기능은 여러 차이가 있지만 결국 Pod를 관리하는 컨트롤러이다. 두 가지를 설명하기 전 간단하게 쿠버네티스 컨트롤러에 대해 정리해보면 쿠버네티스 컨트롤러는 크게 4가지의 역할을 한다고 할 수 있다. 1. auto healing - pod에 문제가 생기거나 pod가 실행되고 있는 node에 문제가 생기면 해당 pod를 다시 실행하는 기능을 말한다. (ReplicaSet, DaemonSet ) 2. software Update - pod 자동 업데이트에 대한 기능을 지원한다. 이 때 이 업데이트가 잘못된 업데이트라면 롤백할 수 있는 기능도 제공한다. (Deployment) 3. auto..
[쿠버네티스 #3] Service 나는 처음에 쿠버네티스와 마이크로서비스 아키텍처를 공부할 때, 아니 지금도 이 Service라는 말이 굉장히 헷갈린다. 왜냐하면 쿠버네티스 Object상의 service를 말하는건지 아니면 어플리케이션 자체 제공하는 서비스를 말하는건지 제대로 개념이 안잡힌 상태에서 마주하게되면 뭐가 뭐를 말하는지 개념에 혼돈이 올 수 있기 때문이다. 쿠버네티스 공식 홈페이지에서는 대놓고 '앱 노출을 위해 서비스 이용하기' 라는 탭이 있을 정도로 서비스에 대해 이렇게 설명하고 있다. '앱 노출을 위한 오브젝트' ------------------------------------------------- 20. 07. 28 글 추가 https://kubernetes.io/ko/docs/reference/glossary/?all..
[쿠버네티스 #2] Pod 개념 파드, 포드, 팟 다양하게 불리는 쿠버네티스 Pod에 대해서 알아보자 쿠버네티스 공식 홈페이지에서는 Pod를 다음과 같이 설명한다. https://kubernetes.io/ko/docs/concepts/workloads/pods/pod-overview/ [공식 홈페이지] '쿠버네티스 애플리케이션의 기본 실행 단위로 쿠버네티스 객체 모델 중 만들고 배포할 수 있는 가장 작고 간단한 단위' 이렇게 설명되어있는데 나는 처음에 이걸봤을 때 쿠버네티스는 커녕 docker와 컨테이너에 대한 개념도 확실하지 않았기에 이해하지 못했다. 내가 이해한 Pod를 설명해보면 실제 작업을 수행하는 컨테이너를 담는 쿠버네티스 오브젝트 중에 하나로 쿠버네티스는 컨테이너를 직접 관리하지 않고 쿠버네티스가 담겨있는 Pod를 컨트..
[쿠버네티스 #1] 쿠버네티스 오브젝트와 컨트롤러 쿠버네티스는 오브젝트와 컨트롤러로 구성되는데 쿠버네티스 공식 설명을 보면 '의도를 담은 레코드'라고 설명을 해놓았다. 나는 오브젝트란 실제 일을 하는 애들 정도라고 생각한다. 오브젝트의 종류는 다양하게 있는데 Pod, Service, namespace, Volume, ConfigMap 등등 사용자는 이 오브젝트들을 조건에 맞게 생성하여 일을 시킨다. 라고 생각하면 될 거 같다. ------------------------------- 예를들면 Pod는 실제 실행되는 컨테이너를 가지고 있는 오브젝트로 Python flask 웹서버 컨테이너를 가지고 있는 Pod를 생성하고 이 Pod를 외부에서 접근이 가능하게 하기 위해 Service로 묶어 특정 Service를 만든다. 각 Pod와 Service의 연결을 ..
[쿠버네티스 #tip1] 쿠버네티스 재 부팅시 The connection to the server localhost:xxxx was refused 에러가 떴을 때 쿠버네티스 재 부팅시 가끔 마스터 노드와 워커 노드가 연결이 안되서 아예 kubectl 명령어가 듣지 않는 경우가 있다. 어떤 kubectl 명령을 쳐도 The connection to the server localhost:8080 was refused - did you specify the right host or port? The connection to the server localhost:6443 was refused - did you specify the right host or port? 의 에러만 뜨며 아무것도 되지 않는다. 이를 해결하기 위해 여러 구글링을 해보면 대부분의 사람들이 kubelet 과 docker 등을 restart 하거나 쿠버네티스 설치시 root권한으로 실행할 수 있게하는..
[쿠버네티스 #0] Ubuntu 환경에서 쿠버네티스(Kubernetes) 환경구성하기 쿠버네티스를 사용하기 위한 기본 설치 및 Cluster구성에 관한 글입니다. 환경 구성 설치 글을 많이 있었지만 그 중 제가 직접해보고 되는 것들을 조합하여 새롭게 작성해봤습니다. 쿠버네티스 클러스터를 구성하는 방법에는 다음과 같은 방법이 있습니다. 1. 마스터 노드와 워커 노드를 실제 컴퓨터로 구성 2. 마스터 노드와 워커 노드를 VM으로 구성 3. 구글클라우드플랫폼(GCP) 같은 클라우드 환경 이용 둘 다 구성하는 법은 똑같지만 실제 컴퓨터로 구성하게 될 경우 같은 네트워크를 공유하고 있어야 하고, VM의 경우 버츄얼 박스나 VM ware에서 네트워크 설정이 필요합니다. 이번에 제가 소개해드릴 방법은 같은 네트워크를 공유하고 있는 2대의 컴퓨터로 쿠버네티스 클러스터를 구성하는 방법입니다. (GCP같은..