# 5.개발 환경 만들기

# 1. 실습에 앞서

# ⏹Kubernetes 설치(Desktop + VM => Master, node)

  • 한 physical Server PC 위에 OS가 설치되어 있음
  • VirtualBox를 먼저 설치하고 master용으로 사용할 VM을 만들 것
  • (Host OS – Memory 12G, CPU 4Core, Disk 500G라고 하면)
  • 각 VM은 Memory 4G, CPU 2Core, 150G로 할당

각자 가용한 자원에 맞게 수치를 조절하면 되지만 Kubernetes master의 권장 CPU는 2 core 이상이기 때문에 1 core이면 실행 안 됨

  1. 환경 Setting 한 Node 생성 2개 생성
  2. master 구동 → 초기화 → 다음 Node와 연결
  3. Kubernetes 클러스터 구성 끝

# ⏹필수 플러그인 설치

  • Networking 관련
  • Dashboard

# ⏹네트워크 구성 살펴보기

  • 현재 192.168.0.1인 공유기가 있고 인터넷과 연결되어 있음
  • 공유기에서 Physical Server192.168.0.20로 IP를 할당

VM은 가상 네트워크가 있는데 Physical port를 통해 공유기에서 직접 IP를 할당 받을 수 있게 설정하기 때문에 Physical Port와 동일한 level로 IP가 할당 됨

따라서 내 PC에서 각각의 masterNode로 연결을 시도하면 해당 트래픽은 공유기를 거쳐 다시 PC의 브릿지 연결을 통해 VM의 IP로 연결이 됨

# 2. 내 PC에서 실습하기 - 1

# ⏹ 1 Desktop + VM 환경 구축

WindowsMac이 설치되어 있는 Desktop가 1대 있고, 그 위에 VirtualBox와 같은 도구를 이용해서 VM을 만드는 경우

# 1-1) Install Virtualbox

# 1-1-1) Virtualbox 다운로드 및 설치

# 1-1-2) CentOS Download

centOS (opens new window) 다운로드

# 1-1-3) 원격접속 툴 MobaXterm 설치

MobaXterm (opens new window) 다운로드

편한 원격접속 툴이 있다면 아무거나 사용하면 됨!

아래 예제는 MobaXterm를 설치하고 필요한 Host 등록 예제

// [GET MOBAXTERM NOW] 버튼 클릭
// Free 버전 [Download now]
// Installer editon 다운로드 및 실행

- Sessions > SSH > Remote host : 192.168.0.30 > [Bookmark settings] Session name : master-192.168.0.30 > [ok]
- Sessions > SSH > Remote host : 192.168.0.31 > [Bookmark settings] Session name : node1-192.168.0.31 > [ok]
- Sessions > SSH > Remote host : 192.168.0.32 > [Bookmark settings] Session name : node2-192.168.0.32 > [ok]

# ⏹2-1) Setting VM

# 2-1-1) VM 스펙 설정

메모리 및 디스크는 각자 상황에 맞게 참고해서 VM 설정

1. [VM 생성 1단계] 머신 > 새로 만들기 클릭  
2. [VM 생성 1단계] 이름 : k8s-master, 종류: Linux, 버전: Other Linux(32-bit)  
3. [VM 생성 2단계] 메모리 : 4096 MB  
4. [VM 생성 3단계] 하드디스크 : 지금 새 가상 하드 디스크 만들기 (VDI:VirtualBox 디크스 이미지, 동적할당, 150GB)  
5. [VM 생성 후 시스템 설정] 프로세서 개수 : CPU 26. [VM 생성 후 저장소 설정] 컨트롤러:IDE 하위에 있는 광학드라이브 클릭 > CentOS 이미지 선택 후 확인  
7. [VM 생성 후 네트워크 설정] VM 선택 후 설정 버튼 클릭 > 네트워크 > 어댑터 1> 다음에 연결됨 [어댑터에 브리지] 선택  
8. 시작

# ⏹2-2) Install CentOS

# 2-2-1) CentOS 설치

4번 단계에서 8.8.8.8은 Google DNS!
원하는 DNS 쓰면 됨.

1. Test this media & install CentOS 7
2. Language : 한국어 
3. Disk 설정 [시스템 > 설치 대상]
   - [기타 저장소 옵션 > 파티션 설정] 파티션을 설정합니다. [체크][완료]
   - 새로운 CentOS 설치 > 여기를 클릭하여 자동으로 생성합니다. [클릭]
   - /home [클릭] 후 용량 5.12 GiB로 변경 [설정 업데이트 클릭]
   - / [클릭]140 GiB 변경 후 [설정 업데이트 클릭]
   - [완료], [변경 사항 적용]
