IT/Kubernetes 18

[Kubernetes] kubeadm을 이용해 Kubernetes 클러스터를 구축해보자

프롤로그 지난 포스트 "[containerd] containerd를 CRI 런타임으로 하는 Kubernetes 클러스터를 구축해보자" 에 이어서 이번엔 Kubernetes 클러스터를 구축해보겠습니다. 본 포스트에선 이미 CRI 런타임이 설치되어 있다고 가정하고 kubeadm을 이용해 클러스터를 구축합니다. 만약 CRI 런타임이 설치되어 있지 않다면, 위 포스트를 참고하여 CRI 런타임부터 설치해주세요! 추가로, 이 포스트는 개발 환경에서 사용하기 위해 간단하게 구축하는 방법을 소개합니다. 실제 프로덕션 환경에서 사용하셔서는 안 됩니다! 추가에 추가로, 가장 간단하게 로컬에 Kubernetes 클러스터를 구축하는 방법은 minikube를 사용하시거나 docker for mac 등을 사용하셔서 해당 프로그램..

IT/Kubernetes 2021.06.21

[Kubernetes] Helm Chart 만들기

Prologue 일반적으로 Kubernetes Manifest 파일은 정적인 형태입니다. 따라서 데이터를 수정하기 위해선 파일 자체를 수정해야 합니다. 잘 관리를 한다면야 큰 어려움은 없겠지만, 문제는 CI/CD 등 자동화된 파이프라인을 구축해서 애플리케이션 라이프사이클을 관리할 때 발생합니다. 보통 애플리케이션 이미지를 새로 빌드하게 되면, 빌드 넘버가 변경됩니다. 이렇게 되면 새로운 이미지를 사용하기 위해 Kubernetes Manifest의 Image도 변경되어야 합니다. 하지만 Kubernetes Manifest를 살펴보면, 이를 변경하기 쉽지 않다는 것을 깨닫게 됩니다. Image Tag가 별도로 존재하지 않고 Image 이름에 붙어있기 때문입니다. 이를 자동화 파이프라인에서 변경하려면, sed..

IT/Kubernetes 2021.06.18

[Kubernetes] kubectx를 활용해서 멀티 클러스터를 관리하자

Prologue 사내에서 사용하던 클러스터가 1개라 그동안은 멀티 클러스터 관리에 그다지 관심을 두지 않았습니다. 하지만 개발용 클러스터와 실사용 클러스터를 분리하고 제 로컬에 있는 데스크탑 클러스터까지 사용하게 되다보니 이제는 멀티 클러스터 관리의 필요성을 절실히 느끼게 됐는데요. 로컬에서 작업을 할 때 빈번히 클러스터의 전환이 필요했고 더불어 네임스페이스의 전환도 필요했습니다. 매번 -n blahblahblah 를 타이핑하는 건 수고로운 일이니까요. 오늘 포스트에서는 kubectx를 이용한 클러스터 간 전환을 간편하게 만들어보는 작업을 해보겠습니다. kubectx kubectx는 클러스터 간의 전환을 쉽고 빠르게 할 수 있게 해주는 플러그인입니다. v0.9.0 이전까지는 bash를 이용해 구현되었고,..

IT/Kubernetes 2021.06.13

[Kubernetes] Kubernetes 인증서가 만료되었을 때 해결 방법

Prologue 언제나처럼 kubectl 을 사용하려는데 다음과 같은 에러가 발생했습니다. '어이쿠 인증서 문제네...' 하면서 생각해보니, 이 클러스터를 구축해둔지 벌써 1년이라는 시간이 지났더군요. 갱신을 한 번은 해줬어야 했는데 깜빡하고 있던게 화근이었습니다. Unable to authenticate the request due to an error: x509: certificate has expired or is not yet valid 인증서 만료일 확인 $ cd /etc/kubernetes/pki $ openssl x509 -in apiserver.crt -noout -dates $ openssl x509 -in apiserver-kubelet-client.crt -noout -..

