대학교&대학원/연구

Docker 및 Kubernetes 설치

환승 2021. 4. 4. 21:50

swap 메모리 비활성화

swapoff -a

$ swapoff -a

혹은 /etc/fstab에서 swapfile 라인 주석 처리.

$ sed -i '2s/^/#/' /etc/fstab
$ sudo sed -i '/ swap / s/^/#/' /etc/fstab

/etc/fstab 파일의 2번째 라인에 #을 붙이라는 명령어다. 잘못할 시 매우 위험하니 /etc/fstab을 확인 후 하거나 직접 vim이나 vi로 수정하는 것을 더욱 권장한다. + 아래의 명령어를 사용해도 될 것이다.

 


Docker 설치

 

먼저 패키지 관리 도구를 업데이트한다.

$ sudo apt update

 

이전 버전의 도커를 삭제한다.

$ sudo apt remove docker docker-engine docker.io containerd runc

 

패키지 설치

$ sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

 

Docker 공식 GPG 키 추가

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

Stable한 리포지토리 추가
# nightly 혹은 test 리포지토리를 추가하고 싶다면 nightly 혹은 test를 stable 다음에 추가해주면 된다.

$ 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

 

도커 엔진 설치

 $ sudo apt-get update
 $ sudo apt-get install docker-ce docker-ce-cli containerd.io

 

더보기

리포지토리에 있는 버전들을 확인한 후에

 $ apt-cache madison docker-ce

 

원하는 버전의 문자열을 이용하여 설치한다.
# 예시: 5:18.09.1~3-0~ubuntu-xenial or 18.06.0~ce~3-0~ubuntu

 $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io

 

Docker 데몬의 드라이버 교체

$ sudo cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Docker Compose 설치

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

위 명령어를 통해 현재 제공되는 Docker Compose를 설치한다.

 

$ sudo chmod +x /usr/local/bin/docker-compose

퍼미션 제공

 


Kubernetes 설치

 

패키지 업데이트

$ sudo apt update
$ sudo apt upgrade

 

Kubelet, Kubeadm, Kubectl 패키지 설치

$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

$ cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

$ sudo apt-get update
$ sudo apt-get install -y kubelet kubeadm kubectl

 

설치 후 버전 확인

$ kubeadm version
$ kubelet --version
$ kubectl version

 

더보기

다음 명령어를 통해 쿠버네티스 패키지의 버전을 구한다.

$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'

 

얻은 버전으로 패키지를 설치한다.

$ sudo apt install -y kubeadm=<version>

kubelet, kubeadm, kubectl 세 패키지 모두 버전 형식은 동일하다.

 

클러스터 init

$ sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=<Node IP Address>

 

클러스터가 생성되면 아래 명령어들을 제공해준다. 이 명령어들을 시행하면 일반 유저도(현재 로그온된 유저) 클러스터를 사용할 수 있다.

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

 

kubeadm join~ 이하 명령어를 통해 다른 노드를 해당 클러스터에 join할 수 있다.

 

Pod 네트워크 애드온(Flannel) 설치

$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml