[CentOS7] Kubernetes(k8s) ์ค์น
2022. 9. 10. 01:50ใSystem ์์ ์ค/DevOps
728x90
๋ฐ์ํ
๐ Kubernetes ์ค์น
๐ฝ CentOS 7
๐ฆ ์ด๊ธฐ ์ค์ (Master, Node Worker ๋ชจ๋ ์งํ)
728x90
์ต์ด ์์ ๊ฐ์ด SELinux๊ฐ ํ์ฑํ ๋์ด ์๋์ง ํ์ธํ๊ณ , ๋ด๋ ค์ฃผ์ด์ผ ํด์.
์ด์ ๋ถํฐ ๊ฐ์ํ๋ก ๊ตฌ์ฑ๋ Server๋ค์ SSH๋ก ๋ถ์ด ์์
์ ์งํํ ๊ฒ์.
๋ค์์ ๋ฐฉํ๋ฒฝ์ด ์ฌ๋ผ๊ฐ ์๋์ง ํ์ธํ๊ณ , ๋ฐฉํ๋ฒฝ์ ๋ด๋ ค ์ค๋๋ค.
์ฐธ๊ณ ๋ก Network Manager๋ฅผ ๋ด๋ ค๋ฒ๋ฆฌ๋ฉด ์ธํฐ๋ท์ด ๋๊ฒจ ๋ฒ๋ฆฌ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฒ์๋ SWAP์ ๋นํ์ฑํ ์์ผ์ฃผ์์ด์.
๋ฐ์ํ
cat <<EOF>> /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
๋ค์์ผ๋ก ์์ ๊ฐ์ด Iptables Kernel Option์ ํ์ฑํ ํด์ฃผ์์ต๋๋ค.
cat <<EOF>> /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
์ด๋ฒ์๋ Kubernetes๋ฅผ ์ํ yum repository๋ฅผ ์ค์ ํด ์ฃผ์์ด์.
์ด ๊ณณ์์ Kubernetes ๊ด๋ จ ํ๋ก๊ทธ๋จ ๋ฑ์ ๋ด๋ ค๋ฐ๊ฒ ๋ ๊ฒ์ด์์.
yum repository ์์ ์ฌํญ์ด ์๊ธฐ ๋๋ฌธ์ yum update ๋ช
๋ น์ด๋ก ์ต์ ํ ํด์ค๋๋ค.
192.168.32.10 -> $ hostname k8s-master
192.168.32.11 -> $ hostname k8s-wocker1
192.168.32.12 -> $ hostname k8s-wocker2
# ๋๋ ์๋ ๋ช
๋ น์ด๋ก hostname ๋ณ๊ฒฝ
$ hostnamectl set-hostname k8s-master
Hostname File์ ์์ ํด ์ค๊ฒ์.
Kubernetes Node๋ค์ ๋ชจ๋ ๋ฑ๋กํด ์ฃผ์ด์ผ ํ๋๋ฐ, ์ด๋ฅผ ํ์ง ์์ผ๋ฉด Kubeadm join ์ ์ค๋ฅ๊ฐ ๋ฐ์ํด์.
์ฃผ๋ํ๋์ ์ผ๋จ Master์ ๋ชจ๋ Node์ hosts File์ ์์ ๊ฐ์ด ์์ ํด ์ฃผ์์ด์.
Hostname์ผ๋ก Ping Test ์ ์ ์์ ์ผ๋ก Ping์ด ๊ฐ๋๊ฒ์ ํ์ธํ ์ ์์ด์.
๐ฆ Docker ์ค์น ๋ฐ ์คํ (Master, Node Worker ๋ชจ๋ ์งํ)
์์ ๊ฐ์ด Docker์ ํจ๊ป ํ์ํ Package๋ค์ ๋ด๋ ค๋ฐ๊ธฐ ํ์์ด์.
Docker๊ฐ Booting ์ ์๋์ผ๋ก ๊ธฐ๋๋๊ฒ ํ๊ณ , ์ง๊ธ ๋ฐ๋ก ๊ธฐ๋๋๊ฒ ํด ์ฃผ์์ด์.
Docker ์ ์ฉ ๊ณ์ ์ ์์ ๊ฐ์ด ๋ง๋ค์ด ์ฃผ์์ด์.
Docker ๊ด๋ฆฌ์ ๊ณ์ ์ Password๋ฅผ ๋ง๋ค์ด ์ฃผ์์ด์.
Docker group์ ๋ง๋ค๊ณ , dockeradmin์ ํด๋น group ์์ ๋ฃ์ด์ฃผ์์ด์.
curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose -version
์ด๋ฒ์๋ Docker compose๋ฅผ ์ค์นํด ์ฃผ์์ด์.
Docker๊ฐ ์ ์์ ์ผ๋ก ์ค์น ๋์๋์ง ํ์ธํด ์ฃผ์์ด์.
๐ฝ Kubernetes ์ค์น
๐ฆ Master / Node ๋ชจ๋ ์งํ
1. 1.15 Version ์ค์น
yum install -y kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64 --disableexcludes=kubernetes
2. 1.20 Version ์ค์น
yum install -y kubeadm-1.20.5-0.x86_64 kubectl-1.20.5-0.x86_64 kubelet-1.20.5-0.x86_64 --disableexcludes=kubernetes
์ฃผ๋ํ๋์ 1.20 Version์ผ๋ก ์ค์น๋ฅผ ์งํํ์์ด์.
๐ฝ ์ค์
๐ฆ Master
kubeadm ์ด๊ธฐํ๋ฅผ ํ๋ ค๊ณ ํ๋๋ ์๋์ ๊ฐ์ด Error๊ฐ ๋ฐ์ํ์ด์.
์ต์ CPU ๊ฐ์์ Memory ํฌ๊ธฐ๊ฐ ๋ง์ง ์๋๋ค๋ ๋ด์ฉ์ด์์.
์ฃผ๋ํ๋์ ํด๋น ๊ฐ์ ๋จธ์ ์ ์ค์ ํ ๋, CPU ๊ฐ์ 1๊ฐ์ Memory๋ฅผ 1024MB ๋ก ๋ง์ถ์ด์ฃผ์๋๋ฐ, ์ด์ ๋ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ์ด์์.
์์ ๊ฐ์ด ์ ์ ์์
์ด ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
๋ง์ฝ ์์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋๋ฐ, ๋ค๋ฅธ ์ค๋ฅ๊ฐ ๋๋ค๋ฉด kubeadmin init ๋ช
๋ น์ด๋ฅผ ๋จผ์ ์คํํด ์ฃผ์ธ์.
- apiserver-advertise-address : master1.net์ IP ์ฃผ์
- pod-network-cidr : Flannel ์์ ๊ถ์ฅํ๋ ๋คํธ์ํฌ ๋์ญ
์ด๋ ๊ฒ ์ฌ์ฉ์ ์ค์ ๊ณผ kubeadmin join ๋ช
๋ น์ด๋ก ๊ฐ๊ฐ์ Node๋ค์ด Master Node์ Joinํ ์ ์๋ ๋ช
๋ น์ด์ Token ๊ฐ์ด ์์ฑ๋ ๊ฑธ ํ์ธํ ์ ์์ด์.
์์์ ๋์จ ๋ช
๋ น์ด ๊ทธ๋๋ก Wocker Node์์ ์คํ์ ํด ์ค๋๋ค.
Kubernetes ํ๊ฒฝ ๋ณ์ ์ค์ ์ ํด ์ฃผ์์ด์.
๊ทธ๋ฐ ๋ค ๋ชจ๋ PODS๊ฐ Running ์ํ์ธ์ง ํ์ธํด ์ฃผ์์ด์.
์ด๋ฒ์๋ Calico ๊ธฐ๋ณธ ์ค์น๋ฅผ ์งํ ํด ์ฃผ์์ด์.
(Kubernetes Cluster Networking Plugin ์ค์น)
๊ทธ๋ฐ ๋ค ๋ชจ๋ PODS๊ฐ Running ์ํ์ธ์ง ํ์ธํด ์ฃผ์์ด์.
Calico๋ ๊ธฐ๋ณธ์ ์ผ๋ก 192.68.0.0/16 ๋์ญ์ ์ฌ์ฉํด์.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ IP๊ฐ ์ค๋ณต๋๋ค๋ Error๊ฐ ๋๋ค๋ฉด ์์ ๋ฐฉ๋ฒ(Kubectl apply) ๋ง๊ณ , calico.yaml File์ ๋ด๋ ค๋ฐ๊ธฐ ํ ๋ค Code๋ฅผ ์์ ํด์ค ๋ค Calico๋ฅผ ์ค์นํด ์ฃผ๋ฉด ๋์.
curl -O https://docs.projectcalico.org/v3.8/manifests/calico.yaml
sed s/192.168.0.0\\/16/10.96.0.0\\/12/g -i calico.yaml
kubectl apply -f calico.yaml
๐ฝ ์ค์
๐ฆ Woker Node
master์ Wocker Node๋ค์ ์ํ๋ฅผ ํ์ธํด ์ฃผ์์ด์.
๐ฝ Dashboard ์ค์น
๐ฆ Master
์ต์ด ์์ ๊ฐ์ด Program์ ์ค์นํ์ฌ ์ค๋๋ค.
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Proxy ์ค์ ์ ํด ์ฃผ์์ด์.
kubectl get services -n kubernetes-dashboard
kubectl proxy
Dashboard Service๊ฐ ์ ์์ ์ผ๋ก ๊ตฌ๋์ค์ธ์ง ํ์ธํ ๋ค Proxy๋ฅผ ๊ธฐ๋ํ์ฌ ์ฃผ์์ด์.
๋ค๋ฅธ ํฐ๋ฏธ๋์ ์ด์ด ์์ ๊ฐ์ด API ํต์ ์ ํ์ธํ ๊ฒฐ๊ณผ ์ ์ ํต์ ์ด ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์์ curl์ kube-proxy๋ฅผ ํตํด API Server๋ก https:kubernetes-dashboard: ์์ฒญ์ ๋ณด๋ด Html ์๋ต์ ๋ฐํํด ์ค ๊ฒ์ด์์.
๐ฝ TEST
๐ฆ Master
์ต์ด POD๋ฅผ ์คํํ์ฌ ์ฃผ์์ด์.
kubectl expose pod nginx-test
kubectl get services
๊ทธ๋ฐ ๋ค ์์ ๊ฐ์ด Service ์ ๋ณด๋ฅผ ํ์ธํด ๋ณด์์ด์.
Service Type์ ๋ณ๊ฒฝํ์ฌ ์ค๋๋ค.
๐ง ์ฐธ๊ณ ์๋ฃ
https://bono915.tistory.com/258
728x90
๋ฐ์ํ