IT/Kubernetes 2021.06.07

[Kubernetes] Helm으로 Statefulset의 spec upgrade가 안 되는 경우

[Kubernetes] Helm으로 Statefulset의 spec upgrade가 안 되는 경우 Helm으로 배포한 패키지에 statefulset이 있으면, helm upgrade 명령을 사용했을 때 오류가 날 가능성이 있습니다. 특정 파드의 리소스 제한을 걸지 않아서, 배포 이후에 제한을 걸기 위해 values.yaml을 업데이트 하고 helm upgrade를 수행했는데, statefulset이 지원하지 않는 업데이트라는 에러를 뿜뿜하더군요. 분명 자원은 spec.template.containers.resources에 있으니까, 이걸 수정한다고 해서 statefulset이 업데이트 할 수 없다고 나오는 건 분명히 버그였습니다. 수소문 해보니 저와 같은 현상을 겪었던 분들이 많이들 계셨고, 찾아낸 해법..

IT/Kubernetes 2021.05.12

[Kubernetes] CKA (Certified Kubernetes Administrator) (v1.19 기준) 시험 후기

3줄 TL;DR - 시험 구매는 할인을 많이 할 때.. - 시험공부는 Udemy에서... - Imperative 명령어는 사드세요... 제발... 후기 및 시험 준비 과정 지난 20년 12월 31일, 작년의 마지막을 Kubernetes와 함께 하겠다는 마음가짐으로 CKA 시험을 치르게 되었다. 비싼 시험 비용을 지불했기 때문에 꼭 붙어야 한다는 생각이 컸다. 특히 시험의 기준 버전이 v1.18에서 v1.19로 올라 v1.18에서 쓰인 후기들은 많이 봤지만 v1.19 후기가 별로 없어 v1.20으로 오르기 전에 빨리 쳐야 할 것 같은 압박감 아닌 압박감을 느끼고 있던 중이었다. 내 경우, 20년 블랙 프라이데이가 끝나고 찾아온 Cyber Monday 때 할인을 받아, CKA+LF Training cours..

IT/Kubernetes 2021.01.16

[Kubernetes] Kubernetes와 Docker (Kubernetes v1.20)

Kubernetes가 v1.20 업데이트 이후로 Docker를 Deprecate 하기로 결정했다. (출처 : https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.20.md#deprecation) Deprecate Dockershim #94624 정확히 말하자면, Kubelet에서 Dockershim의 지원이 Deprecation 된 것이다. Kubernetes는 CRI (Container Runtime Interface) 인터페이스를 통해 컨테이너 런타임과 통신한다. CRI는 컨테이너 런타임과의 인터페이스 표준(API)을 정의한 것으로, Kubernetes CRI를 지원하면, 엔드 유저 입장에선 지금까지 써오던 Kubern..

IT/Kubernetes 2020.12.22

[Kubernetes] Kubernetes Plugin Manager - Krew

쿠버네티스 플러그인 관리자 Krew 쿠버네티스를 사용하다보면 다양한 정보를 확인하기 위해 kubectl 명령어를 잘 활용해야 합니다. 또, 특정 인자를 반복적으로 넘겨주어야 하는 때도 있습니다. 대표적으로 특정 네임스페이스에 속한 자원을 관리할 때 사용하는 -n 인자가 있겠네요. 이렇듯 같은 행동을 진부하게 반복하게 되니 영 불편합니다. 이런 문제는 어떻게 해소할 수 있을까 열심히 구글링을 한 결과, 역시 저 말고도 이런 문제에 불편함을 느끼고 이를 해결하기 위해 이미 플러그인을 개발하신 형님들이 계셨습니다. 예를 들어 방금 전에 소개한 불편함은 프롬프트를 특정 네임스페이스를 가리키도록 설정해놓고 네임스패이스의 변경이 필요할 때만 해당 플러그인을 통해 변경하면 되는 식으로 해결할 수 있더군요. 이처럼 우..

IT/Kubernetes 2020.07.23