1. Pod
κ°λ¨ν νλ μ€ν(YAMLμμ΄)μ μλ λͺ λ Ήμ΄λ‘ κ°λ₯νλ€.
# νλ μ€ν (컨ν
μ΄λ νλ)
$ kubectl run {νλμ΄λ¦} --image={컨ν
μ΄λμ΄λ―Έμ§}
# λͺ¨λ νλ νμΈ
$ kubectl get pods
# νλ μ 보 νμΈ
$ kubectl get pod {νλμ΄λ¦}
# νλ μμΈ μ 보 νμΈ
$ kubectl describe pod {νλμ΄λ¦}
# νλ μμ
$ kubectl delete pod {νλμ΄λ¦}
# λͺ¨λ νλ μμ
$ kubectl delete pods --all
μ λͺ λ μ΄λ‘ νλλ₯Ό μ€ννκ³ , μ 보λ₯Ό νμΈν μ μλ€.
κ° νλλ€μ ν λ Έλμ λ°°μ λλ€.
νλ λ κ°λ₯Ό μμ±νκ³ , μλ λͺ λ Ήμ΄λ₯Ό μ€νν΄λ³΄λ©΄ λ Έλ λ΄μ νλκ° μμ±λ κ²μ λ³Ό μ μλ€.
$ kubectl describe node {λ
Έλ μ΄λ¦}
$ kubectl describe node docker-desktop
μΏ λ²λ€ν°μ€ λ΄μλ νλ λ΄μ 컨ν μ΄λ κ°μλ₯Ό ν κ° μ΄μ μ μ§νλ€.
κ·Έλ λ€λ©΄, 컨ν μ΄λλ₯Ό μμ νκ² λλ©΄ μ΄λ»κ² λ κΉ?
μ€νμ€μΈ 컨ν μ΄λλ₯Ό μμ νκ³ λ€μ μ‘°νν΄λ³΄λ, μλ³μκ° λ€λ₯Έ 컨ν μ΄λκ° λ€μ μ€νλ κ²μ λ³Ό μ μλ€.
μΏ λ²λ€ν°μ€κ° μλ‘μ΄ μ»¨ν μ΄λλ‘ νλλ₯Ό 볡μν κ²μ΄λ€.
μμ ν¬μ€ν μμ μ€λͺ νλ μκΈ°μ볡μ±(self-healing)μ μ±κ²©μ΄ λλ¬λλ€.
2. Port-Forwarding
μμ μ€ννλ μ ν리μΌμ΄μ μ ν¬νΈν¬μλ©νμ¬ μ μν΄ λ³΄κ² λ€.
$ kubectl port-forward pod/{νλ μ΄λ¦} {λ€μ΄μ€λ ν¬νΈ}:{νλμ ν¬νΈ}
$ kubectl port-forward pod/hello-kiamol 8080:80
νλμ ν¬νΈν¬μλ©μ΄ λ κ²μ νμΈν μ μλ€.
3. Deployment
# λνλ‘μ΄λ¨ΌνΈ μμ±
$ kubectl create deployment {λνλ‘μ΄λ¨ΌνΈμ΄λ¦} --image={μ΄λ―Έμ§μ΄λ¦}
# λνλ‘μ΄λ¨ΌνΈ μΆλ ₯
$ kubectl get deploy
# λνλ‘μ΄λ¨ΌνΈ μμ
$ kubectl delete deploy {λνλ‘μ΄λ¨ΌνΈμ΄λ¦}
# λνλ‘μ΄λ¨ΌνΈ λͺ¨λ μμ
$ kubectl delete deploy --all
μ λͺ λ Ήμ΄λ‘ deploymentλ₯Ό μμ±ν μ μλ€.
λνλ‘μ΄λ¨ΌνΈλ₯Ό μμ±νλ©΄, μλμΌλ‘ λνλ‘μ΄λ¨ΌνΈ μ΄λ¦ λ€μ 무μμ λ¬Έμμ΄μ΄ λΆμ νλκ° μμ±λλ€.
μ¬κΈ°μ μ€μν μ μ, λνλ‘μ΄λ¨ΌνΈκ° νλμ 'μ΄λ¦'μ ν΅ν΄μ κ΄λ¦¬νλ€.
λ°λΌμ μ΄λ¦μ λ³κ²½νκ² λλ©΄, λνλ‘μ΄λ¨ΌνΈμ κ΄λ¦¬μμ λ²μ΄λκ² λλ€.
λνλ‘μ΄λ¨ΌνΈμ ν¬νΈν¬μλ©μ μλμ κ°λ€.
$ kubectl port-forward deploy/{λνλ‘μ΄λ¨ΌνΈμ΄λ¦} 8080:80
λ€μ μκΈ΄ 무μμ λ¬Έμμ΄μ μ λ ₯ν νμλ μκ³ , λνλ‘μ΄λ¨ΌνΈκ° κ°μ§ νλ μ€ νλλ₯Ό λμμΌλ‘ μ§μ νκ² λλ€.
4. Application Menifest
μμμ μ΄ν΄λ³Έ νλμ λνλ‘μ΄λ¨ΌνΈλ κ°λ¨ν μ ν리μΌμ΄μ λ°°ν¬μμ μ¬μ©ν μ μκ² λ€.
μ‘°κΈ λ 볡μ‘ν μ ν리μΌμ΄μ λ°°ν¬λ₯Ό μν΄, μΏ λ²λ€ν°μ€ YAMLνμΌμ μ΄μ©ν΄μΌ νλ€.
- pod.yml
# μΏ λ²λ€ν°μ€ API λ²μ & 리μμ€ μ ν
apiVersion: v1
kind: Pod
#리μμ€μ μ΄λ¦(νμ) & λ μ΄λΈ(νμX)
metadata:
name: hello-kiamol-3
#리μμ μ μ λ΄μ©
#μ€νν 컨ν
μ΄λ : μ΄λ¦, μ΄λ―Έμ§
spec:
containers:
- name: web
image: kiamol/ch02-hello-kiamol
YAMLνμΌμ μμ±νμΌλ©΄, μλ λͺ λ Ήμ΄λ‘ μ ν리μΌμ΄μ μ λ°°ν¬ν μ μλ€.
$ kubectl apply -f {yamlκ²½λ‘}
pod/hello-kiamol-3 created
$ kubectl apply -f pod.yaml
NAME READY STATUS RESTARTS AGE
hello-kiamol 1/1 Running 2 3h35m
hello-kiamol-2-5dbf59b864-wjllt 1/1 Running 0 18m
hello-kiamol-3 1/1 Running 0 9s
μλ‘μ΄ νλ hello-kiamol-3κ° μμ±λ κ²μ λ³Ό μ μλ€.
μ μΈμ μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ μ¬λ¬ νκ²½μμλ μ€νν μ μλ νκ²½μ ꡬμΆν μ μλ€.
λ§μ½ yamlμ΄ μΈλΆμ μμ΄λ μ€νν μ μλ€.
$ kubectl apply -f https://raw.githubusercontent.com/sixeyed/kiamol/master/ch02/pod.yaml
yamlνμΌμ λν μ 보λ 곡μ λ¬Έμμμ μΆκ°λ‘ νμΈν΄λ³΄μ.
https://kubernetes.io/ko/docs/tasks/manage-kubernetes-objects/declarative-config/
5. μ ν리μΌμ΄μ κ΄λ¦¬
μ€νμ€μΈ μ ν리μΌμ΄μ μ μ κ·Όνλ λ°©λ²μ μμ보μ.
# μ ν리μΌμ΄μ
λνν μ
Έ μμ±
$ kubectl exec -it {νλμ΄λ¦} sh
μ λͺ λ Ήμ΄λ₯Ό ν΅ν΄ μ ν리μΌμ΄μ λ΄μ μ μν μ μλ€.
μ Έ μμμ λ€μ λͺ λ Ήμ΄λ‘ ν μ€νΈν΄λ³Ό μ μλ€.
#IP νμΈ
$ hostname -i
# μΉ μ ν리μΌμ΄μ
λμ νμΈ
$ wget -O - http://localhost | head -n 4
# μ’
λ£
$ exit
μλ λͺ λ Ήμ΄λ μΏ λ²λ€ν°μ€ 컨ν μ΄λμ λ‘κ·Έλ₯Ό μΆλ ₯ν μ μλ€.
# μ 체 λ‘κ·Έ μΆλ ₯
$ kubectl logs {νλμ΄λ¦}
# λ§μ§λ§ λ μ€ λ‘κ·Έ μΆλ ₯
$ kubectl logs --tail=2 {νλμ΄λ¦}
μ°Έκ³
Learn Kubernetes in a Month of Lunches: Stoneman, Elton
https://kubernetes.io/docs/reference/kubectl/
'DevOps > Kubernetes' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Kubernetes] 3. μΏ λ²λ€ν°μ€ λ€νΈμν¬ (0) | 2023.09.29 |
---|---|
[Kubernetes] 1-1. Dockerλ‘ μΏ λ²λ€ν°μ€ νκ²½ ꡬμΆνκΈ° (0) | 2023.09.23 |
[Kubernetes] 1. μΏ λ²λ€ν°μ€ κΈ°μ΄ κ°λ (0) | 2023.09.23 |