Kubernetes Basics
Kubernetes ๋?
์ฌ์ฉ์์๊ฒ ๋ถ์ฐํ ์์คํ ์ ์์ ์ ์ผ๋ก ์ด์ ํ ์ ์๋ framework๋ฅผ ์ ๊ณต
์๋น์ค์ ํ์ฅ ์๊ตฌ, ์ฅ์ ์กฐ์น ๋น ๋ฐฐํฌ ํจํด์ ์ฒ๋ฆฌํจ
ex) ์นด๋๋ฆฌ์ ๋ฐฐํฌ
Kubernetes ๊ฐ ํ ์ ์๋ ์ผ
Service discovery and load balancing
Storage orchestration
Automated rollouts and rollbacks
Automatic bin packing
Self-healing
Secret and configuration management
Kubernetes์ ๊ตฌ์ฑ ์์
master
node๋ kubernetes ์ ์ฒด๋ฅผ ํต์ /๊ด๋ฆฌworker
node๋ ์ค์ ์ฌ์ฉ์์ application ๋ฐฐํฌ
Running app on Kubernetes
Kubernetes Object
Object Spec & Status
Spec
ํด๋น object ๊ฐ ๊ฐ์ ธ์ผ ํ ์๊ตฌ๋๋ ์ํ(desired status)์ ํน์ง์ ์์ ํ๋ ๊ณณ
์ฐ๋ฆฌ๊ฐ ์กฐ์ ํ๋ ๊ฒ
Status
object์ ์ค์ ์ํ๋ฅผ ๊ธฐ์ ํ๊ณ kubernetes system์ ์ํด update ๋จ
kubernetes object ๊ฐ๋
๋
1. Pods
Pod ๋?
Application์ ์ต์ ์คํ ๋จ์
Application container (ํ๋ ํน์ ๋ค์), storage, network ๋ฑ์ ์ ๋ณด๋ฅผ ํฌํจ
Pod์ ํน์ง
Pod ์๋ ๊ฐ๊ฐ ๊ณ ์ ํ private IP ํ ๋น
Pod ์์ ์๋ container๋ pod ์ IP๋ฅผ local host ๋ก ๊ณต์
Pod ๋ ์ฌ์ค์ Pod๋ฅผ ๊ฐ์ง๊ณ ์๋ virtual machine์ด๋ผ๊ณ ํ ์ ์์
2. Deployments
ReplicaSet
๋ณด๋ค ์์์ ํด๋นํ๋ resourceApplication ๋ฐฐํฌ์ ๊ธฐ๋ณธ ๋จ์
Deployments yml file ์ ํ์ ์์
apiVersion
kind
metadata
spec
kubernetes ์ ์ํ๋ฅผ ์ง์ ํ๋ state ๊ฐ
3. labels
kubernetes ๋ label์ ๊ธฐ์ค์ผ๋ก ํน์ ์์์ ์ ํํ๋ค
pod์ ๊ฐ์ object์ ์ฒจ๋ถ๋ key value ๊ฐ
Labels Use Cases
์คํ ์ค์ธ ํน์ pod๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ์ํด
ReplicaSet
์์ ์ฌ์ฉํ๋ค
4. Services: ClusterIP
Cluster-internal IP๋ฅผ ํตํด Service๋ฅผ ๋ ธ์ถ
์ค์ง cluster ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅ
kube-proxy๋ฅผ ํตํด ์ ๊ทผ ๊ฐ๋ฅ
Service๋ฅผ debugging ํ๊ณ ๋, ๊ฐ๋ฐ์ local์์ ์ ๊ทผ ๋๋ ๋ด๋ถ dashboard๋ฅผ ๋ณด์ฌ์ค ๋ ์ฌ์ฉ
์๋น์ค ์ธ๋ถ ๋
ธ์ถ
manifest
์์ type์ ๊ธฐ์ฌํ๋ฉด ๋๋ค
1. NodePort
NAT
๋ฅผ ์ด์ฉํ์ฌ cluster ๋ด Node์ ๊ณ ์ ๋ port๋ฅผ ๊ฐ๋ IP๋ก service๋ฅผ ๋ ธ์ถCluster ์ธ๋ถ์์ ์ ๊ทผ
<NodeIP> : <NodePort>
1 service per port
Port ์ฌ์ฉ ๋ฒ์
30000-32767
2. LoadBalancer
NodePort์์ ๋ฐ์ ๋ type
Cloud provider์ Load Balancer๋ฅผ ์ด์ฉํด service๋ฅผ ์ธ๋ถ๋ก ๋ ธ์ถ
NodePort and ClusterIP services (to which LB will route) automatically created
LB (ELB, NLB)๋ก ๋ ธ์ถ๋ ๊ฐ service๋ ๊ณ ์ ํ IP ์ฃผ์๋ฅผ ๊ฐ๋๋ค
3. Ingress
Cluster ๋ด service ๋ฅผ HTTP(S) ๊ธฐ๋ฐ์ผ๋ก ๋ ธ์ถ
๋ค์ํ ๊ตฌํ์ฒด
ALB
Nginx
F5
HAProxy
Default Service Type
ClusterIP
Ingress๋ ์๋น์ค ํ์ ์ด ์๋๋ผ service ์์ชฝ์ ์์นํ๋ฉฐ ์ธ๋ถ๋ก๋ถํฐ ์๋ฒ ๋ด๋ถ๋ก ์ ์ ๋๋ Network traffic์ ์๋ฏธ
Nginx Ingress controller ์์
Volumes
Pod์ ์ข ์๋๋ ๋์คํฌ
Pod ๋จ์์ด๊ธฐ ๋๋ฌธ์ ํด๋น pod์ ์ํด ์๋ ์ฌ๋ฌ๊ฐ์ container๊ฐ ๊ณต์ ํด์ ์ฌ์ฉ๋ ์ ์๋ค
Namespace
k8s ์์์ ๋ํ ์์ญ์ ์ ๊ณตํ๊ณ , ๊ถํ๊ณผ ์ ์ฑ ์ cluster์ ํ์ section์ ์ ์ฉํ๋ ๋ฉ์ปค๋์ฆ ์ ๊ณต
์ฆ, ์์์ ๊ทธ๋ฃนํํด ๊ด๋ฆฌํ ์ ์๋ ๊ธฐํ ์ ๊ณต
์ฌ์ฉ ์
๊ฐ๋ฐ ํ๊ฒฝ, ํ ์คํธ ํ๊ฒฝ, ์ด์ ํ๊ฒฝ ๊ฐ์ ์ํํธ์จ์ด ํ๊ฒฝ ๊ตฌ๋ถ
์ธํ๋ผํ์ด ๋ณผ ์ ์๋ ๊ตฌ์ญ๊ณผ ๊ฐ๋ฐํ์ด ๋ณผ ์ ์๋ ๊ตฌ์ญ ๊ตฌ๋ถ
๊ถํ์ boundary
์์์ boundary
Cluster ์์ฑ ์ ๋ค์์ ๊ธฐ๋ณธ์ ์ธ namespace ์ฌ์ฉ
default
๋ค๋ฅธ namespace๊ฐ ์๋ object๋ฅผ ์ํ ๊ธฐ๋ณธ namespace
container, pod, service, replicaset ๋ฑ์ ์์์ ๋ํ ์์ญ์ ์ ๊ณต
kube-system
kubernetes system์์ ์์ฑํ object๋ฅผ ์ํ namespace
kube-public
์๋์ผ๋ก ์์ฑ๋๋ฉฐ ๋ชจ๋ ์ฌ์ฉ์ (์ธ์ฆ๋์ง ์์ ์ฌ์ฉ์ ํฌํจ)๊ฐ ์ฝ๊ธฐ ๊ถํ์ผ๋ก ์ ๊ทผํ ์ ์๋ค
์ฃผ๋ก ์ ์ฒด cluster ์ค์ ๊ณต๊ฐ์ ์ผ๋ก ๋๋ฌ๋์ ์ฝ์ ์ ์๋ resource๋ฅผ ์ํด ์์ฝ๋์ด ์๋ค
๊ณต๊ฐ์ ์ธ ์ฑ๊ฒฉ์ ๋จ์ง ๊ด๋ก์ด์ง ์๊ตฌ์ฌํญ์ ์๋๋ค!
Last updated