본문 바로가기
IT Info/Container

Kubernetes 설치 구성 방법 [공식가이드 준수] - 1부 -

by Myste.Lee 2022. 3. 16.
728x90

아주 오래전부터 쿠버네티스 환경을 만들어 경험을 해보고 싶은 마음이 아주 굴뚝같았다

그래서 이전 포스팅들... 도커, 포테이너를 만지작했던 이유도 바로 쿠버네티스 때문이다

 

이번엔 쿠버네티스 환경을 아주 허접하게 구성해보려 한다

요즘 많은 업무로 인해 이것저것 많이 못해보고 있지만 짬짬이 시간을 내서 테스트할 수 있어서 좋았다!

+작업 사이사이 쿠버네티스 공식 가이드 링크를 넣어놓고 시간 날 때 다시 한 번 복기하는 시간을 가져야겠다

 

#테스트 환경정보 

Control-Plane VM 2vCPU / 2GvMEM / 20GvDisk / CentOS7.9 -> 컨트롤플레인 서버의 최소 사양이다...

Node#1        VM 1vCPU / 1GvMEM / 20GvDisk / CentOS7.9

Node#2        VM 1vCPU / 1GvMEM / 20GvDisk / CentOS7.9

Node#3        VM 1vCPU / 1GvMEM / 20GvDisk / CentOS7.9

#테스트해보면서 우분투도 살짝 해보았지만 역시 손에 잘 안 익어 CentOS로 선회하였다!

 

#VM 선행작업

hosts, resolv 항목이야 익숙하지만 firewall, swap 중지는 쿠버네티스 문서에 기재된 사항이며 추후 아래 설정이 안 되어 있을 경우 메세지를 출력한다

#######################################
Config Change
#######################################
#Hosts Configure
cat <<EOF >> /etc/hosts
192.168.1.40 MasterNode
192.168.1.41 WorkerNode01
192.168.1.42 WorkerNode02
192.168.1.43 WorkerNode03
EOF

#Resolv Configure
echo nameserver 168.126.63.1 >> /etc/resolv.conf

#Swap Off
swapoff -a
vi /etc/fstab   #swap 주석처리

#Firewall Stop/Disable
systemctl stop firewalld
systemctl disable firewalld

 

 

쿠버네티스 설치에 필요한 Container Runtime 설치 및 설정을 진행한다 [Docker Engine, Containerd]

[https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/]

*CRI-O 설치 안되는데 여러 해외 포럼을 찾아봐도 해결책을 못 찾았다... 아시는 분... 댓글 좀 ㅠㅠ

 

#Docker Engine/Containerd 레파지토리(.repo) 등록 및 설치 [https://docs.docker.com/engine/install/centos/]

#######################################
Docker Install - Repository
#######################################
sudo yum install -y yum-utils
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

#######################################
Docker Install - Engine
#######################################
sudo yum install -y docker-ce docker-ce-cli containerd.io

#######################################
Docker Service Enable/Start
#######################################
sudo systemctl enable --now docker.service
sudo systemctl start docker

 

 

#Containerd 설정 변경 [https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/]

#######################################
containerd config
#######################################
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.ipv4.ip_forward                 = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sudo sysctl --system

sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sudo systemctl restart containerd

 

 

#Containerd 설정 변경(systemd cgroup사용) [https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/]

#######################################
containerd config [used systemd cgroup]
#######################################
vi /etc/containerd/config.toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
  ...
  [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
    SystemdCgroup = true    <<<<<-----!Change!

sudo systemctl restart containerd

 

 

#DockerEngine 설정 변경(systemd cgroup사용) [https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/]

#######################################
docker engine config [used systemd cgroup]
#######################################
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

 

 

#cgroup v2 설치 [https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/]

*원 문서에는 yum install 이지만 centos에 이미 설치가 되어있으므로 패스해도 되지만 나는 reinstall 하면서 찝찝한 마음을 달랬다(기존에 어떤 Arguments로 설치되었는지 모름!ㅎㅎ) **재부팅 필수!

#######################################
cgroup v2 install [Reboot Required]
#######################################
yum reinstall -y grubby && \
  sudo grubby \
  --update-kernel=ALL \
  --args="systemd.unified_cgroup_hierarchy=1"

 

#iptable 브릿지 된 트래픽 보도록 설정 [https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/install-kubeadm/]

#######################################
Letting iptables see bridged traffic 
#######################################
*CheckList -> lsmod | grep br_netfilter
*LoadModule ->sudo modprobe br_netfilter
#######################################
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

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

###여기까지가 쿠버네티스를 설치하기 위한 사전 준비 단계이다###

 

2부에서 계속...

728x90

댓글