Kubectl
Kubectl은 쿠버네티스 클러스터에 명령을 내리는 CLI(Command Line Interface)입니다.
명령 예제
노드 확인
이름공간 확인:
팟(POD) 확인:
모두 출력:
설치 방법
간단히 snap에서 설치하자:
클러스터 접근
KUBECONFIG 환경 변수를 활용합니다:
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get pods --all-namespaces
helm ls --all-namespaces
또는 명령에 kubeconfig 파일의 위치를 지정합니다:
kubectl --kubeconfig /etc/rancher/k3s/k3s.yaml get pods --all-namespaces
helm --kubeconfig /etc/rancher/k3s/k3s.yaml ls --all-namespaces
파일로 단위 실행
적용하고 싶다면:
그대로 제거하고 싶다면:
제거 방법
Deployment 제거:
특정 네임스페이스의 모든 리소스를 삭제하고 싶다면:
외부에서 kubectl로 클러스터에 접근하기
KUBECONFIG
환경변수에 kube config yaml 파일 경로를 입력한 후 kubectl을 실행하거나, ~/.kube/config
위치에 복사.
k3s를 사용할 경우 k3s#외부에서 kubectl로 클러스터에 접근하기 항목 참조.
Commands
기본 명령 (초보자)
- Kubectl:create - 파일 또는 stdin에서 리소스 생성
- Kubectl:expose - 복제 컨트롤러, 서비스, 배포 또는 팟(Pod)을 가져와 새로운 쿠버네티스 서비스로 노출
- Kubectl:run - 클러스터에서 특정 이미지 실행
- Kubectl:set - 객체의 특정 기능 설정
기본 명령 (중급)
- Kubectl:explain - 리소스에 대한 문서 가져오기
- Kubectl:get - 하나 이상의 리소스 표시
- Kubectl:edit - 서버의 리소스 편집
- Kubectl:delete - 파일 이름, stdin, 리소스 및 이름별로 또는 리소스 및 레이블 선택기로 리소스를 삭제합니다.
Deploy Commands
- Kubectl:rollout - 리소스 롤아웃 관리
- Kubectl:scale - 배포, 복제 세트 또는 복제 컨트롤러의 새 크기 설정
- Kubectl:autoscale - 배포, 복제 세트, 상태 저장 세트 또는 복제 컨트롤러 자동 확장
클러스터 관리 명령
- Kubectl:certificate - 인증서 리소스를 수정합니다.
- Kubectl:cluster-info - 클러스터 정보 표시
- Kubectl:top - 리소스(CPU/메모리) 사용량 표시
- Kubectl:cordon - 노드를 예약 불가로 표시
- Kubectl:uncordon - 노드를 예약 가능으로 표시
- Kubectl:drain - 유지보수 준비 중인 노드 배수
- Kubectl:taint - 하나 이상의 노드에서 오염을 업데이트합니다.
문제 해결 및 디버깅 명령
- Kubectl:describe - 특정 리소스 또는 리소스 그룹에 대한 세부 정보 표시
- Kubectl:logs - 포드의 컨테이너에 대한 로그를 인쇄합니다.
- Kubectl:attach - 실행 중인 컨테이너에 연결
- Kubectl:exec - 컨테이너에서 명령 실행
- Kubectl:port-forward - 하나 이상의 로컬 포트를 포드로 전달
- Kubectl:proxy - Kubernetes API 서버에 대한 프록시 실행
- Kubectl:cp - 컨테이너 간에 파일 및 디렉터리 복사
- Kubectl:auth - 승인 검사
- Kubectl:debug - 워크로드 및 노드 문제 해결을 위한 디버깅 세션 생성
고급 명령
- Kubectl:diff - 라이브 버전과 적용될 버전을 비교합니다.
- Kubectl:apply - 파일 이름 또는 stdin으로 리소스에 구성을 적용합니다.
- Kubectl:patch - 자원의 업데이트 필드
- Kubectl:replace - 파일 이름 또는 stdin으로 리소스를 교체합니다.
- Kubectl:wait - 실험적: 하나 이상의 리소스에서 특정 조건을 기다립니다.
- Kubectl:kustomize - 디렉터리 또는 URL에서 kustomization 대상을 빌드합니다.
설정 명령
- Kubectl:label - 리소스의 레이블을 업데이트합니다.
- Kubectl:annotate - 리소스의 주석을 업데이트합니다.
- Kubectl:completion - 지정된 쉘(bash, zsh 또는 fish)에 대한 출력 쉘 완성 코드
기타 명령
- Kubectl:alpha - 알파 기능에 대한 명령
- Kubectl:api-resources - 서버에서 지원되는 API 리소스를 인쇄합니다.
- Kubectl:api-versions - "group/version" 형식으로 서버에서 지원되는 API 버전을 인쇄합니다.
- Kubectl:config - kubeconfig 파일 수정
- Kubectl:plugin - 플러그인과 상호 작용하기 위한 유틸리티를 제공합니다.
- Kubectl:version - 클라이언트 및 서버 버전 정보를 인쇄합니다.
Troubleshooting
tls: failed to verify certificate
- Remote kubectl x509: certificate is valid for 127.0.0.1 · Issue #1381 · k3s-io/k3s
- Configuration Options | K3s
kubectl 명령을 날리면 다음과 같은 에러가 발생된다:
E0523 10:59:59.467327 2585371 memcache.go:265] couldn't get current server API group list: Get "https://api.yourid.run:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate is valid for api-yourid-run, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not api.yourid.run
E0523 10:59:59.537153 2585371 memcache.go:265] couldn't get current server API group list: Get "https://api.yourid.run:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate is valid for api-yourid-run, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not api.yourid.run
E0523 10:59:59.567092 2585371 memcache.go:265] couldn't get current server API group list: Get "https://api.yourid.run:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate is valid for api-yourid-run, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not api.yourid.run
E0523 10:59:59.596498 2585371 memcache.go:265] couldn't get current server API group list: Get "https://api.yourid.run:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate is valid for api-yourid-run, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not api.yourid.run
E0523 10:59:59.636441 2585371 memcache.go:265] couldn't get current server API group list: Get "https://api.yourid.run:6443/api?timeout=32s": tls: failed to verify certificate: x509: certificate is valid for api-yourid-run, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not api.yourid.run
Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for api-yourid-run, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not api.yourid.run
만약 k3s를 사용한다면 서버의 서비스 파일(/etc/systemd/system/k3s.service
)에 ExeStart 에 --tls-san api.yourid.run
과 같이 도메인을 추가하자:
또는 insecure-skip-tls-verify: true
옵션을 yaml 파일에 추가하자:
apiVersion: v1
clusters:
- cluster:
insecure-skip-tls-verify: true
server: https://api.yourid.run:6443
name: default
...
See also
Favorite site
- [추천] 쿠버네티스 안내서