티스토리 뷰
728x90
반응형
✅ 아래 글의 내용 및 이미지는 인프런 "쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2" 강의를 듣고 정리한 글입니다.
실습자료
https://cafe.naver.com/kubeops/36
Object 그려보며 이해하기
[1] 강의 환경 구성하기 ▶ master node에 접속해서 디렉토리 생성 ▶ dashboard 접속 > Namespace [모든 네임스페이스] > [+] 버튼 > [입력을...
cafe.naver.com
주의 : 해당 강의에서 Object 들에 대해서 30%만 이해하시면 됩니다. 이후 강의에서 나머지 70%를 설명 드려요. 쿠버네티스에는 어떤 Object가 있고, 대략 어떤 기능들을 하는구나 정도 파악시켜 드리기 위한 강의이기 때문에 이번 강의를 통해서 설명드린 Object들을 다 이해하려고 하시면 절대 안되세요 :) 라고 써져있다.
전체그림
Namespace - Object들을 그룹핑 해주는 역할
apiVersion: v1
kind: Namespace
metadata:
name: anotherclass-123
labels:
part-of: k8s-anotherclass
managed-by: dashboard
Deployment - POD들을 만들어주고 업그레이드 해주는 역할
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: anotherclass-123 # namespace에 소속됨.
name: api-tester-1231
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
managed-by: dashboard
spec:
selector:
matchLabels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
replicas: 2 #POD를 2개 만들어라.
strategy:
type: RollingUpdate
template: # 이 아래 내용대로 POD가 만들어진다.
metadata:
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
spec:
nodeSelector:
kubernetes.io/hostname: k8s-master
containers:
- name: api-tester-1231
image: 1pro/api-tester:v1.0.0 #도커허브에 이 이름으로 등록되어있음.
ports:
- name: http
containerPort: 8080
envFrom: # 어플리케이션의 환경변수와 관련된 부분.
- configMapRef:
name: api-tester-1231-properties
startupProbe:
httpGet:
path: "/startup"
port: 8080
periodSeconds: 5
failureThreshold: 36
readinessProbe:
httpGet:
path: "/readiness"
port: 8080
periodSeconds: 10
failureThreshold: 3
livenessProbe:
httpGet:
path: "/liveness"
port: 8080
periodSeconds: 10
failureThreshold: 3
resources:
requests:
memory: "100Mi"
cpu: "100m"
limits:
memory: "200Mi"
cpu: "200m"
volumeMounts:
- name: files
mountPath: /usr/src/myapp/files/dev
- name: secret-datasource
mountPath: /usr/src/myapp/datasource
volumes:
- name: files
persistentVolumeClaim:
claimName: api-tester-1231-files
- name: secret-datasource
secret:
secretName: api-tester-1231-postgresql
Service - POD에게 트래픽을 연결해주는 역할
apiVersion: v1
kind: Service
metadata:
namespace: anotherclass-123 # 같은 종류의 오브젝트끼리는 이름이 같으면 안됨. 그러나 deployment와 service는 다른 오브젝트이므로 상관없음
name: api-tester-1231
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
managed-by: dashboard
spec:
selector:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
ports:
- port: 80
targetPort: http
nodePort: 31231
type: NodePort
Configmap - POD에 환경변수 값을 제공하는 역할
Secret - POD에 좀 더 중요한 값을 제공하는 역할
apiVersion: v1
kind: ConfigMap
metadata:
namespace: anotherclass-123
name: api-tester-1231-properties
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
managed-by: dashboard
data:
spring_profiles_active: "dev"
application_role: "ALL"
postgresql_filepath: "/usr/src/myapp/datasource/postgresql-info.yaml"
---
apiVersion: v1
kind: Secret
metadata:
namespace: anotherclass-123
name: api-tester-1231-postgresql
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
managed-by: dashboard
stringData:
postgresql-info.yaml: |
driver-class-name: "org.postgresql.Driver"
url: "jdbc:postgresql://postgresql:5431"
username: "dev"
password: "dev123"
PVC, PV - POD의 저장소 역할
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
namespace: anotherclass-123
name: api-tester-1231-files
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
managed-by: kubectl
spec:
resources:
requests:
storage: 2G
accessModes:
- ReadWriteMany
selector:
matchLabels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231-files
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: api-tester-1231-files
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231-files
version: 1.0.0
managed-by: dashboard
spec:
capacity:
storage: 2G
volumeMode: Filesystem
accessModes:
- ReadWriteMany
local:
path: "/root/k8s-local-volume/1231"
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- {key: kubernetes.io/hostname, operator: In, values: [k8s-master]}
HPA
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
namespace: anotherclass-123
name: api-tester-1231-default
labels:
part-of: k8s-anotherclass
component: backend-server
name: api-tester
instance: api-tester-1231
version: 1.0.0
managed-by: dashboard
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: api-tester-1231
minReplicas: 2
maxReplicas: 4
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
behavior:
scaleUp:
stabilizationWindowSeconds: 120
알게된 점
- 레벨에 따른 오브젝트
- cluster 레벨의 오브젝트인 PV와 Namespace 레벨의 오브젝트인 deployment, service, pvc, secret.
- Namespace를 삭제하면 Namespace 안에 만든 오브젝트가 모두 삭제된다.
강의 실습 오브젝트 그림
출처
쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런
일프로 | ⚓쿠버네티스, 🙇♀️아직 망설이시나요? 🙋♂️저만 믿고 따라오세요! 당신의 실력을 ⭐어나더 레벨로 만들어 드리겠습니다., ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고
www.inflearn.com
728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- localtime
- jQuery
- LocalDate
- springboot
- svn
- docker
- rocky
- Mac
- intellij
- 오라클
- 북리뷰
- LocalDateTime
- 베리 심플
- mybatis config
- Bash tab
- Spring
- k8s
- oracle
- Kotlin
- input
- Linux
- mybatis
- maven
- Spring Security
- claude
- elasticsearch
- JavaScript
- window
- Java
- config-location
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
반응형