k8s
1. Pod (최소단위, po)
2. Namespace (폴더, ns)
3. Yaml (object model)
create -f nsl.yaml
kube ctl get po -n ns1
meaning
. kube = k8s
. ctl = control
. get po = get pods
. ns1 = namespace의 이름 ns1 안에 있는
4. Replica Set
- pods 개수 유지싴줌
- pod단위 update, rollback 가능
5. Deployment
- replicaset을 관리함

Examples
rs.yaml
apiversion:apps/v1
kind:ReplicaSet
metadata:
name: rs1
spec:
replicas:2
selector:
matchlabels:
app:nginx
template:
metadata:
name: rs1-pod
labels:
app:nginx
spec:
containers:
name:nginx
image:nginx:1.14.0
dp1.yaml(deployment object 구성 선언)
apiversion:apps/v1
kind:Deployment
metadata:
name:dp1
spec:
replicas:3
strategy:
type:recreate
selector:
matchLabels:
app:nginx
template:
metadata:
name:dp1-pod
labels:
app:nginx
spec:
conainers:
name:nginx
image:nginx:1.14.0
ports:
containerPort:80
6.Service
. Pods의 ip주소(내부ip) : 외부접근 불가능. & pods 삭제 & 재생성 → ip변경됨
. ∴ 고정된 주소를 쓰고싶다면 service로 연결해야함
(1) 원리
- IF 서비스의 selector = pods의 label THEN connect
apiversion:v1
kind:service
metadata:
name: service1
spec:
selector:
app:nginex
apiversion:v1
kind: pod
metadata:
name: label
labels:
environment:production
app:nginex
(2) 서비스의 종류
(a) Cluster IP
- 클러스터 내부에서만 사용가능
(b) NodePort
- 해당 노드의 ip와 port로 접속하면 서비스 연결됨ㅁ
- service는 연결된 pod에 트래픽을 전달
- 생성 구문 (서비스)
kubectl create service nodeport np --tcp=5678:8080
- 구문(deployment - service 연결)
kubectl expose deployment nginx -- port80 --target-port 8000 --type:NodePort
(c) Persistent Volume
- Pod와 별도로 관리
Pod <-------PVC ---------> PV
user <-------Service------->pod
- AWS의 EBS EFS S3 = Volume 서비스. PV가 될 수 있음.
- 아래 예시에서 PV와 PVC의 access Modes는 동일해야 함.
PV.yaml
apiversion:v1
kind:PersistentVolume
metadata:
name:pv1
spec:
capacity:
storage: 5G
accessModes:
ReadWriteOnce
PVC.yaml
apiversion:v1
kind:PersistentVolumeClaim
metadata:
name:pvc2
spec:
accessModes:
ReadWriteOnce
resources:
requests:
storage:2G