본문 바로가기

CLOUD/CUBE

쿠버네티스 설치(Kubernetes install)

반응형

쿠버네티스(Kubernetes)란 오픈소스 컨테이너 오케스트레이션 툴입니다.

 

쿠버네티스 외에도 아마존의 AWS, MS의 Azure등도 있습니다.

 

https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

 

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하

kubernetes.io

 

 

 

쿠버네티스 설치(Kubernetes install)

 

centos 7.6

master.example.com

node1.example.com

node2.example.com

 

Master Node는 최소 2 Core CPU, 2GB Memory가 필요합니다. 

 

https://kubernetes.io/ko/docs/setup/production-environment/tools/kubeadm/_print/

 

kubeadm으로 클러스터 구성하기

운영 수준의 컨테이너 오케스트레이션

kubernetes.io

 

최소 설치를 했을때 필요한 패키지들 입니다.

 

yum -y install vim vim-common
yum -y install net-tools

 

 

hostname 설정을 합니다.

 

hostnamectl set-hostname master.example.com

 

hosts에 master와 work node들을 추가해 줍니다.

 

vi /etc/hosts

192.168.56.106   master.example.com      master
192.168.56.107   node1.example.com       node1
192.168.56.108   node2.example.com       node2

 

 

도커 설치 합니다.

 

yum install -y yum-utils

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce docker-ce-cli containerd.io
 
systemctl start docker
systemctl enable docker 

 

 

Centos7은 기본적으로 방화벽이 올라가 있습니다.

해제 합니다.

 

systemctl disable firewalld
systemctl stop firewalld

systemctl status firewalld 

 

저는 그런경우가 없었지만 iptables가 꺼져 있어도 가끔 네트워크가 끊킨다고 하더군요.

있어도 연결에 지장 없으니 추가해 줍니다.

 

vi /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

 

 

selinux 체크

 

gentenforce

 

수정

 

sed -i s/^SELINUX=.*$/SELINUX=disabled/ /etc/selinux/config

 

쿠버네티스는 swap을 사용하지 않기 때문에 off 합니다.

 

vi /etc/fstab

# xxxxxx   swap  swap  defaults 0 0

 

재부팅 합니다.

 

reboot

 

swap 확인 합니다.

 

free

 

 

kubernets repository를 추가해 줍니다

 

vim /etc/yum.repos.d/kubernetes.repo

 

[kubernetes]
name=kubernetes repository
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

 

yum repolist

 

 

쿠버네티스 설치 합니다.

 

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

systemctl enable kubelet 

systemctl start kubelet

 

 

** 아래 내용을 추가해야 work node가 master node에 join 됩니다.


vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"]
}


systemctl daemon-reload
systemctl restart docker
systemctl restart kubelet

 

여기까지 작업 후 VMware나 VirtualBox를 사용하시면 복제를 하여 work node1,2를 생성합니다.

 

아래부터는 Master Node에만 설정됩니다.

 

아래 명령어 실행 후 나오는 token을 잘 저장해 둡니다.(work node에서 master node로 join 할 때 쓰입니다)

 

kubeadm init --pod-network-cidr=172.17.0.0/16 --apiserver-advertise-address=192.168.56.106

 

token 형식 입니다.

 

kubeadm join 192.168.56.106:6443 --token 4w05u2.m5lsbpqgrm9059ky \
        --discovery-token-ca-cert-hash sha256:**

 

환경변수 설정을 합니다

 

export KUBECONFIG=/etc/kubernetes/admin.conf

 

 

weave 설치합니다.

# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')

 

노드를 확인합니다. 아직 master node 밖에 없습니다.

 

kubectl get nodes

 

 

이제 node1,2에서 join 합니다.

 

systemctl restart docker

systemctl restart kubelet

 

kubeadm join 192.168.56.106:6443 --token 4w05u2.m5lsbpqgrm9059ky \
        --discovery-token-ca-cert-hash sha256:**

 

완료 후 다시 master node로 와서 확인합니다.

 

kubectl get nodes

 

 

 

 

반응형