전반적인 쿠버네티스 설치과정
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. 기본 명령어
kubectl api-resources
- kubectl에서 사용할 수 있는 resource들에 대한 약어 정보
kubectl --help
- 어떠한 종류의 명령어들이 있는지 도움말 정보
- kubectl logs --help
(1) get
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 )
'따배쿠' 카테고리의 다른 글
따배쿠 4장 쿠버네티스 동작과정 (0) | 2023.07.15 |
---|