VM(Clone of ubuntu)

all

  1. sudo swapoff /swap.img sudo sed -i -e '/swap.img/d' /etc/fstab

    가상 메모리를 사용하지 않도록 한다.

  2. curl -fsSL <https://get.docker.com> -o get-docker.sh sudo sh get-docker.sh

    Docker container로 할 거니까 Docker 설치

  3. sudo systemctl restart docker sudo systemctl enable docker

  4. Docker를 CRI로 하기 위한 plugin(cri-dockerd)설치 (현재 Kubernetes는 공식적으로 Docker를 지원하지 않는다.)

    git clone <https://github.com/Mirantis/cri-dockerd.git>
    sudo wget <https://storage.googleapis.com/golang/getgo/installer_linux>
    sudo chmod +x ./installer_linux
    sudo ./installer_linux
    sudo source ~/.bash_profile
    cd cri-dockerd
    sudo mkdir bin
    sudo go build -o bin/cri-dockerd
    sudo mkdir -p /usr/local/bin
    sudo install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
    sudo cp -a packaging/systemd/* /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
    
  5. Docker Cgroup 변경

    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
    
  6. Kernel Forwarding , kube-proxy설정 (= pod의 통신, overlay network)

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
    br_netfilter
    EOF
    
  7. iptable이 오버레이 네트워크의 트래픽을 수용하도록 설정

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    EOF
    
  8. 뭔지 몰름

    sudo apt install -y apt-transport-https ca-certificates curl
    sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg <https://packages.cloud.google.com/apt/doc/apt-key.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 update
    sudo apt upgrade -y
    
  9. sudo apt install -y kubelet kubeadm kubectl

    꼭 master에서만 kubectl을 해야 되는 건 아님

Clustering