ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클러스터 생성
    kubernetes 2023. 10. 25. 17:13

     

     

    ubuntu20.04.vmx
    0.00MB

     

     

    각 폴더 생성 후 붙여넣기

     

    사용 이미지 : ubuntu20.04.7z /user01/test1234

    master 192.168.2.10 [8.8.8.8/192.168.2.2]
    work1 192.168.2.11
    work2 192.168.2.12

    apt update
    apt net-tools
    apt install -y curl
    ssh 확인

    win10에서 ssh 접속 확인 superputty 

    nano /etc/hosts
    192.168.2.10 master
    192.168.2.11 work1
    192.168.2.12 work2

    https://www.puttygen.com/superputty#SuperPuTTY_download (설치 사이트)

     



    master


    work1


    work2

     



    winSCP 설치 


    각 서버 putty로 접속

     

     

    host를 이름으로 정해줘서 주소이름 으로 ping이 가능하다

     

    kubeadm

    https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

     

    kubeadm 설치하기

    이 페이지에서는 kubeadm 툴박스 설치 방법을 보여준다. 이 설치 프로세스를 수행한 후 kubeadm으로 클러스터를 만드는 방법에 대한 자세한 내용은 kubeadm으로 클러스터 생성하기 페이지를 참고한다.

    kubernetes.io

     

    모든 노드에서 실시

    swapoff -a

    sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

    Swap을 비활성화하고, 시스템이 부팅될 때 Swap이 자동으로 사용되지 않도록 설정합니다. 이 작업은 주로 일시적으로 Swap을 사용하지 않아야 하는 상황에서 수행됩니다. Swap을 완전히 비활성화할 때는 주의해서 사용해야 합니다

     

    # Using Docker Repository

    apt update

    apt install -y ca-certificates curl gnupg lsb-release
     

    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg (sudo apt update를 했는데 오류가 나와 재입력을 해줬다)


    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

     

     # containerd 설치

    sudo apt update 
     sudo apt install -y containerd.io
    systemctl status containerd

     

     

    sudo sed -i 's/^disabled_plugins \=/\#disabled_plugins \=/g' /etc/containerd/config.toml
    systemctl restart containerd
     
    ls /var/run/containerd/containerd.sock

     

     

    sudo mkdir /etc/apt/keyrings
    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=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

     

    sudo apt-get update
    sudo apt-get install -y kubelet kubeadm kubectl 
    sudo apt-mark hold kubelet kubeadm kubectl  -> (만약 실패를 한다면 ubuntu 버전이 22.04 이전 환경일수있다 22.04 환경이라면
    /etc/apt/keyrings 폴더 생성 후 update 부터 해보자)

    kubuadm 버전 확인하기 => kubeadm version

     

    kubernetes 1.22버전 부터 (필수 사항 아님)

    sudo mkdir /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 enable docker
    sudo systemctl daemon-reload
    sudo systemctl restart docker

     

    모든 노드에 다음 명령으로 넷필터 브릿지 설정

    sudo modprobe br_netfilter
    echo 1 > /proc/sys/net/ipv4/ip_forward
    echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables


    ( bridge/bridge-nf-call-iptables -> 파일이 없을수있다 아래의 명령을 입력하면 bridge가 생기고 초기화 명령어를 입력하면 된다

    sudo modprobe br_netfilter
    echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf
    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
    마스터 노드 초기화 @@@
    마스터 노드에서 init 작업을 시작한다. ---> kubeadm init

    kubectl cluster-info -> 자신의 포드와 ip주소 확인 명령어
    kubeadm join <master node ip:6443> --token <Token 값> --discovery-token-ca-cert-hash sha256:<Hash 값>​




    ### 유저 설정
    다음 명령을 실행하면 .kube/config 파일이 설정되면서 사용이 가능해진다. 이 실습은 `마스터 노드`에서만 진행한다.

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config


    ### 워커 노드 조인하기
    본인의 콘솔에 출력된 토큰과 hash 값을 사용해 조인을 수행해야 한다. 다음 명령은 `워커 노드`에서 실습을 진행한다.





    work1 조인





    work2 조인



    ### 파드 네트워크 배포
    `마스터 노드`에서 다음 명령을 실행하면 앞서 구성한 유저 설정을 통해 클러스터에 cilium을 설치한다.
    https://kubernetes.io/docs/tasks/administer-cluster/network-policy-provider/cilium-network-policy/

    curl -LO https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
    tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
    rm cilium-linux-amd64.tar.gz
    cilium install

    cilium status >> kubectl get nodes

     





    cilium status --wait


    각 노드가 Ready로 변경

     

     

     

     

    트러블 슈팅



    초기화 중 오류 port 중독 사용중


    제거를 해준다

     

    join 실패 시 master node에서 다음과 같은 조치가 가능

    1. apt -y remove kubeadm
    apt -y install kubeadm
    넷필터 재설치
     
    2. rm /etc/containerd/config.toml
    systemctl restart containerd
    kubeadm init
     
    3. rm -r $HOME/.kube
    kubeadm init
    mkdir -p $HOME/.kube

    'kubernetes' 카테고리의 다른 글

    클러스터 tomcat 배포  (0) 2023.10.27
    아파치, 워드프레스, mysql  (0) 2023.10.26
    Kubernetes (ingress)  (0) 2023.10.24
    kubernetes  (0) 2023.10.24
    kubernetes  (0) 2023.10.23
Designed by Tistory.