06C. Vagrantfile ์ดํด๋ณด๊ธฐ
06C. Vagrantfile ์ดํด๋ณด๊ธฐ ๊ด๋ จ
์ด๋ฒ์๋ ์์์ ์คํํ๋ Vagrantfile
์ ๋ด์ฉ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์์ด ๋ง์ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ๊ฒ ๋ณต์กํ์ง๋ ์์ต๋๋ค.
Vagrantfile
Vagrant.configure("2") do |config|
config.vm.boot_timeout = 3000
config.vm.define "master" do |master|
master.vm.box = "ubuntu/jammy64"
master.vm.network "private_network", ip: "192.168.56.10"
master.vm.hostname = "master"
master.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 4
end
master.vm.provision "0", type: "shell", preserve_order: true, privileged: true, inline: <<-EOC
cat <<-'EOF' >/etc/modules-load.d/kubernetes.conf
br_netfilter
EOF
sudo modprobe br_netfilter
cat <<-'EOF' >/etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
sudo apt update
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y containerd.io
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
cat <<-'EOF' >/etc/default/kubelet
KUBELET_EXTRA_ARGS=--node-ip=192.168.56.10
EOF
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
OUTPUT_FILE=/vagrant/join.sh
rm -rf $OUTPUT_FILE
rm -rf /vagrant/.kube
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=192.168.56.10 --apiserver-advertise-address=192.168.56.10
sudo kubeadm token create --print-join-command > $OUTPUT_FILE
chmod +x $OUTPUT_FILE
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
cp -R $HOME/.kube /vagrant/.kube
cp -R $HOME/.kube /home/vagrant/.kube
sudo chown -R vagrant:vagrant /home/vagrant/.kube
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubectl completion bash >/etc/bash_completion.d/kubectl
echo 'alias k=kubectl' >>/home/vagrant/.bashrc
EOC
end
(1..3).each do |i|
config.vm.define "worker#{i}" do |worker|
worker.vm.box = "ubuntu/jammy64"
worker.vm.network "private_network", ip: "192.168.56.1#{i}"
worker.vm.hostname = "worker#{i}"
worker.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
worker.vm.provision "0", type: "shell", preserve_order: true, privileged: true, inline: <<-EOC
cat <<-'EOF' >/etc/modules-load.d/kubernetes.conf
br_netfilter
EOF
sudo modprobe br_netfilter
cat <<-'EOF' >/etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
sudo apt update
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y containerd.io
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
cat <<-'EOF' >/etc/default/kubelet
KUBELET_EXTRA_ARGS=--node-ip=192.168.56.1#{i}
EOF
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
EOC
end
end
end
๋จผ์ Vagrantfile
์ ์ฒซ ๋ถ๋ถ์
๋๋ค(์ฐธ๊ณ ๋ก Vagrantfile
์ Ruby ์ธ์ด๋ก ์์ฑ์ด ๋์ด ์์ต๋๋ค). Vagrantfile
์ Vagrant.configure("2") do |config|
๋ก ์์ํ๋ฉฐ ๊ทธ ์๋์ ๊ฐ์ข
์ค์ ์ ๋ฃ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ "2"
๋ Vagrant.configure
๋ฒ์ 2๋ผ๋ ๋ป์ด๋ฉฐ ๊ฐ์๋จธ์ ์ 2๊ฐ ๋ง๋ค๊ฒ ๋ค๋ ๋ป์ด ์๋๋๋ค.
Vagrant.configure("2") do |config|
config.vm.boot_timeout = 3000
config.vm.boot_timeout
: ๊ฐ์๋จธ์ ๋ถํ ๋๊ธฐ ์๊ฐ์ ๋๋ค. ์ด ๊ฐ์ ์งง๊ฒ ์ค์ ํ๋ฉด ๋ถํ ์ด ๋๋๊ธฐ ์ ์vagrant up
๋ช ๋ น์ด ์คํจํ ์ ์์ต๋๋ค.
์ด์ master ๋
ธ๋ ์ค์ ๋ถ๋ถ์
๋๋ค. config.vm.define "master" do |master|
์ผ๋ก ๋ง์คํฐ ๋
ธ๋ ์ ์ํ๊ณ ๊ทธ ์๋์ ์ค์ ์ ๋ฃ๊ฒ ๋ฉ๋๋ค.
config.vm.define "master" do |master|
master.vm.box = "ubuntu/jammy64"
master.vm.network "private_network", ip: "192.168.56.10"
master.vm.hostname = "master"
master.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 4
end
master.vm.box
: Vagrant๋ ๊ฐ์๋จธ์ ์ด๋ฏธ์ง๋ฅผ box๋ผ๊ณ ๋ถ๋ฆ
๋๋ค. ์ฌ๊ธฐ์๋ Ubuntu 22.04 ๋ฒ์ ์ธ "ubuntu/jammy64"
๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ์ต๋๋ค. master.vm.network
: ๋คํธ์ํฌ ์ค์ ์
๋๋ค. "private_network"
๋ก ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ณ master ๋
ธ๋์ IP ์ฃผ์๋ "192.168.56.10"
์ผ๋ก ์ค์ ํ์ต๋๋ค. master.vm.hostname
: ๊ฐ์๋จธ์ ์ ํธ์คํธ ์ด๋ฆ์
๋๋ค. master ๋
ธ๋์ด๋ฏ๋ก "master"
๋ก ์ค์ ํ์ต๋๋ค. master.vm.provider "virtualbox" do |v|
: ์ฐ๋ฆฌ๋ ๊ฐ์๋จธ์ ํ๋ก๊ทธ๋จ์ผ๋ก VirtualBox๋ฅผ ์ฌ์ฉํ๊ธฐ๋ก ํ์ผ๋ฏ๋ก VirtualBox ๊ด๋ จ ์ค์ ์ ํด์ค๋๋ค.
v.memory
: ๊ฐ์๋จธ์ ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ๋๋ค. ์ฌ๊ธฐ์๋ 4096(4Gi)์ ์ค์ ํ์ต๋๋ค.v.cpus
: ๊ฐ์๋จธ์ ์ CPU ๊ฐ์์ ๋๋ค. ์ฌ๊ธฐ์๋ 4๊ฐ๋ก ์ค์ ํ์ต๋๋ค.
์ฌ๊ธฐ์๋ถํฐ๋ provision
์ด๋ผ๊ณ ํด์ Vagrant๊ฐ ๊ฐ์๋จธ์ ์ ์์ฑํ ๋ค ์คํํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํ๋ ๋ถ๋ถ์
๋๋ค. ์ด ๋ถ๋ถ์ ๋ด์ฉ์ด ๋ง์๋ฐ, ๋ถ๋ถ ๋ถ๋ถ ๋๋ ์ ์ค๋ช
ํ๊ฒ ์ต๋๋ค.
master ๋
ธ๋์ provision
์ค์ ์ ์ด๋ ๊ฒ ์์ํฉ๋๋ค. master.vm.provision "0", type: "shell", preserve_order: true, privileged: true, inline: <<-EOC
์์ "0"
์ provision์ ์ด๋ฆ, "shell"
์ ์
ธ ์คํฌ๋ฆฝํธ, preserve_order: true
๋ ์คํ ์์๋ฅผ ์ ์งํ๊ฒ ๋ค๋ ๋ป์
๋๋ค. privileged: true
๋ ํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ root ๊ถํ์ผ๋ก ์คํํ๊ฒ ๋ค๋ ๋ป์
๋๋ค. ๋ง์ง๋ง์ผ๋ก inline: <<-EOC
๋ค์ ์ค๋ถํฐ ์คํฌ๋ฆฝํธ๊ฐ ์์๋ฉ๋๋ค.
๋ค์์ kubeadm
์คํ์ ํ์ํ ์ปค๋ ๋ชจ๋์ ๋ก๋ฉํ๊ณ , ์ปค๋ ์ค์ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ถ๋ถ์
๋๋ค.
cat <<-'EOF' >/etc/modules-load.d/kubernetes.conf
br_netfilter
EOF
sudo modprobe br_netfilter
cat <<-'EOF' >/etc/sysctl.d/kubernetes.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system
br_netfilter
: iptables๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ํ ์ปค๋ ๋ชจ๋์ ๋๋ค. ๋ถํ ํ ๋ ๋ก๋ฉํ ์ ์๋๋ก/etc/modules-load.d/
kubernetes.conf
ํ์ผ ์์๋ ๋ฃ์ด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณsudo modprobe br_netfilter
๋ช ๋ น์ผ๋กbr_netfilter
์ปค๋ ๋ชจ๋์ ์ง๊ธ ์ฆ์ ๋ก๋ฉํด์ค๋๋ค.net.ipv4.ip_forward = 1
์ IPv4 ํฌ์๋ฉ ๊ธฐ๋ฅ์ ํ์ฑํํฉ๋๋ค.net.bridge.bridge-nf-call-iptables = 1
๊ณผnet.bridge.bridge-nf-call-ip6tables = 1
์ ์ปจํ ์ด๋์ ๋คํธ์ํฌ ํจํท์ ํธ์คํธ์ iptables ์ค์ ์ ๋ฐ๋ผ ์ ์ด๋๋๋ก ํฉ๋๋ค. ๋ถํ ํ ๋ ์ค์ ๊ฐ์ ๋ฐ์ํ ์ ์๋๋ก/etc/sysctl.d/
kubernetes.conf
ํ์ผ ์์๋ ๋ฃ์ด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณsudo sysctl --system
๋ช ๋ น์ ์คํํ์ฌ ์ค์ ๊ฐ์ ์ง๊ธ ์ฆ์ ๋ฐ์ํด์ค๋๋ค.
kubelet
์ค์ ์
๋๋ค. ์ด Vagrantfile
์์ ์์ฑํ VirtualBox ๊ฐ์๋จธ์ ์ ๋คํธ์ํฌ ์ธํฐํ์ด์ค๊ฐ 2๊ฐ ์์ฑ๋ฉ๋๋ค. ์ฌ๊ธฐ์ master.vm.network "private_network", ip: "192.168.56.10"
์ผ๋ก ์์ฑํ ๋ ๋ฒ์งธ ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ IP ์ฃผ์์ธ 192.168.56.10
์ --node-ip
์ ์ค์ ํด์ค๋๋ค.
cat <<-'EOF' >/etc/default/kubelet
KUBELET_EXTRA_ARGS=--node-ip=192.168.56.10
EOF
containerd ์ค์น ๋ฐ ์ค์ ๋ถ๋ถ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ปจํ ์ด๋ ๋ฐํ์ ์ธํฐํ์ด์ค(CRI)๋ก containerd๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ์ต๋๋ค.
sudo apt update
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install -y containerd.io
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null <span class="token file-descriptor important">2><span class="token file-descriptor important">&1
sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
sudo systemctl restart containerd
sudo systemctl enable containerd
- .
sudo apt update
๋ก apt ํจํค์ง ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํด์ฃผ๊ณsudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
๋ก ํ์ํ ํจํค์ง๋ค์ ์ค์นํฉ๋๋ค. - .
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
๋ก Docker ์ธ์ฆ์๋ฅผ ์ค์นํ๊ณ ,sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
๋ก apt ์ ์ฅ์ ๋ชฉ๋ก์ Docker ์ ์ฅ์๋ฅผ ์ถ๊ฐํด์ค๋๋ค. - ๋ค์
sudo apt update
๋ก apt ํจํค์ง ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํด์ฃผ๊ณ ,sudo apt install -y containerd.io
๋ก containerd๋ฅผ ์ค์นํฉ๋๋ค. ์ด ๊ณผ์ ์์ดsudo apt install -y containerd
๋ก ์ฐ๋ถํฌ์ ๋ด์ฅ๋ containerd๋ฅผ ์ค์นํ๋ฉดkubeadm
์ด ์ ๋๋ก ์คํ๋์ง ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํฉ๋๋ค. - .
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
๋ก containerd ๊ธฐ๋ณธ ์ค์ ๊ฐ์ ๋ง๋ค์ด๋ด๊ณ ,sudo sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
๋กSystemdCgroup
์true
๋ก ๋ณ๊ฒฝํด์ค๋๋ค. ์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค์ Cgroups๋ก systemd๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. - .
sudo systemctl restart containerd
๋ก containerd ์๋น์ค๋ฅผ ์ฌ์์ํ์ฌ ๋ฐ๋ ์ค์ ์ ๋ฐ์ํด์ฃผ๊ณ ,sudo systemctl enable containerd
๋ก ๋ถํ ํ์ ๋ containerd ์๋น์ค๊ฐ ์คํ๋๋๋ก ์ค์ ํด์ค๋๋ค.
์ด ๋ถ๋ถ์ด ํต์ฌ์
๋๋ค. kubeadm init
์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ master ๋
ธ๋๋ฅผ ์์ฑํฉ๋๋ค.
OUTPUT_FILE=/vagrant/join.sh
rm -rf $OUTPUT_FILE
rm -rf /vagrant/.kube
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=192.168.56.10 --apiserver-advertise-address=192.168.56.10
sudo kubeadm token create --print-join-command > $OUTPUT_FILE
chmod +x $OUTPUT_FILE
OUTPUT_FILE=/vagrant/join.sh
์kubeadm init
๋ช ๋ น ์คํ ํ ์ถ๋ ฅ๋๋kubeadm join
๋ช ๋ น์ ์ผ์ผ์ด ๋ณต์ฌํด์ ๋ถ์ฌ๋ฃ๊ธฐ ๋ฒ๊ฑฐ๋ก์ฐ๋ฏ๋ก ์คํฌ๋ฆฝํธ ํ์ผ๋ก ์ ์ฅํ๊ธฐ ์ํ ๋ถ๋ถ์ ๋๋ค. ํนํ/vagrant
๋๋ ํฐ๋ฆฌ๋ Vagrant๋ก ์์ฑํ ๋ชจ๋ ๊ฐ์๋จธ์ ์์ ๊ณต์ ํ๋ ๋๋ ํฐ๋ฆฌ์ด๋ฉฐVagrantfile
์ด ์๋ ๋ก์ปฌ ํด๋(๋๋ ํฐ๋ฆฌ)์๋ ๊ณต์ ๋๋ ๊ณณ์ ๋๋ค.rm -rf $OUTPUT_FILE
๋ก ์ด์ ์คํฌ๋ฆฝํธ ํ์ผ์ ์ญ์ ํ๊ณ ,rm -rf /vagrant/.kube
๋ก ์ด์ .kube
๋๋ ํฐ๋ฆฌ๋ ์ญ์ ํฉ๋๋ค.- .
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=192.168.56.10 --apiserver-advertise-address=192.168.56.10
์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์ master ๋ ธ๋๋ฅผ ์์ฑํฉ๋๋ค.--pod-network-cidr=10.244.0.0/16
: ์ฐ๋ฆฌ๋ ์ฟ ๋ฒ๋คํฐ์ค ์ปจํ ์ด๋ ๋คํธ์ํฌ ์ธํฐํ์ด์ค(CNI)๋ก flannel์ ์ฌ์ฉํ ๊ฒ์ด๋ฏ๋ก--pod-network-cidr
๋ฅผ10.244.0.0/16
๋ก ์ค์ ํด์ค๋๋ค.--control-plane-endpoint=192.168.56.10
: ๋ก์ปฌ ํ๊ฒฝ์ด๋ผ ๋๋ฉ์ธ์ด ํ์์์ผ๋ฏ๋ก ์ ์ด ํ๋ ์ธ ์๋ํฌ์ธํธ๋ฅผ master ๋ ธ๋์ IP ์ฃผ์192.168.56.10
์ผ๋ก ์ค์ ํฉ๋๋ค.--apiserver-advertise-address=192.168.56.10
: apiserver ์ฃผ์๋ master ๋ ธ๋์ IP ์ฃผ์192.168.56.10
์ผ๋ก ์ค์ ํฉ๋๋ค.
- .
kubeadm init
์คํ ํ์๋kubeadm join
๋ช ๋ น์ด ๋์ค์ง๋ง ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ์ฅํ๊ธฐ ์ํดsudo kubeadm token create --print-join-command > $OUTPUT_FILE
๋ฅผ ์คํํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณchmod +x $OUTPUT_FILE
๋ก ์คํฌ๋ฆฝํธ ํ์ผ์ ์คํ ๊ถํ์ ๋ถ์ฌํฉ๋๋ค.
์ด์ ํด๋ฌ์คํฐ ๋ฐ๊นฅ์์ ํด๋ฌ์คํฐ๋ฅผ ์ ์ดํ ์ ์๋๋ก .kube
๋๋ ํฐ๋ฆฌ์ ์ค์ ํ์ผ์ ๋ง๋ค์ด์ฃผ๊ณ , CNI์ธ >flannel์ ์ค์นํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ bash ์๋ ์์ฑ ์ค์ ๊ณผ kubectl
์ k
๋ก ์ฝ์นญ(alias)์ ๋ง๋ค์ด์ค๋๋ค.
mkdir -p $HOME/.kube
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
cp -R $HOME/.kube /vagrant/.kube
cp -R $HOME/.kube /home/vagrant/.kube
sudo chown -R vagrant:vagrant /home/vagrant/.kube
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
kubectl completion bash >/etc/bash_completion.d/kubectl
echo 'alias k=kubectl' >>/home/vagrant/.bashrc
- .
mkdir -p $HOME/.kube
๋ก ํ ๋๋ ํฐ๋ฆฌ์.kube
๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณsudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
๋ก/etc/kubernetes/
์์ ์๋admin.conf
๋ฅผ.kube
์๋์config
ํ์ผ๋ก ๋ณต์ฌํด์ค๋๋ค. ๋ง์ง๋ง์ผ๋กsudo chown $(id -u):$(id -g) $HOME/.kube/config
๋กconfig
ํ์ผ์ ์์ ์์ ๊ทธ๋ฃน์ ํ์ฌ ์ฌ์ฉ์์ ๊ทธ๋ฃน์ผ๋ก ๋ณ๊ฒฝํด์ค๋๋ค. ์ด๋$HOME
์/root
์ด๊ณ ์ฌ์ฉ์์ ๊ทธ๋ฃน์root
์ ๋๋ค. ์ด๋ ๊ฒ ํด์ผkubectl
์ ์คํํ์ฌ flannel์ ์ค์นํ ์ ์์ต๋๋ค. - ๊ฐ์๋จธ์ ๋ฐ๊นฅ์์
.kube
๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฐ์ ธ๊ฐ ์ ์๋๋กcp -R $HOME/.kube /vagrant/.kube
๋ฅผ ์คํํฉ๋๋ค. - root๊ฐ ์๋ vagrant ์ผ๋ฐ ๊ณ์ ์์๋
kubectl
์ ์คํํ ์ ์๋๋กcp -R $HOME/.kube /home/vagrant/.kube
์ ์คํํ์ฌ.kube
๋๋ ํฐ๋ฆฌ๋ฅผ ๋ณต์ฌํ๊ณsudo chown -R vagrant:vagrant /home/vagrant/.kube
๋ก ์์ ์์ ๊ทธ๋ฃน์ vagrant๋ก ๋ณ๊ฒฝํฉ๋๋ค. - .
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
๋ฅผ ์คํํ์ฌ CNI flannel์ ์ค์นํฉ๋๋ค. CNI๋ ์ฌ๋ฌ ์ข ๋ฅ๊ฐ ์์ง๋ง ์ฌ๊ธฐ์๋ flannel์ ์ค์นํ๊ฒ ์ต๋๋ค. - .
kubectl completion bash >/etc/bash_completion.d/kubectl
๋ฅผ ์คํํ์ฌ bash ์๋ ์์ฑ ์ค์ ์ ํด์ฃผ๊ณ ,echo 'alias k=kubectl' >>/home/vagrant/.bashrc
๋ฅผ ์คํํ์ฌkubectl
์k
๋ก ์ฝ์นญ(alias)์ ๋ง๋ค์ด์ค๋๋ค.
๋ค์์ worker ๋
ธ๋ ๋ถ๋ถ์
๋๋ค. worker ๋
ธ๋๋ (1..3)
์ผ๋ก 1๋ถํฐ 3๊น์ง ๋ฃจํ๋ฅผ ๋๋ฉด์ ๋
ธ๋ 3๊ฐ๋ฅผ ์์ฑํฉ๋๋ค.
(1..3).each do |i|
config.vm.define "worker#{i}" do |worker|
worker.vm.box = "ubuntu/jammy64"
worker.vm.network "private_network", ip: "192.168.56.1#{i}"
worker.vm.hostname = "worker#{i}"
worker.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
worker.vm.provision "0", type: "shell", preserve_order: true, privileged: true, inline: <<-<span class="token constant">EOC
worker.vm.box
: master ๋ ธ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก Ubuntu 22.04 ๋ฒ์ ์ธ"ubuntu/jammy64"
๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ์ต๋๋ค.worker.vm.network
: ๋คํธ์ํฌ ์ค์ ์ ๋๋ค."private_network"
๋ก ๋ด๋ถ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๊ณ worker ๋ ธ๋์ IP ์ฃผ์๋"192.168.56.1#{i}"
๋ก ์ค์ ํด์ 11๋ถํฐ 13๊น์ง ์ฌ์ฉํ๋๋ก ํฉ๋๋ค.worker.vm.hostname
: ๊ฐ์๋จธ์ ์ ํธ์คํธ ์ด๋ฆ์ ๋๋ค."worker#{i}"
๋ก ์ค์ ํ์ฌ worker1๋ถํฐ 3๊น์ง ์ฌ์ฉํ๋๋ก ํฉ๋๋ค.worker.vm.provider "virtualbox" do |v|
: worker ๊ฐ์๋จธ์ ์ VirtualBox ์ค์ ์ ๋๋ค.v.memory
: ๊ฐ์๋จธ์ ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ์ ๋๋ค. ์ฌ๊ธฐ์๋ 2048(2Gi)์ ์ค์ ํ์ต๋๋ค.v.cpus
: ๊ฐ์๋จธ์ ์ CPU ๊ฐ์์ ๋๋ค. ์ฌ๊ธฐ์๋ 2๊ฐ๋ก ์ค์ ํ์ต๋๋ค.
worker.vm.provision
:join.sh
์คํฌ๋ฆฝํธ ์์ฑ ๋ถ๋ถ,kubeadm init
์ผ๋ก master ๋ ธ๋๋ฅผ ์์ฑํ๋ ๋ถ๋ถ, flannel์ ์ค์นํ๋ ๋ถ๋ถ,.kube
๋๋ ํฐ๋ฆฌ ๋ณต์ฌ ๋ถ๋ถ ๋ฑ์ ์ ์ธํ๋ฉด ์คํฌ๋ฆฝํธ๋ master์ ๋์ผํ๊ฒ containerd์kubeadm
์ ์ค์นํฉ๋๋ค.
์ง๊ธ๊น์ง Vagrantfile
๋ก ๊ฐ์๋จธ์ ์ ์์ฑํ๋ ๋ถ๋ถ๊ณผ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํ ์คํฌ๋ฆฝํธ๋ค์ ์์๋ณด์์ต๋๋ค. Vagrant ์์ด ์๋์ผ๋ก ๊ฐ์๋จธ์ ์ ์์ฑํ๊ณ , ์คํฌ๋ฆฝํธ๋ฅผ ์
๋ ฅํด๋ ๋์ผํ๊ฒ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๋ค์ ์ฅ์์๋ ์ด ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ์์ Nginx ๋ํ๋ก์ด๋จผํธ์ ์๋น์ค๋ฅผ ์์ฑํ ๋ค ์ธ๊ทธ๋ ์ค๋ ์ค์ ํด๋ณด๊ฒ ์ต๋๋ค.