320x100
320x100

쿠버네티스 레포지터리 추가

vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://${gg_pkg}/yum-key.gpg https://${gg_pkg}/rpm-package-key.gpg
EOF

 

 

 

 

SELinux 설정

setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

 

 

 

 

브릿지 네트워크 설정

# 쿠버네티스 서비스 데몬 설정
vim /etc/sysctl.d/k8s.conf
# ipv4와 ipv6에 대해 iptables에서 브리지된 트래픽을 확인하도록 설정
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
# 리눅스 커널에 br_netfilter 모듈 적재 (클라이언트에서 파드가 위치한 노드에 통신하기 위한 브릿지 역할의 모듈)
# 리눅스 기본 모듈로, 쿠버네티스 설치 전에 커널에 로드 필요
modprobe br_netfilter

# 부팅 시 자동으로 모듈을 적재
echo "br_netfilter" > /etc/modules-load.d/br_netfilter.conf

 

 

 

 

 

 

 

host 명명

vim /etc/hosts
## 아래 내용 추가 (워커_노드_주소 명명할_이름)
192.168.1.xx node-1
## ...
## 중략

 

 

 

 

 

DNS 서버 주소 설정

vim /etc/resolv.conf
nameserver 1.1.1.1 #cloudflare DNS
nameserver 8.8.8.8 #Google DNS

 

 

 

 

 

도커 및 쿠버네티스 패키지 설치

# Extra Packages for Enterprise Linux 설치
yum install epel-release -y

# docker 설치 및 시스템 데몬 설정
yum install docker -y && systemctl enable --now docker

# kubectl = 쿠버네티스 명령줄 도구
# kubelet = 쿠버네티스 Node agent
# kubeadm = 구성형 쿠버네티스 (쿠버네티스 클러스터 자동 구성 솔루션)
# 쿠버네티스 관련 패키지 설치 및 쿠버네티스 에이전트 데몬 설정
yum install kubectl kubelet kubeadm -y
systemctl enable --now kubelet

 

 

 

 

쿠버네티스 마스터 노드 초기화

# 쿠버네티스 마스터 노드 초기화
# pod-network-cidr = 쿠버네티스가 컨테이너에 부여하는 네트워크 범위
# apiserver-advertise-address = 워커 노드가 접속하는 API 서버의 IP
kubeadm init --pod-network-cidr=172.16.0.0/16 --apiserver-advertise-address=192.168.1.10
# 쿠버네티스 마스터 노드 초기화 후 아래 부분 반드시 확인
# 워커 노드를 마스터 노드에 연결 시 token과 hash 값을 반드시 입력해야하기 때문
# 해당 토큰은 유효기간이 24시간임

Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.10:6443 --token fnbiji.5wob1hu12wdtnmyr \
    --discovery-token-ca-cert-hash sha256:701d4da5cbf67347595e0653b31a7f6625a130de72ad8881a108093afd06188b
    
    
# 토큰에 대해 유효시간 없이 사용하려면 마스터 노드 초가화 시 아래 옵션을 추가
kubeadm init --token 123456.1234567890123456 --token-ttl 0 /
## 중략

 

 

 

 

kubectl 명령어 사용을 위한 권한 부여

# 현재 사용자 및 그룹에 대해 쿠버네티스 이용권한 부여
# Root 계정이 아닌 다른 사용자 계정에서 kubectl 커맨드 명령어를 사용하여 클러스터를 제어하기 위함
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

: 기본적으로 쿠버네티스에서는 /etc/kubernetes/admin.conf 파일로 kubernetes 관리자 Role의 인증 및 인가 처리

: 위 과정을 통해 사용자 계정의 $HOME/.kube/config 디렉터리에 admin.conf 파일을 복사하여 쉘에 접속한 사용자에게 관리자 권한을 부여

 

 

 

 

 

calico 설치

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

: 가상머신 및 컨테이너를 위한 네트워킹, IP 관리, 접근 제어, 모니터링 등 다양한 네트워크 기능을 제공하는 오픈소스 프로젝트

 

 

 

 

 

워커 노드 설정

: 마스터 노드와 동일하게 패키지 설치

: 이후 마스터 노드(192.168.1.10)와 연결

kubeadm join 192.168.1.10:6443 --token fnbiji.5wob1hu12wdtnmyr \
    --discovery-token-ca-cert-hash sha256:701d4da5cbf67347595e0653b31a7f6625a130de72ad8881a108093afd06188b

 

 

 

 

 

마스터 노드에서 워커 노드 연결 확인

kubectl get nodes

 

 

 

 

파드 내 쿠버네티스 구성요소 확인

kubectl get pods --all-namespeaces

- 파드 (pod)

: 쿠버네티스가 만들 수 있는 가장 작은 오브젝트이며, 기본이 되는 배포 단위

: 하나 이상의 컨테이너를 포함하며, 컨테이너를 개별적으로 배포하기 보다 컨테이너들의 그룹인 파드를 배포

 

 

 

 

 

 

Reference

 

컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 - YES24

실무에 바로 적용할 수 있는 컨테이너 인프라 환경 기술!IT 자원을 효율적으로 빠르게 사용할 수 있는 방법으로 컨테이너 환경이 거론되었으나 그동안 관리가 어렵고 복잡해서 상용되기 어려웠

www.yes24.com

 

쿠버네티스(Kubernetes) 설치 및 환경 구성하기

How to configure a Kubernetes cluster

medium.com

300x250
728x90