Kubernetes 클러스터 설정 (모든 노드에서 실행)
# 스왑 메모리 비활성화 (Kubernetes는 스왑을 비활성화해야 제대로 작동)
swapoff -a
# br_netfilter 모듈을 로드하여 네트워크 브리지가 iptables를 통해 트래픽을 필터링할 수 있도록 설정
#/etc/modules-load.d/k8s.conf 파일 생성
sudo cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
# 커널 파라미터를 설정하여 브리지 네트워크 트래픽이 iptables를 통해 필터링되도록 설정
#/etc/sysctl.d/k8s.conf 파일 생성
sudo cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# br_netfilter 모듈을 즉시 로드
sudo modprobe br_netfilter
# IP 포워딩 및 네트워크 브리지를 위한 iptables 필터링 설정 추가
sudo tee /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# 커널 파라미터 즉시 적용
sudo sysctl --system
# IP 포워딩을 즉시 활성화
sudo sysctl -w net.ipv4.ip_forward=1
# IP 포워딩 설정을 다시 추가하여 지속적으로 적용되도록 설정
sudo tee -a /etc/sysctl.d/k8s.conf <<EOF
net.ipv4.ip_forward = 1
EOF
# socat 패키지 설치 (Kubernetes 클러스터 통신 및 네트워크 유틸리티로 필요)
sudo apt-get install socat
# 시스템 재시작 없이 sysctl 파라미터 반영
sudo sysctl --system
# 패키지 목록 업데이트
sudo apt-get update
# 필수 패키지 설치 (Kubernetes 및 Docker를 설치하기 위해 필요한 HTTPS 및 패키지 관리 도구)
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
# Docker의 공개키 다운로드 및 apt에서 검증을 위해 키 설치
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Docker 저장소 추가
echo "deb [arch=amd64 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 > /dev/null
# Docker 저장소 업데이트를 위한 패키지 목록 갱신
sudo apt-get update
# containerd (Docker의 컨테이너 런타임) 설치
sudo apt-get install -y containerd
# containerd 구성 파일 디렉토리 생성
sudo mkdir -p /etc/containerd
# containerd의 기본 설정파일을 생성
sudo containerd config default | sudo tee /etc/containerd/config.toml
# cgroup driver(runc) 사용하도록 설정 변경 (Kubernetes와의 호환성 위해 Systemd Cgroup 사용)
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
# containerd 재시작하여 변경 사항 적용
sudo systemctl restart containerd
# 패키지 목록 업데이트
sudo apt-get update
# 필수 패키지 설치
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg
# Kubernetes 패키지의 공개키를 다운로드하여 설치
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
# Kubernetes 저장소를 apt 소스에 추가
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# Kubernetes 패키지 설치를 위한 패키지 목록 갱신
sudo apt-get update
# Kubernetes 주요 패키지(kubelet, kubeadm, kubectl) 설치
sudo apt-get install -y kubelet kubeadm kubectl
# 설치된 Kubernetes 패키지의 버전을 고정 (업데이트 방지)
sudo apt-mark hold kubelet kubeadm kubectl
# 워커 노드라면 마스터 노드에서 생성된 Join 명령어를 사용하여 클러스터에 연결
# 예시:
# kubeadm join [마스터 노드 IP]:6443 --token [토큰] \
# --discovery-token-ca-cert-hash sha256:[해시]
kubeadm join 10.0.1.90:6443 --token 8xpgjk.rocblsxdatiiqosn \
--discovery-token-ca-cert-hash sha256:fe3857cf73a942b5f775a7234069d200e3b5f72be65ef3ec5243022734033b8b
Kubernetes 클러스터 초기화 (마스터 노드에서 실행)
# --pod-network-cidr은 Pod 네트워크를 위한 CIDR 블록을 지정 (Calico와 같은 네트워크 플러그인 사용 시 필요)
sudo kubeadm init --pod-network-cidr=192.168.0.0/16
# 마스터 노드가 초기화되면 워커 노드가 클러스터에 합류할 수 있도록
# `kubeadm init` 명령어 실행 후 생성된 join 명령을 사용
# 아래 명령어는 워커 노드에서 실행하여 클러스터에 합류
kubeadm join 10.0.1.90:6443 --token 8xpgjk.rocblsxdatiiqosn \
--discovery-token-ca-cert-hash sha256:fe3857cf73a942b5f775a7234069d200e3b5f72be65ef3ec5243022734033b8b
# 관리 도구인 kubectl을 사용할 수 있도록 설정
# /etc/kubernetes/admin.conf 파일은 마스터 노드에 대한 인증 정보가 담긴 설정 파일
# 이를 사용자의 .kube/config로 복사하여 kubectl이 마스터 노드와 통신할 수 있게 함
sudo mkdir -p $HOME/.kube # .kube 디렉토리 생성
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # admin.conf 파일을 .kube/config로 복사
sudo chown $(id -u):$(id -g) $HOME/.kube/config # config 파일의 소유권을 현재 사용자로 변경
# 네트워크 플러그인 Calico 설치
# 클러스터의 Pod 네트워크가 통신할 수 있도록 Calico를 설치 (Calico는 Kubernetes에서 널리 사용되는 네트워크 플러그인)
curl https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml -O # Calico 설치 파일 다운로드
kubectl apply -f calico.yaml # Calico를 Kubernetes 클러스터에 적용
'k8s' 카테고리의 다른 글
k8s수동설치 ansible로 배포 (0) | 2024.10.24 |
---|---|
쿠버네티스 도입 배경 (2) | 2023.12.21 |