23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
플러그인은 기본 기능에 추가 기능을 제공하는 개념이다.
일반적으로 IT 분야의 플러그인(plugin)이란 기존 소프트웨어나 시스템의 기능을 확장하거나 추가하기 위한 모듈을 의미한다.
대표적인 플러그인의 사례를 보면 아래와 같다.
- Visual Studio Code 플러그인
- Slack 앱 플러그인
- Chat GPT 플러그인
플러그인은 주로 기존 시스템의 UI, 기능, 성능 등을 개선하거나 특정 작업을 자동화하기 위해 사용된다.
개발자 측면에서는 시스템 기능을 쉽고 편리하게 확장 가능하게 해 주는 것이 주목적이라고 볼 수 있다.
쿠버네티스를 운영하는 데 있어 핵심 도구인 kubectl은 클러스터를 관리하고 리소스를 조작하는 기능을 제공한다.
하지만 kubectl만으로 모든 관리 작업을 효과적으로 하기에는 한계가 있다.
이런 문제를 해결하기 위해 kubectl은 플러그인 아키텍처를 지원하여 기능을 확장할 수 있게 하였다.
kubectl 플러그인은 2016년 초반 kubectl tree 명령을 구현한 플러그인에서 시작했다.
이후로 지속적으로 새로운 플러그인이 개발되면서 kubectl의 기능이 확장되었고, 공식 플러그인 아키텍처가 마련되었다.
2018년에는 플러그인을 쉽게 관리할 수 있는 krew 패키지 매니저가 도입되었고, 현재는 다양한 kubectl 플러그인이 사용 가능하며, kubectl의 핵심 기능 중 하나로 자리매김하고 있다.
앞으로 쿠버네티스 생태계가 더 커짐에 따라 kubectl 플러그인도 지속적으로 발전할 것으로 예상된다.
간단한 기능 확장의 형태로 시작하여 오늘날의 다양한 플러그인으로 성장한 역사를 가진 kubectl 플러그인은 kubectl을 더욱 강력한 도구로 만들고 있다.
아래의 사이트(https://krew.sigs.k8s.io/plugins) 를 통해 인기있는 플러그인을 확인해 볼 수 있다.
Star 순으로 보면 아래의 순위로 확인된다.
krew(38.3K) - kubectl plugin 패키지 매니저
octant(38.3K) - 웹 기반 쿠버네티스 클러스터 관리 도구
kubectx(34.9K) - 쿠버네티스 컨텍스트를 빠르게 전환
kubens(30.5K) - 쿠버네티스 네임스페이스를 빠르게 전환
kp(18.0K) - 쿠버네티스 명령 줄보다 편리한 프린터
kube-ps1(16.1K) - 셸 프롬프트에 쿠버네티스 정보 표시
kubectl-who-can(8.2K) - RBAC 권한 조회
rbac-lookup(8.1K) - RBAC 권한 확인
k9s(7.4K) - 쿠버네티스 클러스터를 관리할 수 있는 탁월한 터미널 기반 UI 도구
kubectl-neat(7.0K) - kubectl 명령 단순화
ctx(5.3K) - 컨텍스트 관리
gke-credentials(5.1K) - GKE 자격 증명 관리
kubectl-tree(4.3K) - 리소스 계층도 보기
kubectl-aliases(3.9K) - kubectl 에일리어스 관리
kubectl-ns(3.3K) - 네임스페이스 전환
mc(2.7K) - 멀티 클러스터 관리
ns(2.6K) - 네임스페이스 관리
vs(2.5K) - 버전 확인
access-matrix(2.1K) - 권한 매트릭스 생성
kail(2.1K) - 쿠버네티스 로그 실시간 보기
kf(2.1K) - 파일 전달 및 포트포워딩
open-svc(2.0K) - 서비스 프록시 열기
view-utilization(1.7K) - 리소스 사용량 보기
kubeprompt(1.6K) - kubectl 컨텍스트를 프롬프트에 표시
kubetail(1.5K) - 쿠버네티스 로그를 tail
kubectl-su(1.3K) - 다른 사용자로 전환
handle(1.2K) - 쿠버네티스 오브젝트 핸들러
kubepug(1.1K) - Jinja 템플릿으로 리소스 생성
get-all(1.1K) - 모든 리소스 한 번에 가져오기
kubectl-plan(1.0K) - 구축 계획 관리
dds(970) - 디렉터리 간 리소스 복사
eks-token(889) - EKS 세션 토큰 관리
explain-cronjob(873) - 크론잡 스케줄 확인
k8s를 접하는 과정에서 활용할 만한 플러그인 사용법을 아래의 환경 준비, 클러스터 구축, 로깅과 모니터링 관점으로 나누어 소개한다.
(1) krew : 패키지 관리 툴
krew는 kubectl 플러그인을 관리하기 위한 패키지 매니저입니다. kubectl 명령을 통해 krew를 호출할 수 있다.
krew를 사용하면 kubectl 플러그인을 검색, 설치, 제거, 업데이트, 업그레이드 등을 할 수 있다. 또한 사용자 지정 플러그인 인덱스를 관리할 수 있고, 설치된 플러그인 리스트를 볼 수 있다.
krew를 통해 kubectl의 기능을 확장하는 다양한 플러그인을 쉽고 편리하게 관리할 수 있다.
$ kubectl krew install df-pv
kubectl krew install df-pv
Updated the local copy of plugin index.
Installing plugin: df-pv
Installed plugin: df-pv
\
| Use this plugin:
| kubectl df-pv
| Documentation:
| https://github.com/yashbhutwala/kubectl-df-pv
/
WARNING: You installed plugin "df-pv" from the krew-index plugin repository.
These plugins are not audited for security by the Krew maintainers.
Run them at your own risk.(가) kubectl krew search: 설치 가능한 kubectl plugin 검색
(나) kubectl krew install: kubectl plugin 설치
(다) kubectl krew uninstall: 설치된 kubectl plugin 삭제
(라) kubectl krew upgrade: 설치된 kubectl plugin 업그레이드
(마) kubectl krew list: 설치된 kubectl plugin 리스트 보기
아래 내용부터는 설치는 kubectl krew install을 사용하므로 생략하고, 사용법 위주로 설명한다.
(1) pod-lens : pod 리소스 현황 확인
$ kubectl pod-lens -n unitybuild-base
[Namespace] unitybuild-base
└─┬ [Namespace] unitybuild-base Replica:
└─┬ [] [Ready] Node IP: 10.26.0.100
├─┬ [Node] aks-agentpool2-12810365-vmss000006 [Running] Pod IP: 10.26.0.133
│ └─┬ [Pod] unitybuild-base [Running] Restart: 0
│ └── [Container] docker
├── [PVC] pvc-dockerd
├── [PVC] pvc-scripts
├── [PVC] pvc-azurefile-unitybuild-base
└── [ConfigMap] kube-root-ca.crt
Failed to get other, These l do not exist: [release] [app] [k8s-app] [app.kubernetes.io/name].+ So no related resources could be found.
Related Resources
Kind: PVC
Name: pvc-azurefile-unitybuild-base
Storage Class: azurefile-csi-premium
Access Modes: ReadWriteMany
Size: 300Gi
PV Name: pv-azurefile-unitybuild-base
--- ---
Kind: PVC
Name: pvc-dockerd
Storage Class: default
Access Modes: ReadWriteOnce
Size: 10Gi
PV Name: pvc-6b2aec32-ed37-48ee-9750-816bf753fc32
--- ---
Kind: PVC
Name: pvc-scripts
Storage Class: default
Access Modes: ReadWriteOnce
Size: 1Gi
PV Name: pvc-d8f43d43-ea6f-42f5-a553-2f722b29d4fc
--- ---
Kind: ConfigMap
Name: kube-root-ca.crt
--- ---(2) kubectx(컨텍스트 전환), kubens(네임스페이스 전환)
$ kubectx aks-aop-test
$ kubens default (3) octant :웹 기반 쿠버네티스 클러스터 관리 도구, brew install 로 설치 가능( ex : brew install octant)
(4) k9s :쿠버네티스 클러스터를 관리할 수 있는 탁월한 터미널 기반 UI 도구, brew install 로 설치 가능( ex : brew install k9s)
(5) kubectl-tree : 리소스 계층 보기
$ kubectl tree deployment/s-deploy-admin-portal
NAMESPACE NAME READY REASON AGE
aop Deployment/s-deploy-admin-portal - 50d
aop ├─ReplicaSet/s-deploy-admin-portal-56c4c98dc4 - 4h13m
aop │ ├─Pod/s-deploy-admin-portal-56c4c98dc4-24662 True 4h13m
aop │ └─Pod/s-deploy-admin-portal-56c4c98dc4-hktmk True 4h6m
aop ├─ReplicaSet/s-deploy-admin-portal-6b9fd68d99 - 7d23h
aop ├─ReplicaSet/s-deploy-admin-portal-789c7d6f88 - 2d7h
aop └─ReplicaSet/s-deploy-admin-portal-84cb95699b - 10d(6) df-pv : pv 정보 보기
$ kubectl df-pv -n unitybuild-base
PV NAME PVC NAME NAMESPACE NODE NAME POD NAME VOLUME MOUNT NAME SIZE USED AVAILABLE %USED IUSED IFREE %IUSED
pvc-d8f43d43-ea6f-42f5-a553-2f722b29d4fc pvc-scripts unitybuild-base aks-agentpool2-12810365-vmss000006 unitybuild-base scripts 973Mi 28Ki 957Mi 0.00 12 65524 0.02
pv-azurefile-unitybuild-base pvc-azurefile-unitybuild-base unitybuild-base aks-agentpool2-12810365-vmss000006 unitybuild-base unitybuild-base 500Gi 101Gi 398Gi 20.33 0 0 NaN
pvc-6b2aec32-ed37-48ee-9750-816bf753fc32 pvc-dockerd unitybuild-base aks-agentpool2-12810365-vmss000006 unitybuild-base docker-socket 9Gi 24Ki 9Gi 0.00 11 655349 0.00(1) tail : 로그 보기
$ kubectl tail
aop/s-deploy-build-api-5fb8bb5c47-j74j9[s-container-build-api]: [2023-09-15 18:25:26.920] [null :: null :: 10.26.0.196] [DEBUG] o.springframework.web.filter.CommonsRequestLoggingFilter - Before request [GET /actuator/health, client=10.26.0.196, headers=[host:"10.26.1.30:8080", user-agent:"kube-probe/1.26", accept:"*/*", connection:"close"]]
aop/s-deploy-build-api-5fb8bb5c47-j74j9[s-container-build-api]: [2023-09-15 18:25:26.922] [null :: null :: 10.26.0.196] [DEBUG] o.springframework.web.filter.CommonsRequestLoggingFilter - After request [GET /actuator/health, client=10.26.0.196, headers=[host:"10.26.1.30:8080", user-agent:"kube-probe/1.26", accept:"*/*", connection:"close"]]
mysql/mysql-0[mysql]: 2023-09-15T09:25:27.886784Z 1270277 [Warning] [MY-013360] [Server] Plugin mysql_native_password reported: ''mysql_native_password' is deprecated and will be removed in a future release.(2) kube-ps1 : 프롬프트 확인
# 설치
$ curl -Lo kube-ps1.tar.gz https://github.com/jonmosco/kube-ps1/archive/master.tar.gz
$ tar -xzf kube-ps1.tar.gz
$ cd kube-ps1-master
$ mkdir -p ~/.kube
$ cp kube-ps1.sh ~/.kube/
# 쉘 설정 파일에 반영 : .zshrc
source ~/.kube/kube-ps1.sh
PROMPT='$(kube_ps1)'$PROMPT
# 결과 확인
(⎈|AKS-S-AOP:default)➜ ~(3) stern : 리소스 생성 중 문제 확인 : 실시간 로그 확인을 통해서 리소스 생성 과정의 문제 확인 가능
# 사용법 예) pod 리소스 생성 과정을 실시간 로그로 확인
$ stern unitybuild-base -n unitybuild-base(4) kubernetic : 쿠버네티스 클러스터를 관리할 수 있는 데스크톱 애플리케이션
# 설치
$ brew install --cask kubernetic
==> Downloading https://kubernetic.s3.amazonaws.com/Kubernetic-4.4.0.dmg
##################################################################################################################################### 100.0%
==> Installing Cask kubernetic
==> Moving App 'Kubernetic.app' to '/Applications/Kubernetic.app'
🍺 kubernetic was successfully installed!kubectl 기능을 확장하기 위한 모듈에 대해 확인해 보았다.
kubectl만으로는 한계가 있어 플러그인 기능이 필요하며, 적절히 활용하면 k8s 운영을 보다 효과적으로 할 수 있다.
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.