udemy Certified Kubernetes Administrator (CKA) with Practice Tests
์ฐธ๊ณ
1) ์ค์ผ์ค๋ง : ์ปจํ
์ด๋ ๋ณ ์์์ ๊ด๋ฆฌํ์ฌ ์ต์ ํ ํ๊ณ , ์ ์ ํ ๋
ธ๋์ ๋ฐฐํฌ ํ๋ค.
2) ์ ์, ๋น์ ์ ์ํ๋ฅผ ์ฒดํฌํ๊ณ ์ฌ๊ธฐ๋ํ๋ค.
3) ์ปจํ
์ด๋ ๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง
4) ๋์ ์ผ๋ก ์ญ์ , ํ์ฅ ๊ด๋ฆฌ
: https://kubernetes.io/ko/docs/concepts/architecture/
kube-apiserver : ์ฟ ๋ฒ๋คํฐ์ค์ ์ค์ฌ์ด ๋๋ ์์, ๋ชจ๋ ๋ช ๋ น๊ณผ ํต์ ์ REST API ๋ฅผ ์ ๊ณต, kubectl ์ kube-apiserver์ ํต์ ์ ์ฃผ๊ณ ๋ฐ๋๋ค.
kube-scheduler : ์ฟ ๋ฒ๋คํฐ์ค์ Pod๋ Service ๋ฑ ๋ฆฌ์์ค๋ฅผ ์ ์ ํ ๋ ธ๋์ ํ ๋นํ๋ค.
kube-controller : ์ฟ ๋ฒ๋คํฐ์ค์๋ ์ฌ๋ฌ ์ข ๋ฅ์ ์ปจํธ๋กค๋ฌ๊ฐ ์๋๋ฐ ์ด ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฐํ๊ณ ๋ฐฐํฌํ๋ ๋ฑ ๊ด๋ฆฌํ๋ค.
kubelet : ์ ์ฅ, ์์ปค ๋ ธ๋์ ํ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ปจํ ์ด๋ ๋ฐํ์์ ์์ฒญ์ ํ๊ณ , ์ค๋ธ์ ํธ์ ์ํ๋ฅผ ๋ชจ๋ํฐ๋ง ํ๋ฉฐ ์ฒดํฌํ์ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ kube-apiserver์ ์ ๋ฌํ๋ค.
kube-proxy : ๊ฐ ๋ ธ๋์์ ์คํ๋๋ฉฐ, ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ ๊ณตํ๋ค. ๊ฐ ์๋น์ค์๊ฒ ๋๋ฌํ๋ ๋ฐ๋ง ์ฌ์ฉํ๋ฉฐ, ๋ ธ๋์ ์ค๋ ํธ๋ํฝ์ ์ ์ ํ๊ฒ ๋ผ์ฐํ ํด์ค๋ค.
Container runtime : ๋์ปค ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์คํํ๋ ๊ตฌ์ฑ์์์ด๋ค.
: https://kubernetes.io/ko/docs/concepts/workloads/pods/
์์)
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 8080
: https://kubernetes.io/ko/docs/concepts/services-networking/service/
์์)
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
https://kubernetes.io/ko/docs/concepts/storage/volumes/
Pod ์ ์ข ์๋์ด ์๋ ๋์คํฌ๋ก Pods ์์ ๊ฐ์ ๋คํธ์ํฌ ์คํ๋ฅผ ๊ณต์ ํ๋ ์ปจํ ์ด๋๋ค์ด ๊ฐ์ด ์ฌ์ฉํ๋ค. ํ๋ ๋ด์ ์ปจํ ์ด๋๊ฐ ์ฌ ์์ํด๋ ๋ฐ์ดํฐ๋ ๋ณด์กด๋๋ค.
๋ณผ๋ฅจ์ ๋๋ ํฐ๋ฆฌ๋ฉฐ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฉฐ, ํ๋ ๋ด์ ์ปจํ ์ด๋์ ์ ๊ทผํ ์ ์๊ณ , ๋๋ ํฐ๋ฆฌ์ ์์ฑ ๋ฐฉ์, ์ด๋ฅผ ์ง์ํ๋ ๋งค์ฒด์ ์ฌ์ฉ์ ์ฌ์ฉ๋ ํน์ ๋ณผ๋ฅจ์ ์ ํ์ ๋ฐ๋ผ ๊ฒฐ์ ๋จ
๋ณผ๋ฅจ์ Pod์ ์ปดํฌ๋ํธ์ด๋ฉฐ pods์ ์คํฉ์ ์ํด์ ์ ์ ๋๋ค . spec.volumes
, .spec.containers[*].volumeMounts
emptyDir
: ํ๋๊ฐ ๋
ธ๋์ ํ ๋น ๋ ๋ ์์ฑ ๋๋ฉฐ, ์ผ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์๋ค ๋
ธ๋์์ ํ๋๊ฐ ์คํ ์ค์ง ๋๋ฉด ์ญ์ ๋๋ ๋๋ ํฐ๋ฆฌ. ์ฒ์์๋ ๋น์ด์๋ค.
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /cache
name: cache-volume
volumes:
- name: cache-volume
emptyDir: {}
hostPath
: hostPath ๋ณผ๋ฅจ์ ํธ์คํธ ๋
ธ๋์ ํ์ผ ์์คํ
์ ์๋ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ๋ ๋ด๋ถ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง์ดํธ ํ๋ ๊ฒ์ผ๋ก ๊ณต์ ํด๋๋ผ๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค.
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# ํธ์คํธ์ ๋๋ ํฐ๋ฆฌ ์์น
path: /data
# ์ด ํ๋๋ ์ ํ ์ฌํญ์ด๋ค
type: Directory
https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/
replicaController
: ๋ ์ด๋ธ ์
๋ ํฐ๋ก ํ๋๋ฅผ ์ถ์
replicaSet
: ๋ ํ๋ฆฌ์นด ์ปจํธ๋กค ๋ณด๋ค ํน์ ๋ ์ดํ ํค๋ฅผ ํฌํจํ๋ ํ๋๊ฐ ์๋์ง ์ฒดํฌ, replicacontroller๋ณด๋ค ๋ ์ ํํ๊ฒ Pod ๋ฅผ ์ถ์ ํ๋ค. ํ์ฌ์๋ ๋๋ถ๋ถ ์ด๊ฒ์ ์ฌ์ฉํ๋ค.
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: frontend
labels:
app: guestbook
tier: frontend
spec:
# modify replicas according to your case
replicas: 3
selector:
matchLabels:
tier: frontend
template:
metadata:
labels:
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google_samples/gb-frontend:v3