4. 네트워크 설정 [시스템 > 네트워크 및 호스트명 설정]
   - 호스트 이름: k8s-master [적용]
   - 이더넷 [], [설정], [IPv4 설정] 탭
   - 방식: 수동으로 선택, 
   - [Add] -> 주소: 192.168.0.30, 넷마스크 : 255.255.255.0, 게이트웨이: 192.168.0.1, DNS 서버 : 8.8.8.8 [저장][완료]
5. 설치시작
6. [설정 > 사용자 설정] ROOT 암호 설정 
7. 설치 완료 후 [재부팅]

# 3. 내 PC에서 실습하기 - 2

# ⏹3-1) Pre-Setting

# 3-1-1) SE Linux 설정

Ubuntu (opens new window)Debian (opens new window)등 다른 OS를 설치하면 참고하자.

KubernetesPod Network에 필요한 호스트 파일 시스템에 액세스가 가능하도록 하기 위해서 필요한 설정

아래 설정으로 SELinux을 permissive로 변경

setenforce 0

리부팅시 다시 원복되기 때문에 아래 명령을 통해서 영구적으로 변경하자

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

아래 명령어를 실행해서 Current mode:permissive 내용 확인

sestatus

# 3-1-2) 방화벽 해제

firewalld 비활성화

systemctl stop firewalld && systemctl disable firewalld

NetworkManager 비활성화

systemctl stop NetworkManager && systemctl disable NetworkManager

# 3-1-3) Swap 비활성화

Swap 사용에 관련한 자세한 내용 (opens new window)을 참고하자

swapoff -a && sed -i '/ swap / s/^/#/' /etc/fstab

# 3-1-4) Iptables 커널 옵션 활성화

RHEL이나 CentOS7 사용 시 iptables가 무시돼서 트래픽이 잘못 라우팅되는 문제가 발생한다고 하여 아래 설정이 추가

cat <<EOF >  /etc/sysctl.d/k8s.conf

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

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

EOF

sysctl --system

# 3-1-5) 쿠버네티스 YUM Repository 설정

YUM에 대한 자세한 내용 (opens new window)도 확인하자.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

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

EOF

# 3-1-6) Centos Update

yum update

# 3-1-7) Hosts 등록

계획된 master와 node의 호스트 이름과 IP를 모두 등록하기

안하면 kubeadm init시 Host이름으로 IP를 찾을 수 없다고 에러 발생

cat << EOF >> /etc/hosts

192.168.0.30 k8s-master

192.168.0.31 k8s-node1

192.168.0.32 k8s-node2

EOF

# ⏹3-2) Install

# 3-2-1) Docker 설치

도커 설치 전에 필요한 패키지 설치

yum install -y yum-utils device-mapper-persistent-data lvm2 

도커 설치를 위한 저장소 를 설정

yum-config-manager --add-repo 

https://download.docker.com/linux/centos/docker-ce.repo

도커 패키지 설치

`yum update && yum install docker-ce-18.06.2.ce`

`mkdir /etc/docker`

`cat > /etc/docker/daemon.json <<EOF`


''' json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
'''

`EOF`

`mkdir -p /etc/systemd/system/docker.service.d`

# 3-2-2) Kubernetes 설치

yum install -y --disableexcludes=kubernetes kubeadm-1.15.5-0.x86_64 kubectl-1.15.5-0.x86_64 kubelet-1.15.5-0.x86_64

# ⏹4-1) Clone VM

# 4-1-1) 시스템 Shutdown

여기까지 만든 이미지를 복사해 놓기 위해서 Master를 잠시 Shutdown

shutdown now

# 4-1-2) VM 복사

VirtualBox UI를 통해 Master 선택 후 마우스 우클릭을 해서 [복제] 버튼 클릭

1. 이름 : k8s-node1, MAC 주소정책 : 모든 네트워크 어댑터의 새 MAC 주소 생성

2. 복제방식 : 완전한 복제

node2도 반복

# ⏹4-2) Config Node

# 4-2-1) Network 변경하기

VirtualBox UI에서 k8s-node1을 시작 시키면 뜨는 Console 창을 통해 아래 명령어 입력

Host의 Ip Address를 변경하기 위해 아래 명령어로 설정을 열고

vi /etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR= 부분을 해당 Node의 IP (192.168.0.31)로 변경

DEVICE=
"etho0"
ONBOOT="yes"
IPADDR="192.168.0.31"

그리고 아래 명령어로 네트워크 재시작

systemctl restart network

# 4-2-2) Host Name 변경

해당 Node의 Host 이름을 변경

hostnamectl set-hostname k8s-node1

이와 같은 방식으로 k8s-node2(192.168.0.32) 도 설정

Last Updated: 6/18/2023, 2:13:15 PM