본문 바로가기
Cloud/Kubenetes

[Kubenetes] Tomcat 배포

by tankwoong 2023. 10. 25.
반응형

master node와 Tomcat node를 나눠서 Kubenete로 Tomcat 배포까지 해보겠다.

Ubuntu 22.04 CLI로 3개의 서버를 만들어서 진행하겠다.

Vmware에서 CLI버전을 다루긴 다소 까다롭기 때문에 Superputty를 사용하겠다.

master node 192.168.2.10
work node 1 192.168.2.11
work node 2 192.168.2.12

그리고 통신을 하기 위해 /etc/hosts에 아래와 같이 입력해준다.

nano /etc/hosts

Superputty를 사용할 때 주의사항은 putty가

설치된 상태여야되고, 설정 시 아래와 같이 Location을 설정해줘야한다.

그리고 ip는 우분투에서 아래와 같이 각각 설정해주었다.

이제 시작해보겠다.

 

step 1 

모든 노드에 스왑 비활성화 시키기

swapoff -a

sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

step 2

Using Docker Repository

sudo apt update  
sudo apt install -y ca-certificates curl gnupg lsb-release

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list

step 3

containerd 설치 

https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/install-containerd-on-ubuntu-22-04.html

 

How to Install Containerd on Ubuntu 22.04 / Ubuntu 20.04 | ITzGeek

containerd is an industry-standard container runtime that manages the complete container lifecycle of its host system. It handles image

www.itzgeek.com

sudo apt update
sudo apt install -y containerd.io
# sudo systemctl status containerd # Ctrl + C를 눌러서 나간다.

step 4

Containerd configuration for Kubernetes

cat <<EOF | sudo tee -a /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
EOF

sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml
sudo systemctl restart containerd

# 소켓이 있는지 확인한다.
sudo ls /var/run/containerd/containerd.sock

step 5

kubeadm, kubelet 및 kubectl

# 1. apt 패키지 색인을 업데이트하고, 쿠버네티스 apt 리포지터리를 사용하는 데 필요한 패키지를 설치한다.
sudo mkdir /etc/apt/keyrings
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

# 2. 구글 클라우드의 공개 사이닝 키를 다운로드 한다.
curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg

# 3. 쿠버네티스 apt 리포지터리를 추가한다.
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

# 4. apt 패키지 색인을 업데이트하고, kubelet, kubeadm, kubectl을 설치하고 해당 버전을 고정한다.
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

kubeadm 버전을 확인한다. --> kubeadm version

step 6

넷필터 브릿지 설정

modprobe br_netfilter
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

step 7

마스터 노드 초기화 --> kubeadm init

 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config
 export KUBECONFIG=/etc/kubernetes/admin.conf

kubeadm init 


#아래는 각자 다름 
kubeadm join 192.168.2.10:6443 --token wa3cq4.h5pj5smcjpppbz29 \
        --discovery-token-ca-cert-hash sha256:fbf5a864ad763bdbd5437acd10c9e480716fcf2c08187df40f4b9567237a86f2
        
#오류시 
kubeadm restart -> kubeadm init

step 8

work1, work2에서 master의 join 명령어 실시

kubeadm join 192.168.2.10:6443 --token wa3cq4.h5pj5smcjpppbz29 \ --discovery-token-ca-cert-hash sha256:fbf5a864ad763bdbd5437acd10c9e480716fcf2c08187df40f4b9567237a86f2
cilium connectivity test

step 9

cilium 설치 및 설정 

curl -LO https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
rm cilium-linux-amd64.tar.gz
cilium install  --> 2-3분 걸린다

step 10

Tomcat 배포 및 확인 

kubectl create deploy tc --image=consol/tomcat-7.0 --replicas=5
kubectl expose deploy tc --type=NodePort --port=80 --target-port=8080

 

kubectl get svc

NodePort --> 외부에서 접속하기 위해 사용하는 포트

targetPort -> service객체로 전달된 요청을 pod(deploy)로 전달할때 사용하는 포트

기타 오류 

2023.10.25 - [Cloud/Kubenetes] - Kubernetes worker-node join 오류

 

Kubernetes worker-node join 오류

[preflight] Running pre-flight checks error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf already exists [ERROR FileAvailable--etc-kubernetes-bootstrap-ku

woonglab.com

2023.10.26 - [분류 전체보기] - The connection to the server was refused - did you specify the right host or port? 해결방법

 

The connection to the server was refused - did you specify the right host or port? 해결방법

cilium을 설치하려고 했는데 계속해서 연결이 거부되었다고 나왔다. 구글링 하다보니 kubectl 문제라는 것을 알게 되었다. kubectl get node 했을 때도 연결이 안됬다고 Swap을 꺼줍니다. root@master:~# swapoff

woonglab.com

반응형