k8s 134

[k8s/helm] JupyterHub kubespawner 사용자 별 volume 설정

개요 최근 kubernetes 버전을 1.21에서 1.24로 업그레이드를 진행하게 되면서 쿠버네티스 환경에서 동작하고 있던 helm chart의 업그레이드가 필요해졌다. 관련해서 업그레이드가 필요한 helm chart 중 하나가 JupyterHub였는데, 작업 중 singleuser notebook server 스폰 시 volume 설정 방법을 변경하게 되어 적어둔다. 우선 jupyterhub는 다음과 같은 방식으로 사용 중이다. - kubernetes 환경에서 동작한다. - singleuser server를 spawn 하여 사용한다. - spawn 할 수 있는 여러 profile을 지원한다. - singleuser server는 사용자 별 홈 디렉터리와 nas mount가 필요하다. 기존 설정 기존 환..

Kubernetes/삽질 2023.05.12

[Helm/Jenkins] CAcert를 이용한 LDAPS 적용

개요 2022.05.16 - [Jenkins] LDAP 연동으로 Jenkins에 LDAP 적용을 했었는데, 이번에는 인증서를 이용한 LDAPS 적용이 필요해 방법을 정리한다. 쿠버네티스 클러스터에 Helm으로 설치한 Jenkins로, 사용한 Chart는 이미 deprecated 된 https://github.com/helm/charts/tree/master/stable/jenkins이다. init container를 이용해 컨테이너 환경 변수로 전달한 인증서를 적용하는 방법으로, https://github.com/helm/charts/issues/23374를 참고하여 진행했다. 적용 방식 1. 공유 공간으로 cacerts-share이라는 이름의 emptyDir volume 생성 2. jenkins 컨테이..

Jenkins 2023.03.20

[k8s/kube-prometheus-stack] node_exporter pending 현상

현상 쿠버네티스 클러스터 내 리소스를 모니터링하기 위해 kube-prometheus-stack helm chart로 Grafana와 Prometheus를 설치해서 사용하고 있다. 다만 설치한 helm-release의 설정 변경이 필요해, 운영 환경에 적용하기 전에 테스트를 하고자 별도의 네임스페이스에 kube-prometheus-stack chart를 다른 helm-release로 설치했다. helm-release는 정상적으로 설치되었으나 다음과 같이 node_export pod가 pending 상태로 머물러 있는 것을 확인했다. 원인 node-exporter를 describe 명령으로 살펴보면 Events 항목에 아래와 같은 메시지를 확인할 수 있다. node(s) didn't have free por..

Kubernetes/삽질 2023.03.12

[k8s] 사용자 전체 권한 확인 - 2

개요 2023.01.28 - [k8s] 현재 사용자 전체 권한 확인 - 1에서 쿠버네티스 사용자의 권한 목록을 확인했었다. 이 글에서는 kuectl 플러그인 중 하나인 access-matrix를 이용해 사용자의 권한 목록을 확인해 본다. access-matrix 리소스에 대한 액세스 매트릭스를 보여주는 kubectl 플러그인이다. kubectl auth can-i --list와 유사하게 현재 사용자의 리소스에 대한 액세스 권한을 나열하되, 사람이 읽기 편한 표 형식으로 출력해 준다. 쿠버네티스 클러스터 관리자가 아닌 일반 사용자가 수행할 수 있는 작업을 확인할 때 유용하게 사용할 수 있다. 설치 Krew 또는 소스로 설치할 수 있다. Krew kubectl krew install access-matrix..

Kubernetes 2023.02.07

[k8s] kubectl 플러그인 neat - manifest 정리

neat 쿠버네티스 클러스터에 존재하는 리소스의 정보를 yaml 형식으로 출력하면 다음과 같은 정보가 함께 출력된다. 생성 타임스탬프 또는 내부 ID와 같은 메타데이터 누락된 속성의 기본값 Admission Controller에 의해 추가된 System attribute (예: service account token) 상태 정보 neat 플러그인은 get -o yaml 명령어 결과에서 불필요한 정보를 정리하여 가독성 있는 yaml 출력을 만들어준다. 이 글에서는 설치 및 사용 방법에 대해 정리한다. 설치 krew를 통해 설치한다. kubectl krew install neat 사용법 - 표준/파일 입출력 기본적으로 파이프를 이용해 get 명령의 결과를 neat로 전달하거나 -f 옵션을 이용할 수 있다. ..

Kubernetes 2023.02.06

[k8s] kubectl 플러그인 - kubectx / kubens

