1. 마스터 노드 구성
도커 설치 아래 링크 참고(v2로 설치)
https://jumpkimg.tistory.com/64
쿠버네티스 마스터 노드 구성 아래 링크 참고
https://jumpkimg.tistory.com/81
2. 워커 노드 구성
1. SELinux, swap, 방화벽
# SELinux permissive로
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
# Swap 끄기
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
# 방화벽 비활성화 (클러스터 통신 위해)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
2. 도커 설치
sudo dnf install -y yum-utils
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable --now docker
3. Kubernetes repo 추가 및 kubeadm 설치
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo dnf install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
4. (필요 시) 이전 설정 초기화
이미 kubeadm을 실수로 실행한 적이 있거나 /etc/kubernetes 파일이 존재하면 아래 먼저 실행:
sudo kubeadm reset -f
sudo systemctl restart kubelet
5. 마스터 조인 명령어
sudo kubeadm join 10.0.2.19:6443 --token ****.**************** \
--discovery-token-ca-cert-hash sha256:6b71a27da02537e4c932a4aaf038aa7f1cd0a9b7bf14250d9f8d5cd63dd64340
6. 마스터 노드에서 확인
워커 노드들이 STATUS: Ready로 뜨면 성공
kubectl get nodes
3. 네임스페이스 구성
네임스페이스 생성
kubectl create namespace felix
4. nginx 디플로이먼트 생성
nginx 디플로이먼트 생성
kubectl create deployment nginx-deploy \
--image=nginx \
--replicas=2 \
-n felix
5. 서비스 생성
서비스 생성
kubectl create deployment nginx-deploy \
--image=nginx \
--replicas=2 \
-n felix
5. Ingress Controller 설치 (Helm 이용)
Ingress Controller 설치 (Helm 이용)
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx --create-namespace
6. 인그레스.yaml 생성
인그레스.yaml 생성
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
namespace: felix
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
rules:
- host: nginx.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
배포
kubectl apply -f nginx-ingress.yaml
7. 접속 확인 및 보완점
브라우저에서 👉 http://nginx.example.com
CLI에서 👉 curl http://nginx.example.com
접속하여 nginx 서비스 접속을 확인하려 하였으나 정상적인 서비스 확인이 불가능
> 일반 인스턴스에 클러스터 ip로 인그레스 컨트롤러와 서비스를 생성한게 원인
추가적으로 카카오클라우드 일반 vm에서는 해당 구성이 지원안되는 것으로 보임
보완점
1. 베어메탈 서버를 이용하여 구축한다(일반 인스턴스의 제약 없음)
2. 카카오클라우드에서 제공하는 쿠버네티스 엔진 서비스를 이용한다(인그레스 컨트롤러 타입:LB 타입으로)
3. 인그레스 컨트롤러 노드 포트로 바꿔서 접속 시도
'도커&쿠버네티스' 카테고리의 다른 글
쿠버네티스 용어 및 개념 정리 (0) | 2025.04.11 |
---|---|
쿠버네티스 볼륨 개념 정리 (0) | 2025.03.05 |
로키 리눅스 기반 쿠버네티스 설치 (0) | 2024.12.06 |
쿠버네티스 개념 및 용어 정리 (0) | 2024.11.21 |
로키 리눅스 기반 도커 컴포즈 파일 작성 및 실행하기 (0) | 2024.10.28 |