# 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이면 실행 안 됨
- 환경 Setting 한 Node 생성 2개 생성
- master 구동 → 초기화 → 다음 Node와 연결
- Kubernetes 클러스터 구성 끝
# ⏹필수 플러그인 설치
- Networking 관련
- Dashboard
# ⏹네트워크 구성 살펴보기
- 현재
192.168.0.1
인 공유기가 있고 인터넷과 연결되어 있음 - 공유기에서
Physical Server
는192.168.0.20
로 IP를 할당
VM은 가상 네트워크가 있는데 Physical port를 통해 공유기에서 직접 IP를 할당 받을 수 있게 설정하기 때문에 Physical Port와 동일한 level로 IP가 할당 됨
따라서 내 PC에서 각각의 master
나 Node
로 연결을 시도하면 해당 트래픽은 공유기를 거쳐 다시 PC의 브릿지 연결을 통해 VM의 IP로 연결이 됨
# 2. 내 PC에서 실습하기 - 1
# ⏹ 1 Desktop + VM 환경 구축
Windows
나 Mac
이 설치되어 있는 Desktop가 1대
있고,
그 위에 VirtualBox
와 같은 도구를 이용해서 VM을 만드는 경우
# 1-1) Install Virtualbox
# 1-1-1) Virtualbox 다운로드 및 설치
- Windows 환경) Windows hosts VirtualBox (opens new window) 다운로드 후 설치
- Mac 환경) Mac VirtualBox (opens new window) 다운로드 후 설치
# 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 2개
6. [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를 설치하면 참고하자.
Kubernetes
가 Pod 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)
도 설정