2021. 8. 23. 16:06ㆍkubernetes | docker
1. master 가상환경 시작 및 root계정 접속
2. swap 메모리 해제 및 hosts 파일 변경
우선 Ubuntu 20.04 LTS 에서 swap 으로 잡혀있는 메모리를 해제해줍니다. Memory Swap은 물리적인 메모리가 부족할 경우 디스크의 일부 공간을 메모리처럼 사용하는 개념인데, 디스크는 RAM 에 비해 훨씬 느리므로 잘못 사용할 경우 심각한 성능저하를 초래할 수 있습니다. 또한 Kubernetes 도 반드시 Swap 메모리를 해제하라고 가이드하고 있습니다.
sudo swapoff -a && sudo sed -i '/ swap / s/^/#/' /etc/fstab
3. Host파일에 master vm과 worker vm 들을 추가해줍니다.
$ sudo bash -c 'cat >> /etc/hosts << EOF
192.168.0.100 master
192.168.0.101 worker1
192.168.0.102 worker2
EOF
'
4. Docker 설치 및 데몬 설정 변경
설치가 완벽하게 되었다면
docker version을 입력했을 시 다음과 같이 출력 됩니다.
5.
Kubernetes 는 v1.20 이후 컨테이너 런타임으로서 Docker 를 사용중단한다고 합니다. 향후에 Migration 에 대한 작업을 별도로 진행할 예정입니다.
다음과 같이 터미널에 입력하여 줍니다.
$ sudo bash -c 'cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF'
당황하지 마세요. 쿠버네티스와 도커
저자: Jorge Castro, Duffie Cooley, Kat Cosgrove, Justin Garrison, Noah Kantrowitz, Bob Killen, Rey Lejano, Dan “POP” Papandrea, Jeffrey Sica, Davanum “Dims” Srinivas 번역: 박재화(삼성SDS), 손석호(한국전자통신연구원) 쿠버네
kubernetes.io
Kubernetes 공식 가이드에 따르면 컨테이너 런타임과 kubelet이 systemd를 cgroup 드라이버로 사용하도록 설정을 변경하면 시스템이 안정화된다고 합니다. 이를 위해 Docker Daemon 의 설정을 위와 같이 변경해줍니다.
6. Docker Deamon의 설정을 수정하였으므로 설정파일을 Reload 후 재시작 해줍니다.
$ sudo mkdir -p /etc/systemd/system/docker.service.d
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
7. kubernetes 쿠버네티스 설치
$ sudo apt update && sudo apt install -y apt-transport-https curl
$ 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 update
$ sudo apt install -y kubelet kubeadm kubectl
$ sudo apt-mark hold kubelet kubeadm kubectl
$ kubeadm version
다음고과 같이 쿠버네티스를 설치를 진행하자
만약, 네트워크가 끊겨서 설치가 진행이 되지 않는다면
sudo dhclient 명령어를 입력하여 주자.
마지막 kubeadm version을 입력해서 다음과 같이 나오면 설치가 완료 된 것이다.
위 설치법은 kubernetes.io에 들어가면 다 설명이 나와있다.
설치가 완료되면 VM을 종료
6. kubernetes cluster 구성하기
전 글에서 고정 IP를 설정하긴 했지만 설정 -> 네트워크 -> 톱니바퀴 -> IPv4 -> IPv4 방식 -> 수동
으로 들어가서 "주소"란이 비어져있는 경우가 있다.
그럼으로 이걸 직접 써주도록 하자.
주소, 네트마스크, 게이트웨이는 전 글에서 터미널에 직접 입력한 값으로 써주면 된다.
완료 후 다시 reboot 해준다.
7. 위 과정을 work01, work02에서도 진행해주면 됩니다.
8. master 가상머신에는 docker와 쿠버네티스를 설치해 주었지만
work01, workd02에는 아직 docker와 쿠버네티스가 설치가 되어 있지 않습니다.
그렇기 때문에 1 ~ 5과정을 통해 설치를 진행합니다.
9. work01과 work02의 도커 및 쿠버네티스가 설치가 완료되면
master 가상환경을 실행합니다.
이제 도커와 쿠버네티스를 실행해 보겠습니다.
$ sudo systemctl daemon-reload
$ sudo systemctl enable --now docker
$ sudo systemctl enable --now kubelet
실행하기 앞서서 도커와 쿠버네티스 실행권한을 넘겨 줍니다.
그리고 docker와 kubernetes를 실행합니다.
$ sudo kubeadm reset
$ sudo kubeadm init
kubeadm init이 성고하면 다음과 같은 메세지가 출력됩니다.
...
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.100.101:6443 --token wnzen5.6h353nzpf2rpwcta \
--discovery-token-ca-cert-hash sha256:6ec463b188f31919c1785d1e8cd022ffc5aa28709054a278e5a76bde7536b5d6
......
노란색으로 표시 된 내용을 master, work01, work02 가상환경에서 실행합니다.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
10.
installing a Pod network add-on을 설치해주자
master에서만 다운로드해주자
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
설치 전
설치 후
상태가 Ready로 바뀐 것을 확인할 수 있다.
11. 이제 work node를 master와 join 시켜보겠다.
위에서 노란색으로 표시한
kubeadm join 192.168.100.101:6443 --token wnzen5.6h353nzpf2rpwcta \
--discovery-token-ca-cert-hash sha256:6ec463b188f31919c1785d1e8cd022ffc5aa28709054a278e5a76bde7536b5d6
을 각각 work01, work02에 붙여 넣어서 실행시킨다.
최종적으로 master node로 가서 kubectl get nodes를 입력한뒤 다음과 같이 node01, node02가 추가 된것을 확인하면
클러스터링이 완성된 것을 볼 수 있다.
12.
kubectl get nodes -o wide 를 입력하여 각 노드에 깔려 있는 도커, 쿠버네티스의 버전을 확인 할 수 있다.
13.
kubectl get pod --all-namespaces를 통해 컨테이너의 정보를 확인할 수 있음
14.
terminal에서 kubectl get pod --all.... 명령어를 다 쓰다보면 오류가 날 수 있다.
그럼으로 kubectl cheat sheet를 통해서 bash에서 자동완성 기능을 다운로드 해보자.
https://kubernetes.io/docs/reference/kubectl/cheatsheet/
kubectl Cheat Sheet
This page contains a list of commonly used kubectl commands and flags. Kubectl autocomplete BASH source <(kubectl completion bash) # setup autocomplete in bash into the current shell, bash-completion package should be installed first. echo "source <(kubect
kubernetes.io
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
마치며)
일단 DevOps를 위해 클러스터링을 구성하여 보았다 다음 글에서는 pod를 생성하는 방법에 대해서 알아보려고한다.
도움글)
Virtualbox VM(Ubuntu 20.04 LTS)에 Kubernetes cluster 설치하기
목차
truelifer.medium.com
https://cla9.tistory.com/91?category=814452
2. 쿠버네티스 클러스터 구축 - Ubuntu 설치 및 환경 구성
서론 이전 포스팅을 통해 Ubuntu 이미지 다운로드 및 VirtualBox 기본 환경 설정을 구성하였습니다. 이번 포스팅에서는 K8S 클러스터 설치를 위한 기본 구성을 진행하겠습니다. 1. Ubuntu 설치 1. VM 기동
cla9.tistory.com
'kubernetes | docker' 카테고리의 다른 글
kubernetes - 외부 클라이언트에 서비스 노출 (0) | 2021.11.01 |
---|---|
kubernetes - 4 기본 명령어 정리 (0) | 2021.08.25 |
쿠버네티스 실습 - 문제1 (0) | 2021.08.24 |
kubernetes 실습환경 구축 - 2 ubuntu설치 및 환경세팅 (0) | 2021.08.23 |
kubernetes 실습환경 구축 - 1 가상환경 설치 및 ubuntu설치 (0) | 2021.08.20 |