당신은 어떤 종류의 엔지니어인가요? 겉모습만 보고 짐작할 수 있는 사람이 있을까요? 아마도 추측하는 것은 불가능할 것입니다.
내가 본 적이 없는 kubectl 가이드 에서 번역됨 , 저자 Jake Page.
누군가가 키보드만 보고 추측할 수 있다면 어떨까요? 이제 좀 더 쉬워졌을 것 같아요.
키보드의 "k" 키가 닳았을 때 Kubernetes 엔지니어를 상대하고 있다는 것을 알고 계실 것입니다 .
Glasskube 사무실 에서는 필요할 경우를 대비해 예비 "k" 키를 어디서나 찾을 수 있습니다.
물론 농담이에요.
낡은 키보드가 소유자에 대해 어떻게 말하는지 잘 모르겠습니다. 하지만 저는 능숙한 Kubernetes 관리자 가 되고자 하는 모든 사람에게 kubectl이 얼마나 중요한지 알고 있습니다 .
kubectl은 Kubernetes API와 통신하기 위한 CLI 도구로, 처음에는 단순해 보이지만 빠르게 복잡해질 수 있습니다.
그래서 이 블로그 게시물에서 제 목표는 제가 막 시작했을 때 갖고 싶었던 가이드를 작성하는 것입니다 . 먼저 명령 구문과 유용한 명령에 집중한 다음 kubectl 및 Kubernetes의 기능을 확장하도록 설계된 플러그인 및 도구의 활발한 생태계 로 이동하세요 .
또한 유용한 kubectl 치트 시트뿐만 아니라 몇 가지 팁과 요령도 공유합니다.
시작하자.
부인 성명
이것은 Kubernetes에 관한 기사가 아닙니다. K8s는 다양한 유형의 Kubernetes 개체 및 상호 작용과 같은 많은 개념을 다루는 매우 큰 기술입니다. 이 토론에서는 귀하가 이러한 개념을 잘 알고 있다고 가정합니다. 대신, kubectl과 그 사용법, 그리고 이를 기반으로 구축된 도구에 대해 구체적으로 집중하겠습니다.
시작하기 전에
모든 사람을 위해 Kubernetes 패키지 관리를 개선하는 오픈 소스 프로젝트를 지원한다면 Glasskube를 지원 하고 GitHub에서 별표를 남겨주세요.
설치하다
kubectl을 설치하려면 운영 체제에 따라 몇 가지 다른 옵션이 있습니다. 몇 가지 일반적인 플랫폼에 설치하는 방법은 다음과 같습니다.
리눅스(우분투/데비안)
sudo apt-get update && sudo apt-get install -y kubectl
Homebrew를 사용하는 MacOS
brew install kubectl
Chocolatey를 사용하는 Windows
choco install kubernetes-cli
설치 후 다음 명령을 실행하여 kubectl이 올바르게 설치되었는지 확인할 수 있습니다.
kubectl version --client
kubectl 명령:
kubectl은 Kubernetes API와 통신하는 데 사용되는 명령줄 인터페이스(CLI) 도구입니다. 명령어가 너무 많아서 기억하기 힘들 정도입니다.
하지만 걱정하지 마세요. 일부 사람들이 상상하는 것만큼 무섭지는 않습니다.
명령 참조, k8s 개체 관련 명령, 유용한 별칭 및 명령 완성에 빠르게 액세스하는 방법을 살펴보겠습니다. 하지만 먼저 명령 문자열은 어떻게 구성됩니까?
문법
영어와 중국어는 SVO (주어-동사-목적어 ) 언어입니다.
힌디어와 한국어는 SOV( 주어목적어 ) 언어입니다.
kubectl이 언어라면 **kubectl + 동사 + object/[선택적 이름] + 플래그(kvof)** 언어가 됩니다.
또한 언어와 마찬가지로 문법을 배우고 흡수하는 가장 좋은 방법은 긴 동사와 목적어 목록을 암기하기보다는 문맥에 맞게 사용하는 것입니다.
문제가 발생하여 모든 Kubernetes 버전에서 기존 Kubernetes 개체를 빠르게 참조하려면 kubectl api-resources를 실행하세요.
명령은 원하는 Kubernetes에 적용할 작업[동사]을 선택하여 구축된 리소스[객체] 이며, 일반적으로 리소스 이름 뒤에는 적용할 수 있는 필터[플래그] 가 많이 있습니다. 명령을 실행하면 최종 범위와 출력이 결정됩니다.
yaml 형식의 출력과 함께 일반 get 동사를 사용하여 glasskube-system 네임스페이스의 모든 리소스를 검색하는 명령 빌드 예제를 살펴보겠습니다 .
kubectl get all --namespace glasskube-system -o yaml
이전에 들어본 적이 없는 Kubernetes 리소스를 발견했거나 복습이 필요한 경우 kubectl explain [resource-name]을 사용하여 터미널 설명 및 사용 지침을 얻으세요.
꼭 필요한 일
Kubernetes 환경에서 작업할 때는 새 애플리케이션 배포, 실패한 리소스 문제 해결, 사용량 확인 등 다양한 작업을 수행하게 됩니다. 나중에 선언적 작업 방식을 사용하는 것이 워크로드를 정의하고 배포하는 데 어떻게 더 나은지 살펴보겠습니다. 하지만 그 밖의 모든 경우에는 유용한 명령형 Kubernetes 명령이 준비되어 있습니다.
시작하는 간단한 명령은 다음과 같습니다.
# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx
# Delete a pod named "nginx-deployment" in the default namespace
kubectl delete pod nginx-deployment
명령형 명령을 다음 단계로 진행하려면 TUI 편집기를 사용하여 리소스를 수정할 수 있다는 점을 알아두세요.
kubectl edit -n [namespace] [resource-name]을 실행하면 다음과 유사한 텍스트 편집기가 열립니다. vim 처럼 편집하고 종료하려면 ESC + :q!를 실행하세요.
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/default-container: manager
creationTimestamp: "2024-04-22T17:07:39Z"
generateName: glasskube-controller-manager-556ff6fccf-
labels:
control-plane: controller-manager
pod-template-hash: 556ff6fccf
name: glasskube-controller-manager-556ff6fccf-4qlxz
namespace: glasskube-system
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: glasskube-controller-manager-556ff6fccf
uid: 430e90e9-32f3-45f6-92dc-4bae26ae1654
"/var/folders/2q/wjmbwg1n5vn8v7vlw17nsz0h0000gn/T/kubectl-edit-1306753911.yaml" 209L, 5898B
대부분의 명령은 모든 유형의 Kubernetes 개체에서 작동합니다. 특정 Kubernetes 리소스에 유용한 추가 특정 명령을 논의하기 전에 다양한 개체에 적용할 수 있는 몇 가지 유용한 플래그를 이해하는 것이 좋습니다.
유용한 플래그:
- 환경 :
--env 플래그를 사용하면 생성 중인 컨테이너에 대한 환경 변수를 지정할 수 있습니다.
kubectl run nginx-deployment --image=nginx --env="ENV_VARIABLE=value"
— 템플릿:
이 플래그를 사용하면 kubectl 명령의 출력 형식에 대한 Go 템플릿을 지정할 수 있습니다. 출력 구조, 필터링 또는 프리젠테이션을 사용자 정의하려는 경우 매우 편리합니다.
kubectl get pods --template='{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'
— 필드 선택기:
이 플래그를 사용하면 특정 필드를 기준으로 리소스를 필터링할 수 있습니다. 예를 들어 상태나 라벨을 기준으로 Pod를 필터링할 수 있습니다.
kubectl get pods --field-selector=status.phase=Running
— 필드 선택기 유형=[일반/경고]:
이는 유형(정상 또는 경고)을 기준으로 이벤트를 필터링할 수 있는 필드 선택기 플래그의 특정 용도입니다.
kubectl events -n [resource-namespace] — for=[resource-kind]/[resource-name]
이 명령은 지정된 네임스페이스의 특정 리소스와 관련된 이벤트를 가져옵니다. 특정 리소스와 관련된 새로운 이벤트를 지속적으로 모니터링합니다.
kubectl events -n my-namespace --for=deployment/my-deployment
기존 학교와 새 학교의 감시 플래그:
-o wide 주 -w:
-o wide: 리소스에 대한 추가 세부 정보를 표시하는 넓은 출력 형식을 제공하는 "기존" 플래그입니다.
-w: watch 명령과 유사하게 리소스 변경 사항을 지속적으로 모니터링할 수 있는 **"새 학교"** 플래그입니다.
포드 사용
포드는 Kubernetes 생태계에서 가장 작은 추상화입니다. 컨테이너를 수용하는 논리 단위입니다. 포드는 리소스를 소비하고 로그를 실행하고 생성할 수 있습니다. 다음은 Pod를 관리하는 데 도움이 되는 몇 가지 명령어입니다.
# Show resource usage of a pod
kubectl top pod -n [namespace] [pod-name]
# Run a command inside a new pod in the cluster
kubectl run -it ubuntu --image ubuntu --rm -- bash
# Show resource labels as columns
# e.g. kubectl get pods -n [namespace] -L vault-active -L vault-sealed
kubectl get pods -n [namespace] -L vault-active -L vault-sealed
# Execute a command inside a pod
kubectl exec -it [pod-name] -n [namespace] --
# Port forward to a pod
kubectl port-forward [pod-name] [local-port]:[remote-port] -n [namespace]
# Show container logs
kubectl logs -n [namespace] [pod-name]
kubectl logs -n [namespace] /deployment/[deployment-name] # Use -f flag for continuous streaming
# Run a command inside an existing container
kubectl exec -it -n [namespace] [pod-name] -- [command...]
노드 사용
노드는 컴퓨팅 성능과 스토리지를 제공하는 기본 인스턴스이며, Kubernetes 클러스터는 노드 위에서 실행됩니다.
# Show node resource utilization
kubectl top node [node-name] # Node name is optional; without shows table of all nodes
# Get node information
kubectl get node
배포, DaemonSet 및 StatefulSet 사용
배포, 데몬 세트 및 상태 저장 세트는 애플리케이션 워크로드의 배포 및 확장을 관리하는 데 사용되는 Kubernetes의 상위 수준 추상화입니다.
# Restart a workload (e.g. deployment, stateful set, daemon set)
kubectl rollout restart -n [namespace] [workload-kind]/[workload-name] # Triggers a re-creation of all pods for this workload, adhering to the workload configuration
# Check the status of a deployment rollout
kubectl rollout status deployment/[name]
# View rollout history of a deployment
kubectl rollout history deployment/[name] # View rollout history of a deployment
# Scale a deployment to the specified number of replicas
kubectl scale deployment/ --replicas=[number] # Scale a deployment to the specified number of replicas
# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager
#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag
# Delete DaemonSet
kubectl delete daemonset [daemonset-name]
직업 사용
작업은 특정 작업을 수행하기 위해 Pod 실행을 관리하고 종료되기 전에 작업이 성공적으로 완료되도록 보장합니다.
# Run a CronJob manually
kubectl create job [job-name] --image=image/name
# Creates a new job from the job template specified in the cronjob
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]
비밀 사용
비밀은 비밀번호, OAuth 토큰, SSH 키와 같은 민감한 정보를 Kubernetes에 안전하게 저장하는 데 사용됩니다.
# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa
# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'
# Get a value from a secret using jsonpath
kubectl get secrets [secret-name] -o jsonpath="{.data.key1}" | base64 --decode
JSONPath는 JSON 문서에서 특정 데이터를 추출하는 데 사용되는 쿼리 언어입니다. Kubernetes에서 JSONPath 표현식은
-o jsonpath
kubectl 명령의 플래그와 함께 사용되어 이러한 명령의 출력에서 특정 정보를 추출하는 경우가 많습니다.
쉘 완성
kubectl 명령이 매우 빨리 길어질 수 있다는 것을 눈치챘을 것입니다. 멋진 셸 완성 스크립트를 bash 또는 zshell 파일에 추가하여 쉽게 태그를 완성할 수 있습니다. 더 이상 벼락치기를 하지 마세요. 모든 셸 세션에서 이를 달성하려면 ~/.zshrc 파일에 다음을 추가하세요.
source <(kubectl completion zsh)
그리고 쉘을 다시 시작하십시오. Bash를 사용하는 경우 다음 지침을 따르세요.
# Install bash-completion package
sudo apt-get install -y bash-completion
# Store the output of the completion command in .bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Activate the completion rules
source ~/.bashrc
선언적으로 작업
Kubernetes 리소스의 선언적 관리에는 YAML 매니페스트 파일을 사용하여 원하는 리소스 상태를 지정하고 이러한 매니페스트를 클러스터에 적용하는 작업이 포함됩니다.
YAML 파일 생성
Kubernetes 객체를 본인이 작성했든 다른 사람이 작성했든 관계없이 모든 객체는 YAML 파일에 정의됩니다. Kubernetes API는 YAML 파일 정의를 사용하여 클러스터 상태를 이해합니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: glasskube-deployment
spec:
replicas: 3
selector:
matchLabels:
app: glasskube
env: prod
template:
metadata:
labels:
app: glasskube
env: prod
spec:
containers:
- name: glasskube-container
image: your-glasskube-image:latest
이 배포를 처음부터 생성하려면 kubectl create 명령을 사용하십시오.
kubectl create -f glasskube-deployment.yaml
애플리케이션 YAML 파일(클라이언트 애플리케이션)
YAML 파일을 사용하는 것은 Kubernetes 리소스를 관리하는 표준 방법입니다. YAML 형식으로 원하는 리소스 상태를 정의하고 이러한 YAML 파일을 클러스터에 적용할 수 있습니다.
kubectl apply -f manifest.yaml
서버측 애플리케이션(SSA)
서버 측 애플리케이션은 Kubernetes 리소스에 구성 변경 사항을 적용하는 새로운 방법입니다. SSA를 사용하면 변경 사항이 서버 측에 직접 적용됩니다. 즉, Kubernetes API 서버가 원하는 상태를 달성하는지 확인하는 역할을 담당합니다.
kubectl apply --server-side -f manifest.yaml
플러그인 및 도구
Kubernetes에 관해 앞뒤로 토론하는 것을 볼 때마다 그것이 정확히 무엇인지 알 수 있습니다. 어떤 사용 사례가 가장 적합하고 어떻게 생각하는 것이 가장 좋은지 Kelsey Hightower 의 동일한 트윗이 떠오릅니다.
이러한 견해는 Kubernetes 수명주기의 다양한 단계를 처리하는 데 도움이 되도록 설계된 Kubernetes 플러그인 및 도구의 대규모 생태계에서 입증되었듯이 널리 인식되고 있습니다.
Krew Kubernetes 플러그인 관리자
새로운 플러그인을 찾기 위한 강력한 플러그인 관리자는 krew 이며 , 설치 방법은 다음과 같습니다. Krew를 통해 kubectl 플러그인을 설치하는 명령은 다음과 같습니다.
kubectl krew install <PLUGIN_NAME>
주요 디버깅 및 도구 범주 중 일부를 살펴보고 가장 유용한 항목 중 일부를 강조해 보겠습니다. 참고할 내용이 너무 많아서 각 섹션마다 명예 섹션을 추가하겠습니다.
콘텐츠 및 네임스페이스 전환
Kubernetes 환경에서는 항상 클러스터와 네임스페이스라는 두 가지 계층적 컨텍스트 내에서 작업합니다. 정확한 명령 실행을 보장하려면 원하는 출력을 얻기 위한 적절한 컨텍스트를 지정해야 합니다. 클러스터 컨텍스트 또는 네임스페이스 전환에는 기억하기 어려운 긴 명령이 포함될 수 있으며, 여기에는 Kubectl 및 Kubens와 같은 도구가 사용됩니다.
Kubectx와 쿠벤스
여기에서 사용 가능한 클러스터와 네임스페이스를 쉽게 확인하고 전환할 수 있습니다.
여기에서 설치 지침을 참조하세요 .
칭찬할만한 점:
kubectl-cf : (컨텍스트 대신) kubeconfig 파일 간을 전환하는 더 빠른 방법입니다.
시계
Kubernetes 클러스터는 애플리케이션을 실행하기 위해 서로 의존하는 움직이는 부분이 많은 복잡한 시스템입니다. 무슨 일이 일어나고 있는지 항상 명확하게 이해하는 것이 중요합니다.
k9s
K9s는 터미널에서 실행되는 편리하고 가벼운 대화형 Kubernetes 대시보드입니다. k8s 리소스를 시각화하는 것 외에도 한 곳에서 쉽게 포드를 탐색하고, 매니페스트를 편집하고, 워크로드를 관리할 수 있습니다. 이것은 아마도 제가 가장 좋아하는 Kubernetes 관리 도구 중 하나일 것입니다.
설치 지침은 여기에 있습니다 .
kubectl 트리
객체에 대한 ownerReferences를 통해 Kubernetes 객체 간의 소유권 관계를 탐색하기 위한 kubectl 플러그인입니다.
설치하다 :
kubectl krew install tree
kubectl tree --help
쿠베컬러
KubeColor는 kubectl 출력에 색상을 추가하는 데 사용됩니다.
설치 지침은 여기에 있습니다.
패키지 관리
일반 패키지 관리 도구를 사용한 클러스터 패키지 관리는 어려울 수 있으며 패키지 업데이트는 지루할 수 있습니다. 구성이 서투르고 지금까지는 이를 선언적으로 적용하는 데 필요한 패키지 스택이 통제 불능 상태였습니다.
유리 큐브:
Glasskube를 사용하면 helm과 같은 기존 패키지 관리자에서 발견되는 모든 문제점이 제거되어 워크로드를 관리할 시간을 확보하고 k8s 패키지 스택 관리에 대해 걱정할 필요가 없습니다.
회로망
Kubectl-속눈썹:
kubectl-Cilium은 워크로드 간의 네트워크 연결을 프로비저닝, 보호 및 관찰하기 위한 eBPF 기반 클라우드 네이티브 솔루션인 Cilium과 상호 작용하는 플러그인입니다.
설치하다:
kubectl krew install cilium
인증 관리자
Cert-manager는 인증서 및 인증서 발급자를 Kubernetes 클러스터의 리소스 유형으로 추가하여 이러한 인증서 획득, 업데이트 및 사용을 단순화합니다.
설치 지침은 여기에서 확인할 수 있습니다.
특별 언급 :
Ksniff : tcpdump 및 Wireshark를 활용하여 Kubernetes 클러스터의 모든 포드에서 원격 캡처를 시작하는 kubectl 플러그인입니다.
RBAC
입방체학
Kubelogin은 kubectl oidc-login이라고도 알려진 Kubernetes OpenID Connect(OIDC) 인증 플러그인입니다.
설치 지침은 여기에 있습니다 .
Kube 정책 고문
Kube-policy-advisor를 사용하면 활성 K8s 환경이나 Pod 사양(배포, 데몬 세트, Pod 등)이 포함된 단일 .yaml 파일에서 K8s Pod 보안 정책(PSP) 또는 OPA 정책을 더 쉽게 생성할 수 있습니다.
설치하다:
kubectl krew install advise-policy
칭찬할만한 점:
- kubectl-who-can : SUBJECTS가 Kubernetes의 VERB [TYPE/NAME |
- rakkess : 액세스 평가 - 서버 리소스의 액세스 매트릭스를 표시하기 위한 kubectl 플러그인
- kubectl-rolesum : 지정된 주제(ServiceAccount, 사용자 및 그룹)에 대한 RBAC 역할을 요약합니다.
린팅
Kubectl-깔끔함:
Kubectl-neat : Kubectl-neat는 Kubernetes 매니페스트에서 복잡함을 제거하고 더 읽기 쉽게 만듭니다. 주로 Kubernetes 개체 모델에 의해 삽입된 기본값과 일반적인 변이 컨트롤러라는 두 가지 범주의 콘텐츠를 찾고 무시합니다.
설치하다:
kubectl krew install neat
KubeLinter:
KubeLinter는 Kubernetes YAML 파일과 Helm 차트를 분석하고 이를 다양한 모범 사례와 비교하여 생산 준비 상태와 보안에 중점을 둡니다.
설치 지침: https://github.com/stackrox/kube-linter?tab=readme-ov-file#installing-kubelinter.
클러스터 유지 관리 및 보안
쿠베퍼그
KubePug는 특정 Kubernetes 버전에 대한 API 지원 중단 정보가 포함된 생성된 데이터 파일 data.json을 다운로드하고, 실행 중인 Kubernetes 클러스터를 검사하여 지원 중단의 영향을 받는 개체가 있는지 확인하고, 영향을 받는 개체를 사용자에게 표시합니다.
예:
다음 명령을 사용하여 실행 중인 클러스터의 상태를 볼 수 있습니다.
$ kubepug --k8s-version=v1.22 # Will verify the current context against v1.22 version
[...]
RESULTS:
Deprecated APIs:
PodSecurityPolicy found in policy/v1beta1
├─ Deprecated at: 1.21
├─ PodSecurityPolicy governs the ability to make requests that affect the Security Context that will be applied to a pod and container.Deprecated in 1.21.
-> OBJECT: restrictive namespace: default
Deleted APIs:
APIs REMOVED FROM THE CURRENT VERSION AND SHOULD BE MIGRATED IMMEDIATELY!!
Ingress found in extensions/v1beta1
├─ Deleted at: 1.22
├─ Replacement: networking.k8s.io/v1/Ingress
├─ Ingress is a collection of rules that allow inbound connections to reach the endpoints defined by a backend. An Ingress can be configured to give servicesexternally-reachable urls, load balance traffic, terminate SSL, offer namebased virtual hosting etc.DEPRECATED - This group version of Ingress is deprecated by networking.k8s.io/v1beta1 Ingress. See the release notes for more information.
-> OBJECT: bla namespace: blabla
설치하다:
kubectl krew install deprecations
큐브스케이프:
Kubescape 는 스캐너 노이즈에서 보안 신호를 분리하는 클러스터, CI/CD 파이프라인 및 IDE를 위한 오픈 소스 Kubernetes 보안 플랫폼입니다.
여기에 설치 지침이 있습니다 .
이야기할 가치가 있는 것:
kubectl-watch : Kubernetes 리소스의 증분 변경 사항을 시각적으로 볼 수 있는 또 다른 관찰 도구입니다.
문제 해결
검사관 가젯:
Inspektor-gadget은 Kubernetes 리소스 및 애플리케이션을 디버깅하고 검사하기 위한 도구(또는 가젯) 모음입니다.
Inspektor 가젯 도구를 가젯이라고 합니다. 하나, 둘 또는 여러 개의 가젯을 배포할 수 있습니다.
K8s-gpt:
k8sgpt 는 Kubernetes 클러스터를 스캔하고 일반 영어로 문제를 진단 및 분류하는 도구입니다.
여기에 설치 지침이 있습니다 .
이야기할 가치가 있는 것:
kubectl node-shell : 실행 중인 노드의 호스트 운영 체제에서 직접 루트 셸을 시작합니다.
벌채 반출
고물:
Stern을 사용하면 Kubernetes의 여러 포드와 포드 내의 여러 컨테이너를 추적할 수 있습니다. 더 빠른 디버깅을 위해 각 결과는 색상으로 구분됩니다.
설치하다:
kubectl krew install stern
kubectl 플러그인 사용의 일부 보안 영향에는 취약성, 권한 상승 및 부주의한 데이터 공개가 포함됩니다. 적극적으로 유지 관리되고 가급적이면 주변에 활발한 커뮤니티가 있는 플러그인만 사용하십시오.
별명
기억해야 할 kubectl 명령이 너무 많습니다. 키보드 단축키나 별칭을 사용하여 생활을 단순화하세요.
여기에서 kubectl에 대한 수백 개의 편리한 셸 별칭을 생성하기 위한 스크립트가 포함된 저장소를 찾을 수 있습니다. 문제는 많은 별칭이 매우 길어서 기억하기 어려울 수 있다는 것입니다. 하지만 걱정하지 마십시오. 위 스크립트에서 생성된 수많은 별칭을 처리하는 방법에 대한 Benoit Couetil의 매우 유용한 블로그 게시물을 찾았습니다.
Kubectl 치트 시트
치트 시트 없이는 어떤 가이드도 완성되지 않습니다. 그렇죠?
# Basic Commands
# List API Resources
kubectl api-resources
# List Resources
kubectl get [name]
# Explain Resources
kubectl explain
# Working with Pods
# Create a new deployment named "nginx-deployment" with the nginx image
kubectl run nginx-deployment --image=nginx
# Show Resource Usage of a Pod
kubectl top pod -n [namespace] [pod-name]
# Run Command in Pod
kubectl run -it [pod-name] --image [image-name] --rm -- [command]
# Show Resource Labels
kubectl get pods -n [namespace] -L [label1] -L [label2]
# Execute Command in Pod
kubectl exec -it [pod-name] -- [command]
# Port Forwarding
kubectl port-forward [pod-name] [local-port]:[remote-port]
# Filtering Pods by Node Name
kubectl get pods --field-selector spec.nodeName=[node-name]
# Filtering Pods by Phase
kubectl get pods --field-selector status.phase=Running
# Delete a pod named "my-pod" in the default namespace
kubectl delete pod my-pod
# Working with Nodes
# Watch Nodes (Old School)
watch kubectl get nodes -o wide
# Watch Nodes (New School)
kubectl get nodes -w
# Node Resource Utilization
kubectl top node [node-name]
# Get Node Resource
kubectl describe node [node-name]
# Working with Deployments, Daemonsets, and StatefulSets
# Restart Workload
kubectl rollout restart -n [namespace] [kind]/[name]
# Rollout Status
kubectl rollout status [kind]/[name]
# Rollout History
kubectl rollout history [kind]/[name]
# Scale Deployment
kubectl scale deployment/[name] --replicas=[replica-count]
#Update Deployment Image
kubectl set image deployment/[deployment-name] [container-name]=new-image:tag
# Watch events related to a deployment
kubectl events -n glasskube-system --for=deployment/glasskube-controller-manager
# Delete DaemonSet
kubectl delete daemonset [daemonset-name]
# Working with Jobs
# Run CronJob Manually
kubectl create job -n [namespace] --from=cronjob/[cron-job-name] [job-name]
# Working with Secrets
# Get Value from Secret
kubectl get secret -n [namespace] [secret-name] -o=jsonpath='{.data.[key]}' | base64 --decode
# Create Secret
kubectl create secret generic [secret-name] --from-literal=key1=value1 --from-file=ssh-privatekey=~/.ssh/id_rsa
# Get a value from a secret
kubectl get secrets -n [namespace] [secret-name] --template='{{ .data.[key-name] | base64decode }}'
# Working with Containers
# Show Container Logs
kubectl logs -n [namespace] [pod-name]
kubectl logs -n [namespace] deployment/[deployment-name]
# Run Command in Container
kubectl exec -it -n [namespace] [pod-name] -- [command]
# Working Imperatively
# Modify Resource
kubectl edit -n [namespace] [resource-kind]/[resource-name]
# Delete Resource
kubectl delete [resource-kind]/[resource-name]
# Create Resource
kubectl create -f [resource-file]
# Working Declaratively
# Use Server-Side Apply (SSA)
kubectl apply --server-side -f [resource-file]
# Events and Logs
# Show Events for Resource
kubectl get events -n [namespace] --field-selector involvedObject.kind=[kind] --field-selector involvedObject.name=[name]
# Filtering Events by Type
kubectl get events --field-selector type=Warning
# Filtering Events by Involved Object Name
kubectl get events --field-selector involvedObject.name=[resource-name]
# Show Resource Usage
kubectl top
기타 리소스
- 주요 플러그인 목록: https://github.com/ishantanu/awesome-kubectl-plugins
- 별칭 목록: https://github.com/ahmetb/kubectl-aliases
- Krew 플러그인 저장소: https://krew.sigs.k8s.io/plugins/
이런 종류의 콘텐츠가 마음에 들고 더 많은 콘텐츠를 보고 싶다면 GitHub에서 별표를 표시하여 지원해 주세요.
1990년대에 태어난 프로그래머가 비디오 포팅 소프트웨어를 개발하여 1년도 안 되어 700만 개 이상의 수익을 올렸습니다. 결말은 매우 처참했습니다! 고등학생들이 성인식으로 자신만의 오픈소스 프로그래밍 언어 만든다 - 네티즌 날카로운 지적: 만연한 사기로 러스트데스크 의존, 가사 서비스 타오바오(taobao.com)가 가사 서비스를 중단하고 웹 버전 최적화 작업 재개 자바 17은 가장 일반적으로 사용되는 Java LTS 버전입니다. Windows 10 시장 점유율 70%에 도달, Windows 11은 계속해서 Open Source Daily를 지원합니다. Google은 Docker가 지원하는 오픈 소스 Rabbit R1을 지원합니다. Electric, 개방형 플랫폼 종료 Apple, M4 칩 출시 Google, Android 범용 커널(ACK) 삭제 RISC-V 아키텍처 지원 Yunfeng은 Alibaba에서 사임하고 향후 Windows 플랫폼용 독립 게임을 제작할 계획이 기사는 Yunyunzhongsheng ( https://yylives.cc/ ) 에 처음 게재되었습니다 . 누구나 방문하실 수 있습니다.