티스토리 뷰

Kubernetes

K8s kubectl명령어

KyeongRok Kim 2021. 1. 4. 17:35

kubectl설치

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(<kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ 참고

 

k8s 리소스 축약어 모음

https://w.cublr.com/cloud/kubernetes/resource-short-name/

 

kubectl상태 보기

kubectl config view

 

context 등록

context는 kubectl이 동작하는 대상 k8s입니다. 

k config set-context ingress-admin@kubernetes --cluster=kubernetes --user=kubernetes-admin --namespace ingress-nginx

 

context 바꾸기

k config use-context <context_name>

ex> k config use-context ingress-admin@kubernetes

 

kubectl run

curl pod띄우기

kubectl run curl --image=radial/busyboxplus:curl -i --tty

 

Redis띄우기 --image 옵션으로 이미지 지정하기

kubectl run redis --image=redis:alpine --dry-run=client -oyaml > redis-pod.yaml

 

label에 tier:db를 추가해서 띄우기

kubectl run redis --image=redis:alpine -l tier=db

 

8080 container port인 nginx를 띄우는 yml 만들기

k run custom-nginx --image=nginx --port=8080 --dry-run=client -o yaml > pod_custom-ngins.yml

 

Namespace 지정해서 ingress 띄우기

k apply -f ingress_springboot.yml -n ingress-nginx

 

디렉토리에 있는 모든 .yaml파일 한번에 띄우기

kubectl create -f .

 

Deployment 띄운 후에 수정하기

kubectl edit wso2-api-manager

수정 후에 :wq 하면 저장 되고 반영이 됩니다.

 

 

Expose

Deployment Expose하기(Service생성)

kubectl expose deployment wso2-api-manager --port=8080 --target-port=8080 --name=wso2

 

redis라는 이름의 pod를 6379 포트로 expose하는 서비스 생성

k expose pod redis --port=6379 --type=ClusterIP  --name=redis-service --dry-run=client -o yaml > redis-service.yml

 

EKS사용하기

EKS에 kubectl로 접근할 필요가 있을 때 사용합니다.

aws eks --region region update-kubeconfig --name cluster_name

이렇게 나옵니다. Unauthorized가 나와서 로그인을 해야 합니다.

 

aws eks update-kubeconfig \
    --region <region-code> \
    --name <cluster_name> \
    --role-arn arn:aws:iam::<aws_account_id>:role/<role_name>

위 명령을 이용해 롤을 추가 합니다.

 

 

Kubectl get(k get)

전체 Pod보기

kube-system까지 보고 싶을 때 -A옵션을 붙입니다.

k get pod -A

env label이 dev인 pod들 보기

k get po -l env=dev

k get po -l env=dev

 

특정 노드에 띄운 pod만 보기

kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=s<node_name>

 

nginx pod띄우기

kubectl run webserver --image=nginx:1.14 --port 80

실행가능여부 확인하기 --dry-run

kubectl run webserver --image=nginx:1.14 --port 80 --dry-run

deployment yaml파일 생성

kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml > webserver-pod.yaml

 

pod삭제

kubectl delete pod webserver

deployment삭제

kubectl delete deployments.apps mainui

 

webserver-pod.yaml로 pod띄우기

kubectl create -f webserver-pod.yaml

 

서비스 목록 보기

kubectl get svc

 

컨테이너 내부로 들어가기

kubectl exec webserver -it -- /bin/bash

 

컨테이너 ls루트에 memory-pd라는 디렉토리가 있는지

k exec memory-pd -- ls -lh | grep memory-pd

 

pods보기

kubectl get pods

 

 log보기

kubectl logs webserver

kubectl logs -f deployment/python-app --since 1s

 

api리소스 목록 보기

kubectl api-resources

 

hello라는 이름의 api-resource만들기

kubectl create deployment hello --image=httpd

 

hello라는 이름의 pod의 deployment수정하기

kubectl edit deployments.apps hello

 

docker gcr로 배포 with build

 docker build -t gcr.io/static-lens-266702/flask-test:v1 .

docker push gcr.io/static-lens-266702/flask-test:v1

 

Namespace

k create namespace blue # blue라는 이름의 namespace만들기

kubectl get pods -n default # namespace가 default인  pods보기

 

Deployment조회

k -n ns-hello-world describe deploy deployment-name

 

 

file copy

kubectl cp image_client.py <namespace>/<pod_name>:/app/

 

yaml파일 내용 확인

grep -i staticpod /var/lib/kubelet/config.yaml

 

-i <옵션> 에 입력한 키워드가 포함된 줄을 찾아서 출력 해줍니다.

 

 

메트릭 설치

git clone https://github.com/kodekloudhub/kubernetes-metrics-server.git

위 명령어로 clone한 후 해당 디렉토리로 이동합니다.

k apply -f . 으로 설치 합니다.

k top no, k top po 등으로 리소스 점유를 확인 할 수 있습니다.

 

 

Secret

kubectl create secret generic db-secret --from-literal=DB_Host=sql01 --from-literal=DB_User=root --from-literal=DB_Password=password123

 

 

필터링

kubectl describe po | grep -i Container > result-file.txt

describe했을 때 Container가 들어있는 부분만 result-file.txt에 저장하기

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함