1. 쿠버네티스 클러스터를 직접 구성하는 도구
    1.  kubeadm
      • 쿠버네티스에서 공식 제공하는 클러스터 생성/관리 도구
    2. kubespray
      • 쿠버네티스 클러스터를 배포하는 오픈소스 프로젝트
      • 멀티마스터 구현에 적합하도록 구성되어 있음.
      • 다양한 형식으로 쿠버네티스 클러스터 구성 가능
      • 온프레미스 상용 서비스 클러스터 운영시 유용함.
      • 다양한 CNI 제공
      1. CNI이란? (container network interface)
        • container 간의 통신을 지원하는 소프트웨어. VxLAN, Pod Network 라고도 부름.
          • 쿠버네티스 사용을 위해서 바니드시 Container Network Interface설치 필요.
          • 다양한 종류의 플러그인이 존재함 (플라넬, 칼리코, 위브넷 등)
        • 쿠버네티스 클러스터 구성
          • control plane 
            1. 오케스트라에서 지휘자의 역할을 하는 마스터 장비.
            2. 워커노드들의 상태를 관리하고 제어
            3. single master
            4. multi master (3,5개의 마스터 노드들)
          • worker node
            1. 도커 플랫폼을 통해 컨테이너를 동작하며 실제 서비스를 제공
    1. 쿠버네티스 가상머신 구성
      1. 쿠버네티스 가상머신 스펙
      2. 가상머신 목록
        • 클러스터 마스터 노드
          • k8s-master : 10.100.0.104 로 포워딩
        • 워커노드
          • k8s-node1 : 10.100.0.101로 포워딩
          • k8s-node2 : 10.100.0.102로 포워딩
    2. 도커 설치
      1. 도커 설치 명령어
        sudp apt-get update
        sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
        curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
        sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
        sudo apt-get update
        sudo apt-get install -y docker-ce docker-ce-cli containerd.io


      2. 도커 활성화 및 설치확인
        systemctl enable docker
        systemctl start docker
        docker version

    3. 쿠버네티스 설치
      1. 참고한 링크
      2. 설치 명령어 ( 아직 완벽히 설치 못했음)
        master node에서 kubectl get nodes를 입력하면 node1,2가 노출되지 않음
        • master / 워커노드 1,2 모두 입력
          sudo apt update
          sudo sed -i "/#\$nrconf{restart} = 'i';/s/.*/\$nrconf{restart} = 'a';/" /etc/needrestart/needrestart.conf
          sudo apt -y upgrade
          --
          sudo swapoff -a && sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
          --
          sudo ufw disable
          --
          sudo tee /etc/modules-load.d/containerd.conf <<EOF
          overlay
          br_netfilter
          EOF
          --
          sudo modprobe overlay
          sudo modprobe br_netfilter
          --
          sudo tee /etc/sysctl.d/kubernetes.conf <<EOF
          net.bridge.bridge-nf-call-ip6tables = 1
          net.bridge.bridge-nf-call-iptables = 1
          net.ipv4.ip_forward = 1
          EOF
          --
          sudo sysctl --system
          --
          sudo apt-get update
          --
          sudo apt-get 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 > /dev/null
          --
          sudo apt-get update
          sudo apt-get install -y docker-ce docker-ce-cli containerd.io
          --
          sudo docker version
          --
          sudo systemctl enable docker
          sudo systemctl start docker
          --
          sudo systemctl enable containerd
          sudo systemctl start containerd
          --
          sudo mkdir -p /etc/docker
          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
          --
          sudo systemctl daemon-reload
          sudo systemctl restart docker
          --
          VER=$(curl -s https://api.github.com/repos/Mirantis/cri-dockerd/releases/latest|grep tag_name | cut -d '"' -f 4|sed 's/v//g')
          echo $VER
          wget https://github.com/Mirantis/cri-dockerd/releases/download/v${VER}/cri-dockerd-${VER}.amd64.tgz
          tar xvf cri-dockerd-${VER}.amd64.tgz
          sudo mv cri-dockerd/cri-dockerd /usr/local/bin/
          --
          cri-dockerd --version
          --
          wget https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.service
          wget https://raw.githubusercontent.com/Mirantis/cri-dockerd/master/packaging/systemd/cri-docker.socket
          sudo mv cri-docker.socket cri-docker.service /etc/systemd/system/
          sudo sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
          --
          sudo systemctl daemon-reload
          sudo systemctl enable cri-docker.service
          sudo systemctl enable --now cri-docker.socket
          --
          sudo systemctl restart docker && sudo systemctl restart cri-docker
          sudo systemctl status cri-docker.socket --no-pager
          sudo docker info | grep Cgroup
          --
          sudo apt-get update
          sudo apt-get install -y apt-transport-https ca-certificates curl
          --
          curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg
          --
          echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
          --
          curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
          --
          sudo apt-get update
          sudo apt-get install -y kubelet kubeadm kubectl
          sudo apt-mark hold kubelet kubeadm kubectl
          
          --
        • master 에서만 실행
          sudo kubeadm init --cri-socket unix:///var/run/cri-dockerd.sock
          
          아래와 비슷한 메시지가 표시되면 메모장에 복사하기
          kubeadm join 10.100.0.104:6443 --token e7krl6.k5bze1t2xgv8i9vc \
          --discovery-token-ca-cert-hash sha256:188c3a58f5a518fc030c625472dae7fe5ed48de3550b4563d751f7be631f5aac
          --
          mkdir -p $HOME/.kube
          sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
          sudo chown $(id -u):$(id -g) $HOME/.kube/config
          --
          kubectl version
          --
          kubectl get nodes
          --
          kubectl get pods -n kube-system
          --

        • node 1,2 에서 실행
          위에서 복사한 내용 \
                  --cri-socket unix:///var/run/cri-dockerd.sock
        • master에서 실행
          kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
          --
          kubectl get nodes
          kubectl get pods -n kube-system

설치는 되었는데, 연결이 되지 않고있습니다.

워커노드에서는 연결되었다고 뜨는데 왜 연결이 안된걸까요?? 흠...

혹시 해결하신분 댓글 부탁드립니다.(며칠을 끙끙앓았는데 해결못함)