# 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) 도 설정