-
도커/쿠버네티스 공부 #7IT_개발/devops 2024. 1. 13. 14:16
매니페스트 파일
컴포즈 파일과 마찬가지로 주 항목이 있다.
ex)
apiVersion: API그룹 및 버전
kind: 리소스 유형
metadata: 메타데이터
spec: 리소스 내용
리소스 설정:
api그룹과 리소스 유형을 지정해야함
작성 예시는 공식사이트 참고
(https://kubernetes.io/ko/docs/concepts/cluster-administration/manage-deployment/)
메타데이터와 스펙:
메타데이터에는 리소스의 이름이나 레이블을 기재
스펙은 리소스의 내용을 정의
ex)주요 메타데이터
name: 리소스의 이름, 문자열로 된 유일(?)식별자
namespace: 리소스를 세분화한 DNS호환 레이블
uid: 유일 식별자
resourceVersion: 리소스 버전
generation: 생성 순서를 나타내는 번호
creationTimestamp: 생성일시
deletionTimestamp: 삭제일시
labels: 임의의 레이블
anotation: 리소스에 설정할 값, 선택대상은 되지 못한다
레이블과 셀렉터:
파드나 서비스같은 리소스에 원하는 레이블을 붙일 수 있음, 키-값 형태로 메타데이터로 설정,
레이블을 지정하면 셀렉터 기능을 사용 특정 레이블이 부여된 파드만 배포하는 등 특정 파드를 선택해 설정 할 수 있다.
메타데이터와 스펙 작성 - 파드
파드를 대상으로 메타데이터와 스펙 작성 예시
주항목 metadata와 spec하위에 들여쓰기로 하위항목을 작성
항목예시)
metadata:
name: (파드 이름)
labels: (레이블)
spec:
containers: (컨테이너 구성)
-name: (컨테이너 이름)
image: (이미지 이름)
ports: (포트설정)
실제 작성예시)
apiVersion: v1
kind: Pod
metadata:
name: apa000pod
labels:
app: apa000kube
spec:
containers:
- name: apa000ex91
image: httpd
ports:
- containerPort: 80
메타데이터와 스펙작성 - 디플로이먼트
디플로이먼트의 스펙은 템플릿 형태로 파드의 설정을 기재
항목예시)
apiVersion:
kind:
metadata:
name: (디플로이먼트 이름)
spec:
selector: (셀렉터 설정)
matchLabels: (셀렉터가 선택할 관리대상 레이블)
replicas: (레플리카 설정)
template: (템플릿(파드의 정보))
metadata: (파드의 메타데이터 기재)
spec: (파드의 스펙을 기재)
-셀렉터의 설정: 특정한 레이블이 부여된 파드를 관리할 수 있도록 설정 여기서 쓰는 matchLabels은 template하위의 metadata에 기재된것
-레플리카의 설정: 파드의 레플리카에 대한 관리, 파드수를 몇개로 유지할것인지설정, 0으로 설정시 파드가 사라진다
-템플릿 작성: 생성할 파드의 정보를 여기에 기재, 파드의 이름은 지정하지 않는다.(파드의 수가 늘어나면 레이블로 관리하는 경우가 많기 때문)
디플로이먼트 메니페스트 작성 예시)
apiVersion: app/v1
kind: Deployment
metadata:
name: apa000dep
spec:
selector:
matchLabels:
app: apa000kube
replicas: 3
template:
metadata:
labels:
app: apa000kube
spec:
containers
- name: apa000ex91
image: httpd
ports:
- containerPort: 80
메타데이터와 스펙 작성 - 서비스
서비스의 역할은 파드로 들어오는 요청을 관리하는것으로 설정내용도 통신과 관련된것
항목 예시)
apiVersion:
kind:
metadata:
name: (서비스의 이름)
spec:
type: (서비스의 유형)
ports: (포트설정)
- port: (서비스의 포트)
targetPort: (컨테이너의 포트)
protocol: (통신에 사용되는 프로토콜)
nodePort: (워커노드의 포트)
selector: (셀렉터 설정)
-유형 설정: 유형은 서비스의 종류를 말함, 외부로부터 어떤유형의 IP주소(또는 DNS)로 접근할지를 설정
ClusterIP: (클러스터 IP를 통해 서비스에 접근하도록 함, 외부에서는 접근 불가)
NodePort: (워커노드의 IP를 통해 서비스에 접근하도록 함)
LoadBalancer: (로드밸런서의 IP를 통해 서비스에 접근)
ExternalName: (파드에서 서비스를 통해 외부로 나가기 위한 설정)
-포트 설정
port: (서비스의 포트)
nodePort: (워커노드의 포트)
targetPort: (컨테이너 포트)
프로토콜은 통신프로토콜을 의미, 일반적으로 TCP로 설정
-셀렉터 설정: 서비스에서는 matchLabels를 사용하면 안됨
실제 작성예시)
apiVersion: v1
kind: Service
metadata:
name: apa000ser
spec:
type: NodePort
ports:
- port: 8099
targetPort: 80
protocol: TCP
nodePort: 30080
selector:
app: apa000kube
'IT_개발 > devops' 카테고리의 다른 글
도커/쿠버네티스 공부 #9 (0) 2024.01.20 도커/쿠버네티스 공부 #8 (0) 2024.01.17 도커/쿠버네티스 공부 #6 (1) 2024.01.10 도커/쿠버네티스 공부 #5 (0) 2024.01.07 도커/쿠버네티스 공부 #4 (0) 2024.01.06