본문 바로가기

따배쿠

따배쿠 3장 kubectl 실습 및 pod 생성하기

728x90

전반적인 쿠버네티스 설치과정

 

Docker install

설치 전 환경설정

kubeadm,kubectl,kubelet 설치

control-plane 구성

worker-node 구성

설치확인

 

쿠버네티스에서는 최소 램2기가 Cpu2코어이상 사용하는 것을 권장하고있다.

 

ec2에 클러스터구축는방법도 올리고 싶지만... sw마에스트로 멘토님이 주신자료라 올리기가.. 조금 그렇다 ㅎㅎ..

 

kubeadm

  • 쿠버네티스의 공식 설치 툴

CNI(Container Network Interface)

  • CNI를 구성해야만 서로 통신가능하다.
  • CNI: 컨테이너간 통신을 지원하는 VxLan(pod Network)
  • 대표적으로 ex) 폴라넷(flannel),칼리코(calico),위브넷(weavenet)

TMI:내가 오늘 CNI때문에 고생좀했다.... 포트개방을 해줬어야했는데 너무 콩알만하게 써있었다...

나는 위브넷을 사용했는데

Before installing Weave Net, you should make sure the following ports are not blocked by your firewall: TCP 6783 and UDP 6783/6784. 이렇게 적혀있었다... 나중에는 바로바로 캐치하자...!

 

쿠버네티스 클러스터 구성

  • control plane(master node)
    • 지휘자의 역할(worker node 관리 및 제어)
    • 몇개 있느냐에 따라 single master ,multi master
  • worker node
    • 도커 플랫폼을 통해 컨테이너를 동작함
    • 실제 서비스를 제공해주는 일꾼

 

kubectl이란?

kubernetes에게 요청을 할 때 사용하는 명령어

형식 : kubectl [command] [TYPE] [NAME] [flags]

  • [command] : 자원(object,resource)에 실행할 명령
  • [TYPE] : 자원의 종류
  • [NAME] : 자원의 이름
  • [flags] : 부가적으로 설정할 옵션

 

kubectl에서 TAB키로 자동완성 하기위해서는

 

 

kubectl commands

  • kubectl --help
  • kubectl command --help
  • kubectl run <자원이름> <옵션>
  • kubectl create -f obj.yaml
  • kubectl apply -f obj.yaml
  • kubectl get <자원이름> <객체이름>
  • kubectl edit <자원이름> <객체이름>
  • kubectl describe <자원이름> <객체이름>
  • kubectl delete pod main

 

요번에 실습을 진행하면서 정리해둔 명령어

 

1. 기본 명령어

Permalink

kubectl api-resources

  • kubectl에서 사용할 수 있는 resource들에 대한 약어 정보

 

kubectl --help

  • 어떠한 종류의 명령어들이 있는지 도움말 정보
  • kubectl logs --help

 

(1) get

Permalink

kubectl get nodes

  • 모든 노드 확인

kubectl get nodes -o wide

  • 모든 노드 자세히 확인

kubectl get nodes -o yaml

  • 모든 노드 자세히 확인 ( yaml 형태로 )

kubectl describe node master.example.com

  • master.example.com이라는 특정 노드를 아주 자세히 확인하기

 

(2) run

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

  • webserver 파드를 생성해라!
  • nginx:1.14 이미지를 사용해서!
  • 80번 포트

webserver pod 생성완료!

 

생성된 pod확인하기

  • kubectl get pods -o wide
  • kubectl describe pod webserver

 

curl 명령어로 접속하기

  • curl 10.44.0.1로, 위에서 만든 webserver에 접속 가능

 

(3) create

 

run vs create :

  • run : 컨테이너 1개 실행할 때
  • create : 컨테이너 n개 실행할때

 

ex) kubectl create deployment mainui --image=httpd --replicas=3

  • deployment라는 리소스를
  • apache webserver (httpd) 이미지를 사용하여
  • mainui라는 이름으로
  • 3개 생성해라!

 

(4) exec

 

컨테이너 내부로 들어가서 파일 수정하려면?

kubectl exec webserver -it -- /bin/bash

  • 컨테이너 내부로 들어간다

 

( 컨테이너 내부에서…)

  • cd /usr/share/nginx/html/
  • cat index.html
  • echo "Seunghan's Web" > index.html ( 수정 완료 )
  • exit ( 컨테이너에서 나오기 )


curl 10.44.0.1

  • 방금 수정한 내용으로 웹페이지가 바뀐 것을 확인할 수 있다

 

지금은, “내”가 접속한 것!

만약, 외부 유저가 접속가능하게 하려면, 포트 포워딩 해줘야!

  • kubectl port-forawrd webserver 8080:80
  • curl localhost:8080하면, 잘 접속됨을 알 수 있다!

 

(5) edit

 

동작 중인 object를 수정하기 위해서!

  • ex) kubectl edit deployment.apps mainui

 

(6) 동작 중인 리소스의 yaml파일 생성

 

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

  • webserver pod를 run 하기

 

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

  • dry-run : 실행되는지만 check만 하기

 

3) kubectl run webserver --image=nginx:1.14 --port 80 --dry-run -o yaml

  • 실행되는 내용을 yaml파일로 확인

 

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

  • 실행되는 내용을 yaml파일로 생성
  • 쿠버네티스가 사용하는 yaml 파일이 만들어짐!
    이제, 편집기로, 이 파일을 쫌만 수정해서 재사용!

 

5) kubectl delete pod webserver

  • 동작 중이던 webserver pod 삭제하기

 

6) kubectl create -f webserver-pod.yaml

  • 방금 4)에서 수정한걸로 다시 pod 생성
  • f : (yaml)파일을 사용해서 생성

 

 

 

( 참고 : 따배쿠 https://www.youtube.com/watch?v=6n5obRKsCRQ&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c )

 

728x90

'따배쿠' 카테고리의 다른 글

따배쿠 4장 쿠버네티스 동작과정  (0) 2023.07.15