kubectx / kubens 멀티 클러스터 / 다중 네임스페이스 간의 쉬운 전환을 도와주는 kubectl 플러그인/도구이다. v0.9.0부터는 Go로 작성되었다. 두 개 도구 모두 https://github.com/ahmetb/kubectx에서 지원하고 있다. kubectx : kubectl에서 context 전환을 빠르게 할 수 있게 해주는 플러그인 kubens : 쿠버네티스 네임스페이스 간 전환을 쉽게 할 수 있게 해주는 플러그인 이 글에서는 설치 방법과 사용 방법을 간단히 정리해둔다. + 2023.02.04 - [k8s] kubectl 플러그인 - kube-ps1와 함께 사용하기 좋아 보인다. 설치 Ubuntu 기준으로 krew를 통한 설치, 수동 설치 방법 두 가지를 고려할 수 있다. Krew를..

Kubernetes 2023.02.05

[k8s] kubectl 플러그인 - kube-ps1

kube_ps1 kubectl에 구성된 현재 쿠버네티스 context와 namespace를 Bash/Zsh 프롬프트($PS1)에 표시한다. kubectl 플러그인 관리자인 krew에는 등록되지 않은 플러그인이다. Git 주소 : https://github.com/jonmosco/kube-ps1 설치 Bash 기준으로는 아래와 같이 설치한다. 1. Git 저장소 Clone git clone https://github.com/jonmosco/kube-ps1.git 2. .bashrc에 설정 추가 및 적용 vi ~/.bashrc # 아래 내용 추가 source /path/to/kube-ps1.sh PS1='[\u@\h \W $(kube_ps1)]\$ ' 3. .bashrc 적용 source ~/.bashrc ..

Kubernetes 2023.02.04

[k8s] krew - kubectl 플러그인 관리자

Krew kubectl을 보다 편리하게 사용할 수 있도록 해주는 플러그인 관리 도구로, apt, brew와 비슷하게 kubectl 플러그인을 검색하고 설치할 수 있다. 현재(2023년 1월) 기준 210개의 kubectl 플러그인이 배포되어 있다. macOS, Linux, Windows에서 사용할 수 있으며 kubectl v1.12 이상의 버전에서 지원 가능하다. 이 글에서는 Krew를 설치하고 사용하는 방법을 소개하려고 한다. 설치 Linux 기준으로 방법을 정리한다. 1. git 설치 여부를 확인한다. 설치되어 있지 않으면 설치한다. git version # 설치 apt install git-all 2. 아래 명령어를 실행하여 krew를 설치한다. ( set -x; cd "$(mktemp -d)" &..

Kubernetes 2023.02.03

[k8s] 인증서 기반 Group User 생성

개요 Kubernetes에서 작업하는 사용자(User)와 서비스 계정(Service Accounts)은 Role-based access control(RBAC)에 의해 클러스터 내 리소스 접근을 제어받는다. Kubernetes 클러스터 관리자는 RoleBinding을 생성하여 User, Group, ServiceAccount에게 권한이 부여된 Role을 연결할 수 있는데, 이때 Group은 User의 집합을 의미한다. 2022.09.07 - [k8s] 인증서 기반 User 생성에서는 단순 User를 생성해 보았는데, 이 글에서는 특정 Group에 속한 User를 생성해 볼 것이다. 기본적으로 OpenSSL을 사용하여 CSR을 생성하는 것은 동일하다. + 인증서를 생성하는 도구로 꼭 OpenSSL을 사용할..

Kubernetes 2023.02.02

[k8s] Released PV 재사용(Released to Available)

개요 kubernetes에서 사용이 끝난 PVC가 삭제되면 PVC가 사용 중이던 PV는 초기화(reclaim)하는 과정을 거친다. 초기화 정책은 3가지가 존재한다. Retain PVC가 삭제되면 PV를 Released 상태로 만들어 PV를 보존한다. PV 내 데이터는 유지되지만 PV를 재사용할 수 없다. PV에 연결되어 있던 외부 스토리지 볼륨을 삭제하려면 관리자가 작업해야 한다. 또한 볼륨을 재사용하기 위해서는 해당 볼륨을 이용하는 PV를 재생성하는 등의 작업이 필요하다. Delete PV 및 연결되어 있던 외부 스토리지 볼륨을 삭제한다. 동적 프로비저닝으로 생성된 PV는 Delete가 기본값이다. Recycle Reclaiming 시 새 PVC에서 사용할 수 있는 상태로 만든다. 과정 중 PV 내 데..

Kubernetes 2023.01.30