Docker 및 Kubernetes 설치
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