안녕하세요.
오늘은 VMware에 설치된 Rocky_Linux에 Docker와 Kubernetes 설치하기 2편으로 Kubernetes를 설치해보겠습니다.
* Rocky_Linux는 RedHat 계열이기에 apt가 아닌 dnf를 이용하여 패키지 설치를 진행하였습니다.
1. Swap 비활성화 명령어
- Kubernetes는 swap이 활성화된 상태에서 제대로 동작하지 않습니다.
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
2. 방화벽 설정 (필요한 포트 열기)
마스터 노드에서는 다음 포트를 열어야 합니다.
sudo firewall-cmd --permanent --add-port=6443/tcp # API Server
sudo firewall-cmd --permanent --add-port=2379-2380/tcp # etcd
sudo firewall-cmd --permanent --add-port=10250/tcp # Kubelet
sudo firewall-cmd --permanent --add-port=10251-10252/tcp # Scheduler & Controller Manager
sudo firewall-cmd --reload
워커 노드에서는 다음 포트를 열어야 합니다.
sudo firewall-cmd --permanent --add-port=10250/tcp # Kubelet
sudo firewall-cmd --permanent --add-port=30000-32767/tcp # NodePort 서비스
sudo firewall-cmd --reload
3. SELinux 비활성화
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
4. IP Forwarding 활성화
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
5. Docker 컨테이너 런타임 설정
- Kubernetes는 containerd를 기본 런타임으로 사용하므로 설정이 필요합니다.
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd
6. Kubernetes 패키지 설치
- Kubernetes 저장소 추가
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.28/rpm/repodata/repomd.xml.key
EOF
7. kubeadm, kubelet, kubectl 설치
sudo dnf install -y kubelet kubeadm kubectl
sudo systemctl enable --now kubelet
8. 마스터 노드 설정
- 클러스터 초기화
마스터 노드에서 다음 명령어를 실행합니다.
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
출력되는 kubeadm join이후 명령어를 복사해 둡니다. 나중에 워커 노드를 추가할 때 사용됩니다.
9. kubectl 설정
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
이제 kubectl get nodes 명령어를 실행하면 마스터 노드가 NotReady 상태로 나올 것입니다.
10. CNI 네트워크 플러그인 설치
Kubernetes 클러스터는 네트워크 플러그인이 필요합니다. Calico를 설치합니다.
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
1~3분정도 기다린 후, 다시 노드 상태를 확인합니다.
kubectl get nodes
모든 노드가 Ready 상태라면 성공적으로 클러스터가 구축된 것입니다.
11. 워커 노드 추가
각 워커 노드에서 마스터 노드에서 제공한 kubeadm join 명령어를 실행하면 됩니다.
sudo kubeadm join 192.168.1.100:6443 --token abcdef.1234567890abcdef \
--discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
이제 마스터 노드에서 kubectl get nodes 를 실행하면 워커 노드가 추가된 것을 확인할 수 있습니다.
12. 클러스터 검증
- 모든 노드 확인
kubectl get nodes
13. 파드 실행 테스트
kubectl run nginx --image=nginx --port=80
kubectl get pods
잘 실행된다면 Kubernetes 클러스터 구성이 완료된 것입니다.
여기까지 Kubernetes 설치 및 클러스터 구성을 진행해보았습니다.
감사합니다.
1편 바로가기
https://lcoding.tistory.com/200
Rocky_Linux에 Docker와 Kubernetes 설치하기_1
안녕하세요. 오늘은 VMware에 설치된 Rocky_Linux에 Docker와 Kubernetes 설치하기 1편으로 Docker를 설치해보겠습니다. Rocky_Linux는 RedHat 계열이기에 apt가 아닌 dnf를 이용하여 패키지 설치를 진행하였습
lcoding.tistory.com
'Server' 카테고리의 다른 글
아파치 웹서버와 프록시서버 그리고 WAS서버의 통신은 어떻게 동작할까? (0) | 2025.02.26 |
---|---|
Rocky_Linux에서 Dockerfile을 사용하여 컨테이너 이미지 생성하기 (0) | 2025.02.03 |
Rocky_Linux에 Docker와 Kubernetes 설치하기_1 (0) | 2025.01.31 |
[ Linux ] 리눅스 서버에서 port를 체크해보자 (0) | 2025.01.22 |
WAS_쓰레드풀[간단 정리] (1) | 2023.11.09 |