쿠버네티스 정리 중...

pyk0844·2022년 10월 21일
0

※ 도커 이미지 생성 및 도커 허브 push는 완료 상태여야함..
도커 정리

1. 기본 개념

Pod - 단일 포드, 어느 노드로 배포될 지 알 수 없음.
Deployment - replica로 같은 pod 여러개 만들 수 있음. 배포도 여러 노드로 배포.(pod가 죽을 경우를 대비해 서비스 보호 차원에서 사용)
Service - docker -p option과 같은 역할. (Pod, Deployment에서 지정한-여기서 지정하는게 docker EXPOSE 역할인듯..)포트를 외부로 노출해줌.
---> 결론: Deployment, Service만 만들면 될 듯.

pod와 deployment 차이
마스터노드/워커노드

2. yaml 작성즁...

2-1. 헷갈리는 점 정리-docker port, kubernetes port 관계

docker image에 명시된 포트(Dockerfile EXPOSE)는 실제 배포 될 때는 아무 상관이 없다.
--> Dockerfile에 5000 포트 지정했어도 배포시 8080 포트로 바꿔도 됌!
--> docker run -p 명령어로 실행해볼 때만 관련이 있음!

kubernetes port는 중요함!
deployment-containerPort -> Dockerfile EXPOSE와 비슷. 여기에만 명시하면 아무 의미 없음. service-targetPort와 일치시켜야함.
service-port, targetPort -> port: 80, targetPort: 8080 이라면 80번 포트로 들어오는 외부 요청을 컨테이너의 8080 포트로 연결시켜준다는 의미

Relationship between Dockerfile EXPOSE and Kubernetes service/container ports?
deployment.yml-service.yml 작성법

2-2. 서비스 유형(spec-type 작성 관련
일단 ClusterIP(default), NodePort, LoadBalancer, ExternalName이 있음!

서비스유형

2-3. DNS 정책 관련(deployment-dnsPolicy 관련)

쿠버네티스 dns

3. 쿠버네티스로 직접 yaml 작성법(추천)

deployment 생성

kubectl create deployment <deployment name> --image=<image name>:<version(tag)> --replicas=<replicas num> --port=<container port num>

deployment 수정

kubectl edit deployment <deployment name>

service 생성

kubectl create service <type(lower case only)> <deployment name> --<protocol>=<port num>
ex)kubectl create service loadbalancer <deployment name> --tcp=80

서비스 type은 꼭 소문자로 써야하고, 4가지 타입(ClusterIP(default), NodePort, LoadBalancer, ExternalName) 중 하나를 명시하면 됌.(2-2 참고)

※참고: deployment, service 생성시 option(--표시) 필수x

Kubernetes (생성,삭제,확인,로그)
deployment 생성
service 생성

4. pod, service 상세 조회 및 로그 확인

상세 조회
kubectl describe service <service name>

로그 확인
kubectl logs <pod name>
--> (kubectl get pod로 pod 생성 여부 확인하고 로그 확인)
--> (create deployment로 생성했어도 get pod로 확인하면 됩니다.)

. . . . . .

기타

kubectl 명령어
edit 명령어 사용했는데 변경 적용이 안되는 경우
--> 보통 변경 할 수 없는 속성을 변경하려 한 경우임... ex) name 등...

kubectl edit

보충 필요한 내용

namespace 설정 필수인가...? 알아볼 필요 있음... 현재 미지정 상태..

0개의 댓글