본문 바로가기

IT 엔지니어/CLOUD

Docker 기본 명령어

[K8S 기본 명령어]

kubectl version --short

kubectl get nodes

kubectl get nodes -o wide

kubectl get all -A
=kubectl get pods/svc

kubectl get pods --all-namespaces

[쿠버네티스에서 도커 로그인 시크릿]
kubectl create secret docker-registry [mysecret] --docker-username=[user] --docker-password=[1234] --docker-email=[email] 

secret/mysecret created

개인 도커 레지스트리 인증 정보를 
Kubernetes Secret으로 저장할 때 사용

[삭제]
kubectl delete secrets [mysecret]

[확인]
kubectl get secrets

[서비스 어카운트에 imagePullSecrets,mysecret 추가]
kubectl patch -n default serviceaccount/default -p '{"imagePullSecrets":[{"name":"mysecret"}]}'

serviceaccount/default patched

POD : 하나 이상의 컨테이너를 구성하는 쿠버네티스 리소스 ( 컨테이너 묶음 )

 

 

[컨테이너 이미지 다운로드 및 쿠버네티스 클러스터 동작 확인]

kubectl create deploy(ment) web 
--image httpd --replicas 3

kubectl scale deploy [web] 
--replicas 3 -- pod 추가

-------------------------------------

kubectl get ***pods*** -o wide
kubectl get ***nodes*** -o wide --watch

kubectl ***describe*** nodes [master]
kubectl ***describe*** pods/deploy [master]
kubectl get pod [ ] -o yaml
kubectl get deploy [ ] -o yaml

kubectl get deploy 
kubectl get replicasets

[배포 삭제]

kubectl delete deploy [name] /
kubectl delete pods [name] / 단일 서버
kubectl delete pods --all / 전체 삭제
kubectl delete pods [a] -n [namespace]
kubectl delete namespace []

kubectl scale deployment <deployment-name> --replicas=0

kubectl delete deployment <deployment-name>

Pending -> ContentCreating -> Running

[WEBSERVER]

kubectl run webserver --image nginx --port 80 --replicas 3

방화벽 해제

kubectl get pods -o json/yaml/

kubectl logs [name] -f 

[pod forwarding]

kubectl port-forward [] 8080:80 &

kubectk edit deploy [] / --replica 변

* port-forward는 로컬 머신에서만 유효 
* 다른 컴퓨터에서는 접근 불가

lsof -i :8080

 

port-forwarding
port-forwarding으로 변경 확인

 

 

[--dry-run and -o]
kubectl run web7 --image nginx --port 80 --dry-run=client -o yaml > web7.yml

vi web7.yml

port : 80 

 

--dry-run 옵션은 명령어를 실제로 실행하지 않고 무엇을 할 것인지 미리 보여주는 옵션

주로 배포, 설정 변경, 삭제 등의 작업에서 예상 결과를 확인할 때 사용됨

실제로 자원을 생성하지 않고,

적용 시 어떤 리소스가 만들어질지를 YAML 형식으로 미리 확인 가능.

 

 

 

[yml로 pod 생성]
kubectl create -f web7.yml 
kubectk apply -f web7.yml

 

 

 

 

 

 

1. 마스터 노드 방화벽 해제

마스터 노드는 쿠버네티스 API 서버와 등 다양한 컴포넌트가 실행되며, 워커 노드와 통신을 합니다. 마스터에서 중요한 포트들은 6443, 10250 등입니다.

마스터 노드에서 방화벽 해제 예시:

sudo firewall-cmd --zone=public --add-port=6443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=10250/tcp --permanent
sudo firewall-cmd --reload

2. 워커 노드 방화벽 해제

워커 노드는 마스터와 통신하고, 마스터에서 전달하는 명령을 실행합니다. 또한, 마스터와의 통신을 위한 포트인 10250, 30000-32767 등의 포트가 열려 있어야 합니다.

워커 노드에서 방화벽 해제 예시:

sudo firewall-cmd --zone=public --add-port=10250/tcp --permanent
sudo firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent
sudo firewall-cmd --reload

3. 전체적인 포트 해제

쿠버네티스 클러스터에서 필요한 기본적인 포트 목록은 다음과 같습니다:

  • 6443: Kubernetes API 서버
  • 10250: kubelet
  • 10251: kube-scheduler
  • 10252: kube-controller-manager
  • 30000-32767: NodePort 서비스 (이 범위는 필요에 따라 변경될 수 있음)

[kubectl CREATE / RUN 차이]

🔹 1. kubectl create deploy web --image=nginx

  • 의도: Deployment 객체를 생성하여 안정적인 배포와 관리(롤링 업데이트, 복구 등)를 자동으로 처리하게 함.
  • 생성되는 리소스:
    • Deployment
    • 그 안에 자동으로 관리되는 ReplicaSet과 Pod
  • 기능:
    • Replica 개수 조절 (kubectl scale)
    • 롤링 업데이트 (kubectl rollout)
    • 롤백 (kubectl rollout undo)
    • 애플리케이션의 상태를 유지 관리

실제 운영에 적합한 방식.


🔹 2. kubectl run web --image=nginx

  • 의도: 간단하게 Pod를 하나 생성해서 실행해보는 데 사용됨.
  • 생성되는 리소스:
    • 기본적으로 Pod 1개만 생성됨
  • 기능:
    • 자동 복구 ❌
    • 롤링 업데이트 ❌
    • Replica 관리 ❌
    • -restart=Never, -restart=OnFailure 옵션으로 Job처럼도 사용 가능

테스트용, 일회성 작업용으로 적합.

'IT 엔지니어 > CLOUD' 카테고리의 다른 글

DOCKER NAMESPACE/STATEFULSET  (0) 2025.05.22
Docker POD  (1) 2025.05.21
Docker Kubespray -1  (0) 2025.05.19
K8S -kubespray  (0) 2025.05.19
Docker yml  (1) 2025.05.18