โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Spring 1, 2 ์ ๋ฃ๊ณ ์์ฑํ๋ ๋ณต์ต ๋ธ๋ก๊ทธ ์ ๋๋ค.
1. ๊ฐ์์์ ๋ค๋ฃจ๋ ์ ์ฒด ํ๊ฒฝ
CI / CD ํ๊ฒฝ | ์ธํ๋ผ ํ๊ฒฝ |
|
|
โ๏ธ VM (๊ฐ์๋จธ์ ) : ๋ฌผ๋ฆฌ์ ์ธ ์ปดํจํฐ ์์์ ์ํํธ์จ์ด๋ก ๋ง๋ ๊ฐ์์ ์ปดํจํฐ, ํ๋์ ์ปดํจํฐ ์์์ ๋ ๋ค๋ฅธ ์ปดํจํฐ๋ฅผ ์คํํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ฐฐํฌ ํ๋ฆ
- IntelliJ ์์ ์ฝ๋ ๊ฐ๋ฐ์ ์๋ฃํ๊ณ ์ปค๋ฐ → GitHub ๋ก ์ฝ๋ ํตํฉ
- Jenkins ๋น๋
- Jenkins ๋ GitHub ์์ ์์ค๋ฅผ ๋ค์ด
- ์ฌ๊ธฐ์๋ Gradle ์ด ์์ด์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ด
- JAR ํ์ผ ์์ฑ
- ์ปจํ
์ด๋ ๋น๋
- JAR ํ์ผ์ ์คํ์ํฌ OpenJDK ์ด๋ฏธ์ง๋ฅผ DockerHub ์์ ๊ฐ์ ธ์ด
- ์ปจํ ์ด๋ ๋น๋ : ๋ฒ ์ด์ค ์ด๋ฏธ์ง (์ฑ์ ๋์ฐ๊ธฐ ์ํ ๊ธฐ๋ฐ์ด ๋๋ ํ๊ฒฝ) ์์ JAR ํ์ผ์ ์ฌ๋ฆฌ๋ ๊ฒ
- MyApp ์ปจํ ์ด๋๊ฐ ์ด๋ฏธ์ง๋ก ์์ฑ
- 3๋ฒ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ DockerHub ๋ก ์ฌ๋ฆฐ๋ค
- ๋ฐฐํฌ
- k8s ์ Pod ์์ฑ ๋ช ๋ น
- k8s ๋ Pod ๋ด ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ฃผ์๋ก DockerHub์์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด
- containerd ํํ ์ด๋ฏธ์ง๋ก ์ปจํ ์ด๋ ์์ฑ ์์ฒญ
2. ๋น ๋ฅด๊ณ ์ฝ๊ฒ ์ค์นํ๋ ๋ฐฉ๋ฒ
- VirtualBox ์ค์น (7.0.8)
- Vagrant ์ค์น (2.3.4)
- Vagrant ์คํฌ๋ฆฝํธ ์คํ (→ ์ธํ๋ผ ํ๊ฒฝ ์ค์น ๋ชจ๋ ๋)
- >> (k8s ์คํ ํ์ธ ์์ ) ์ ์ ํด ์ค์น
- ์๊ฒฉ ์ ์
- Pod ์กฐํ ๋ช ๋ น์ผ๋ก ์ํ ํ์ธ
- Dashboard ์ ์
3. ๋ฌด๊ฒ๊ฐ ์๊ฒ ์ค์นํ๋ ๋ฐฉ๋ฒ
๋ด PC ์ VirtualBox ๋ Vagrant ๋ฅผ ์ค์นํ ์ํ
Virtualbox ๋ก Rocky Linux ๋ฅผ ์์ฑํ๋ ์ฝ๋
Vagrant.configure("2") do |config|
config.vm.box = "rockylinux/8"
config.vm.provision :shell, privileged: true, inline: $default_script
config.vm.define "master-node“ do |master|
master.vm.hostname = "k8s-master"
master.vm.network "private_network", ip: "192.168.56.30"
master.vm.provider :virtualbox do |vb|
vb.memory = 4096
vb.cpus = 4
vb.customize ["modifyvm", :id, "--firmware", "efi"]
end
master.vm.provision :shell, privileged: true, inline: $master_script
end
end
$default_script = <<-SHELL
# Node๋ณ ๊ธฐ๋ณธ ์ค์น ๋ช
๋ น์ด
SHELL
$ master_script = <<-SHELL
# Master Node ์ ์ฉ ์ค์น ๋ช
๋ น์ด
SHELL
- config.vm.box = "rockylinux/8" : Rocky Linux ๋ฅผ 8 ๋ฒ์ ์ผ๋ก ์ค์นํด๋ผ
- config.vm.define "master-node“ : VM ์ ์ด๋ฆ์ ๋ถ์ฌ์ค๋ค, VirtualBox UI ์์ผ๋ก ๋ดค์ ๋ ๋ณด์ด๋ ์ด๋ฆ
- master.vm.hostname = "k8s-master" : Hostname ์ ์ง์ , ์๊ฒฉ ์ ์์ผ๋ก Linux ์ ๋ค์ด๊ฐ์ ๋ ๋์ค๋ ํธ์คํธ ์ด๋ฆ
- master.vm.network "private_network" : VirtualBox ์ ๋ด PC์์๋ง ์ฌ์ฉํ ์ ์๋ ๋คํธ์ํฌ ๋ง (Host-Only Network)
- ip: "192.168.56.30" : ๋ด ๋ฆฌ๋ ์ค์ ํ ๋นํ IP
- NAT ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ์ง ์์๋ Vargrant ๊ฐ ๋ง๋ค์ด์ฃผ๋ ๋คํธ์ํฌ (IP ๋ ์์์ ํ ๋น)
- ๋ด VM์ ์ธ๋ถ ์ธํฐ๋ท์ด๋ ์ฐ๊ฒฐ ์์ผ์ฃผ๋ ์ญํ
- K8s ์์ ํ์ํ ํจํค์ง๋ค์ ๋ฐ๋๋ฐ ์ฌ์ฉํ๋ค
- vb.memory = 4096 , vb.cpus = 4 : ๋ฉ๋ชจ๋ฆฌ๋ 4๊ธฐ๊ฐ, CPU ๋ 4์ฝ์ด
- VM ์ ์์์ด ํ ๋น๋๋ค
- default_script ๊ฐ ์คํ๋๊ณ master_script ๊ฐ ์คํ
์ฟ ๋ฒ๋คํฐ์ค ์ค์น (๋ชจ๋ node)
[1] rocky linux ๊ธฐ๋ณธ ์ค์ : ํจํค์ง ์ ๋ฐ์ดํธ, ํ์์กด ์ค์
[2] kubeadm ์ค์น ์ ์ฌ์ ์์ : ๋ฐฉํ๋ฒฝ ํด์ , ์ค์ ๋นํ์ฑํ
[3] ์ปจํ ์ด๋ ๋ฐํ์ ์ค์น
- ์ปจํ
์ด๋ ๋ฐํ์ ์ค์น ์ ์ฌ์ ์์
: iptables ์ธํ
(→ Linux OS ์ ํ ๋น๋ ๋คํธ์ํฌ๊ฐ ์ฟ ๋ฒ๋คํฐ์ค์ Pod Network ๋ก ์ฐ๊ฒฐ๋ ์ ์๋๋ก iptables ๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์ค์ ) - ์ปจํ
์ด๋ ๋ฐํ์ (containerd ์ค์น)
- containerd ํจํค์ง ์ค์น (option2)
- docker engine ์ค์น : repo ์ค์ , containerd ์ค์น
- containerd ํจํค์ง ์ค์น (option2)
- ์ปจํ ์ด๋ ๋ฐํ์ : cri ํ์ฑํ
[4] kubeadm ์ค์น : repo ์ค์ , SELinux ์ค์ , kubelet / kubeadm / kubectl ํจํค์ง ์ค์
Master node ์ธํ
[5] kubeadm ์ผ๋ก ํด๋ฌ์คํฐ ์์ฑ
- ํด๋ฌ์คํฐ ์ด๊ธฐํ
- kubectl ์ฌ์ฉ ์ค์
- CNI Plugin ์ค์ (calico)
CNI : ์ปจํ ์ด๋๋ค ๊ฐ์ ํต์ ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์ ๋ํ ์ฟ ๋ฒ๋คํฐ์ค์ ๋คํธ์ํฌ๊ฐ์ ์ธํฐํ์ด์ค - Master ์ Pod ๋ฅผ ์์ฑํ ์ ์๋๋ก ์ค์
์ผ๋ฐ์ ์ผ๋ก Master ์ ์ ์ ๊ฐ ๋ง๋ Pod ๋ ์ฌ๋ฆฌ์ง ์์ง๋ง, ์ฐ๋ฆฌ๋ Master ๋ง ์๊ธฐ ๋๋ฌธ์ App1 ์ด๋ 2๊ฐ ๋ณ๋ค๋ฅธ ์ค์ ์ ์ํด๋ Pod ๋ฅผ ์์ฑํ ์ ์๋๋ก ์ค์
[6] ์ฟ ๋ฒ๋คํฐ์ค ํธ์ ๊ธฐ๋ฅ ์ค์น
- kubectl ์๋์์ฑ ๊ธฐ๋ฅ
kubectl d ๊น์ง๋ง ์น๊ณ tab ์ ๋๋ฅด๋ฉด d ๋ก ์์๋๋ ํค์๋๊ฐ ์กฐํ๋๊ณ ์๋์์ฑ ๋๋๋ก - Dashboard ์ค์น
- Kubernetes Dashboard๋ฅผ ์ค์นํ๋ฉด ์๋น์ค๊ฐ ์์ฑ๋๋ฉฐ, ์ธ๋ถ ์ ๊ทผ์ ์ํด NodePort(์: 30000๋ฒ ํฌํธ)๊ฐ ํ ๋น๋๋ค.
- ์ด๋ก ์ธํด ๋ฆฌ๋ ์ค ์๋ฒ์๋ 30000๋ฒ ํฌํธ๊ฐ ์ด๋ฆฌ๊ฒ ๋๊ณ , ํด๋น ํฌํธ๋ฅผ ํตํด ๋์๋ณด๋์ ์ ์ํ ์ ์๋ค.
- ์ฌ์ฉ์๊ฐ 30000๋ฒ ํฌํธ๋ก ์ ์ํ๋ฉด, ํธ๋ํฝ์ ๋ฆฌ๋ ์ค์ iptables๋ฅผ ๊ฑฐ์ณ Calico ๋คํธ์ํฌ๋ง์ผ๋ก ๋ค์ด๊ฐ๋ฉฐ, ๊ทธ ์์์ Dashboard Pod์ IP๋ฅผ ์ฐพ์ ์ ๋ฌ๋๋ค.
- iptables ์ค์ ์ ๋ณด๋ฉด 30000๋ฒ ํฌํธ๊ฐ Dashboard Pod์ IP(Cluster IP)๋ก ๋งคํ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
- Metrics server ์ค์น metric ์ ๋ณด๋ฅผ ์กฐํํ๊ณ , ๋์๋ณด๋์์ CPU ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด๋ฅผ ํ์ธ๊ฐ๋ฅ
'๐ฑ ์ธํ๋ฐ > โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(5) Probe ์ดํดํ๊ธฐ (1) | 2025.06.02 |
---|---|
(4) Object ๊ทธ๋ ค๋ณด๋ฉฐ ์ดํดํ๊ธฐ (0) | 2025.05.30 |
(3) ์ค๋ฌด์์ ๋๊ปด ๋ณธ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ ๋ง ํธํ ์ด์ (0) | 2025.05.29 |
[๋ฏธ์ 1] ์ฟ ๋ฒ๋คํฐ์ค ์ค์น ๊ตฌ๊ฐ๋ณ ์ํ ํ์ธ (1) | 2025.05.28 |
(1) ์ปจํ ์ด๋ ํ๋ฐฉ ์ ๋ฆฌ - Linux, Container, Container Orchestration, Kernel, kubelet (0) | 2025.05.27 |