Windows의 Hyper-V를 사용하여 Ubuntu 운영체제를 설치하고, Docker와 Kubeadm을 사용한 Kubernetes의 설치를 다룹니다.
개요
kubeadm을 사용한 설치 방법입니다. kubernetes의 주요 구성요소들을 Pods로 배포하고 실행합니다.
- Windows
- Hyper-V
- VMs(ControlPlane, Node01, Node02)
- Ubuntu
- Kubeadm
- Kubernetes
- Docker
- Kubernetes
- Kubeadm
- Ubuntu
- VMs(ControlPlane, Node01, Node02)
- Hyper-V
Hyper-V
이미지 다운로드
Option 2 - Manual server installation > Download Ubuntu Server 20.04.2 LTS
가상 스위치 생성
(외부 유형 스위치를 사용하실 분은 이 단계를 생략하고 외부 스위치를 사용하시면 됩니다.)
내부 스위치 생성
가상 스위치 관리자 > 유형 : 내부 > 가상 스위치 만들기 > 이름 : Kubernetes
IP설정
설정 > 네트워크 및 인터넷 > 어댑터 옵션 변경 > vEthernet (Kubernetes) > 속성 > 인터넷 프로토콜 버전 4(TCP/IPv4) > 속성 > 다음 IP 주소 사용
IP 주소 : 172.23.10.1
서브넷 마스크 : 255.255.240.0
NAT 설정
Windows PowerShell(관리자)
New-NetNAT -Name "Kubernetes" -InternalIPInterfaceAddressPrefix 172.23.0.0/20
가상 컴퓨터 생성
새로 만들기 > 가상 컴퓨터
이름 및 위치 지정
이름 : controlplane(node01, node02)
세대 지정
2세대
메모리 할당
시작 메모리 : 2048MB(최소)
네트워킹 구성
연결 : Kubernetes
가상 하드 디스크 연결
크기 : 20GB
설치 옵션
부팅 가능 이미지 파일에서 운영 체제 설치 > 이미지 파일 : ubuntu-20.04.2-live-server-amd64.iso
요약
가상 컴퓨터 설정
controlplane(node01, node02) > 설정
보안
보안 부팅 사용 : 체크 해제
프로세서
가상 프로세서 수 : 2(최소)
가상 컴퓨터 시작
controlplane(node01, node02) > 연결 > 시작
Ubuntu
설치
(세팅이 필요한 부분만 설명하겠습니다. 나머지는 기본값으로 넘어가시면 됩니다.)
Network connections
eth0 > Edit IPv4 > IPv4 Method : Manual
Subnet : 172.23.0.0/20
Address : 172.23.10.xxx (controlplane : 100, node01 : 101, node02 : 102)
Gateway : 172.23.10.1
Name server : 8.8.8.8
Profile setup
Your server's name : controlplane(node01, node02)
Pick a username : [username]
Choose a password : [userpassword]
Confirm your password : [userpassword]
SSH setup
Install OpenSSH server : 체크
Install complete!
Reboot Now
Failed
Enter로 넘어가시면 됩니다.
사전설정
(여기부터는 설정 완료된 IP로 SSH 접속하여 작업합니다. 가상 컴퓨터가 시작되어 있기만 하면, 가상 컴퓨터 연결 창은 닫으셔도 됩니다.)
br_netfilter 모듈 활성화
sudo modprobe br_netfilter
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
swap 비활성화
sudo swapoff -a
sudo vi /etc/fstab
# 재시작시 마운트되는 swap 부분 주석처리
# /swap.img none swap sw 0 0
docker 설치
sudo apt-get update && sudo apt-get install -y \
apt-transport-https ca-certificates curl software-properties-common gnupg2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key --keyring /etc/apt/trusted.gpg.d/docker.gpg add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update && sudo apt-get install -y \
containerd.io=1.2.13-2 \
docker-ce=5:19.03.11~3-0~ubuntu-$(lsb_release -cs) \
docker-ce-cli=5:19.03.11~3-0~ubuntu-$(lsb_release -cs)
cat <<EOF | sudo tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo systemctl daemon-reload
sudo systemctl restart docker
Kubernetes
kubeadm, kubelet, kubectl 설치
controlplane
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
node01, node02
(kubectl을 제외하고 설치합니다.)
sudo apt-get update && sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update
sudo apt-get install -y kubelet kubeadm
sudo apt-mark hold kubelet kubeadm
kubeadm 설정
(sudo kubeadm init 이후 출력을 복사하여 붙여넣으시면 됩니다.)
controlplane
sudo kubeadm init
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
node01, node02
sudo kubeadm join 172.23.10.100:6443 --token 8kryi1.z20ua921miymj7tv \
--discovery-token-ca-cert-hash sha256:e11e3ee0402e2dfeb90045a53b7804f83ff424783e71e4dade4ddca43ebdcebe
network plugin 설치
controlplane
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
kubectl 설정
controlplane
echo 'source <(kubectl completion bash)' >>~/.bashrc
source ~/.bashrc
설치확인
docker --version
kubeadm version
kubectl get nodes
kubectl get pod -n kube-system
테스트
kubectl run nginx --image=nginx
kubectl expose pod nginx --type=NodePort --name=nginx-service --port=80
kubectl get service
테스트 삭제
kubectl delete service nginx-service
kubectl delete pod nginx
'Cloud > Kubernetes' 카테고리의 다른 글
[v1.21] Kubeadm + Containerd + Calico + NFS-Provisioner + Ingress-Nginx 설치 (0) | 2021.05.22 |
---|---|
[kubeadm] kubernetes에 metrics-server 설치하기 (0) | 2021.02.15 |
[Docker Desktop] 도커 데스크탑 쿠버네티스 인그레스 컨트롤러 설치 (0) | 2021.01.08 |
[K3S] 쿠버네티스 마스터 노드 부하 줄이기 (0) | 2021.01.04 |
[k3s] 쿠버네티스 busybox 최신 이미지 사용시 dns 조회 불가 (0) | 2020.12.15 |