반응형
용량: 25GB
Core: 2Core
Ram: 2GB
ssh, curl, vim, tree 등의 패키지 설치
sudo apt-get update
sudo apt-get install -y openssh-server curl vim tree
hostname 및 hosts 파일 변경
vi /etc/hostname
master
vi /etc/hosts
10.100.0.105 master.example.com
10.100.0.106 work1.example.com
10.100.0.107 work2.example.com
docker 설치 및 확인
sudo apt install -y docker.io
sudo docker version
쿠버네티스 설치
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/ 1. 쿠버네티스 클러스터를 구성하기전 요구사항 확인 - CPU 2 Core 이상, Memory 2GB 이상 - 모든 노드에 대한 호스트 이름, MAC 주소 및 UUID 2. kubelet 의 적절한 동작을 위해서 swap을 사용하지 않는다. # swapon && cat /etc/fstab # swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab 3. SELinux 와 방화벽을 해제한다. # apt install -y selinux-utils # setenforce 0 # ufw disable # systemctl stop firewalld # systemctl disable firewalld 4. Linux 노드의 iptables가 bridged traffic을 정확하게 확인하고 제어 할 수 있도록 br_netfilter 모듈을 load하고 관련된 네트워크 파라미터를 설정한다. 4-1) br_netfilter 모듈 load # lsmod | grep br_netfilter # modprobe br_netfilter # lsmod | grep br_netfilter br_netfilter 24576 0 bridge 155648 1 br_netfilter 4-2) 모듈과 네트워크 파라미터가 영구적으로 적재되도록 파일에 편집 # cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf > br_netfilter > EOF # cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf > net.bridge.bridge-nf-call-ip6tables = 1 > net.bridge.bridge-nf-call-iptables = 1 > EOF # sysctl --system 4-3) 네트워크 파라미터 정보 변경 사항 확인 # sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-iptables = 1 # sysctl net.bridge.bridge-nf-call-ip6tables net.bridge.bridge-nf-call-ip6tables = 1 5. kubeadm, kubelet, kubectl 설치 5-1) apt 패키지 업데이트 및 쿠버네티스 설치하는데 필요한 패키지 다운로드 # apt-get update # apt-get install -y apt-transport-https ca-certificates 5-2) kubernetes 패키지 저장소의 공개 서명 키 다운로드 (참고, Ubuntu 22.04 이전 버전에서는 /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 5-3) 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 5-4) 패키지 인덱스 업데이트 후 kubelet, kubeadm, kubectl 설치 # apt-get update # apt-get install -y kubelet kubeadm kubectl # apt-mark hold kubelet kubeadm kubectl 6. 컨테이너 런타임과 kubelet에 의해서 제어할 수 있도록 구성 # cat <<EOF | sudo tee /etc/docker/daemon.json { "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOF # systemctl enable docker # systemctl daemon-reload # systemctl restart docker -------------------------------------------------------------------- 7. (마스터 노드에서만 실행) 클러스터 생성 # kubeadmin init 7-1. (마스터 노드에서만 실행) # mkdir -p $HOME/.kube # cp -i /etc/kubernetes/admin.conf $HOME/.kube/config # chown $(id -u):$(id -g) $HOME/.kube/config 7-2. (마스터 노드에서만 실행) 쿠버네티스 클러스터에 조인하기 위해 명령어 구문 저장 # vim token.sh kubeadm join 192.168.137.101:6443 --token k73e80.otf7kbdnbxvc9qvk \ --discovery-token-ca-cert-hash sha256:76507fe082ede68174b6e324f3c72dd0bfd70b78a186c7b46efa26fbf893fd74 7-3. (마스터 노드에서만 실행) Pod가 서로 통신 할 수 있도록 CNI(Container Network Interface) 기반 Pod 네트워크 추가 기능 구성 kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml ----------------------------------------------------------------------- 8. (워커 노드에서 실행) 쿠버네티스 클러스터에 work노드로 등록 - 마스터 노드에서 저장한 token.sh을 work노드에서 실행 # sh token.sh ----------------------------------------------------------------------- 9. kubectl 자동명령어 실행 스크립트 # echo "source <(kubectl completion bash)" >>~/.bashrc # source <(kubectl completion bash)
감사합니다.
반응형
'쿠버네티스' 카테고리의 다른 글
Kubernetes 네임스페이스 별 자원할당 (0) | 2024.06.11 |
---|---|
쿠버네티스 Metrics 설치 (1) | 2024.06.10 |
쿠버네티스 클러스터에 Master, Worker 노드 추가 (0) | 2024.04.18 |
MetalLB 사용해서 외부로 노출 시키기 (0) | 2024.04.15 |
쿠버네티스 harbor에서 이미지 받아 오기 (insecure-registry) (0) | 2024.04.08 |