클라우드 + DevOps/Kubernetes (k8s)

Kubernetes 실습 :: Virtual Machine에서 Kubernetes 설치 (3) node 서버 생성

gamjadori 2024. 4. 9. 13:07
728x90

Kubernetes 실습 :: Virtual Machine에서 Kubernetes 설치 (3) node 서버 생성

<master와 node 생성>

1. master 서버 호스트 이름 지정

ubuntu@ubuntu:~$ sudo hostnamectl set-hostname k8s-master
ubuntu@ubuntu:~$ sudo vi /etc/hosts

<vi 편집 내용>

127.0.0.1       localhost
127.0.1.1       k8s-master

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.56.100  k8s-master
192.168.56.101  k8s-node1
192.168.56.102  k8s-node2
192.168.56.103  k8s-node3

 

2. node 1~3 생성

  • 버추얼 박스 복제 기능을 이용 (완전한 복제)
  • MAC 주소 정책: 모든 네트워크 어댑터의 새 MAC 주소 생성 선택

 

3. node IP 변경

A. node1 (192.168.56.101)

ubuntu@ubuntu:~$ sudo hostnamectl set-hostname k8s-node1
ubuntu@ubuntu:~$ sudo vi /etc/hosts

<ip a로 IP 변경 확인>

B. node2 (192.168.56.102)

ubuntu@ubuntu:~$ sudo hostnamectl set-hostname k8s-node2
ubuntu@ubuntu:~$ sudo vi /etc/hosts

<ip a로 IP 변경 확인>

C. node3 (192.168.56.103)

ubuntu@ubuntu:~$ sudo hostnamectl set-hostname k8s-node3
ubuntu@ubuntu:~$ sudo vi /etc/hosts

<ip a로 IP 변경 확인>

 

 

4. master - node(1~3) 간 ssh 연결

  • k8s-master 서버에서 k8s-node 1~3 ssh 연결
ubuntu@k8s-master:~$ ssh ubuntu@k8s-node1
ubuntu@k8s-master:~$ ssh ubuntu@k8s-node2
ubuntu@k8s-master:~$ ssh ubuntu@k8s-node3

  • k8s-node 1~3에서 k8s-master 연결
ubuntu@k8s-node1:~$ ssh ubuntu@k8s-master

 

5. 쿠버네티스 클러스터 구성

명령은 Kubernetes 클러스터를 구성하기 위해 필요한 이미지를 미리 내려받는 작업

ubuntu@k8s-master:~$ sudo kubeadm config images pull
ubuntu@k8s-master:~$ sudo swapoff -a
ubuntu@k8s-master:~$ sudo free
               total        used        free      shared  buff/cache   available
Mem:         4001000     1011296     1068328       14252     1921376     2742624
**Swap:              0           0           0
>> swap이 모두 0인지 확인해야 함**
ubuntu@k8s-master:~$ sudo systemctl stop kubelet
ubuntu@k8s-master:~$ sudo rm -rf /var/lib/etcd/*
ubuntu@k8s-master:~$ sudo rm -rf /etc/kubernstes/manifests/
ubuntu@k8s-master:~$ sudo kubeadm reset
ubuntu@k8s-master:~$ sudo kubeadm init --pod-network-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.56.100
>> Kubernetes 컨트롤 플레인 노드를 초기화하는 명령어

<클러스터 구성 확인>

토큰 저장: 
kubeadm join 192.168.56.100:6443 --token mxmi8f.e4q20ddh2xcuax81 \\
--discovery-token-ca-cert-hash sha256:df2b759375f568a72beaac4a5064f510fc145efb01a844769d4c2770c23ff824

 

6. ~/.kube/config 파일(Kubernetes 클러스터에 접속하기 위해 사용) 권한 변경

ubuntu@k8s-master:~$ ls -al 했을 때, .kube가 없기 때문에 생성해야 함
ubuntu@k8s-master:~$ mkdir .kube
ubuntu@k8s-master:~$ ls -al
total 40
drwxr-x--- 19 ubuntu ubuntu 4096  2월 15 14:50 .
drwxr-xr-x  3 root   root     20  2월 14 15:27 ..
-rw-------  1 ubuntu ubuntu 2438  2월 15 12:36 .bash_history
-rw-r--r--  1 ubuntu ubuntu  220  2월 14 15:27 .bash_logout
-rw-r--r--  1 ubuntu ubuntu 3771  2월 14 15:27 .bashrc
drwx------ 10 ubuntu ubuntu 4096  2월 14 15:57 .cache
drwx------ 11 ubuntu ubuntu 4096  2월 14 15:50 .config
drwxr-xr-x  2 ubuntu ubuntu    6  2월 14 15:47 Desktop
drwxr-xr-x  2 ubuntu ubuntu    6  2월 14 15:47 Documents
drwxr-xr-x  2 ubuntu ubuntu    6  2월 14 15:47 Downloads
drwx------  2 ubuntu ubuntu   44  2월 14 15:50 .gnupg
**drwxrwxr-x  2 ubuntu ubuntu    6  2월 15 14:50 .kube**
drwx------  3 ubuntu ubuntu   19  2월 14 15:47 .local

ubuntu@k8s-master:~$ sudo cp -i /etc/kubernetes/admin.conf ~/.kube/config
ubuntu@k8s-master:~$ sudo chown $(id -u):$(id -g) ~/.kube/config
ubuntu@k8s-master:~$ ls -al .kube/
total 12
drwxrwxr-x  2 ubuntu ubuntu   20  2월 15 14:52 .
drwxr-x--- 19 ubuntu ubuntu 4096  2월 15 14:50 ..
-rw-------  1 ubuntu ubuntu 5646  2월 15 14:52 config

 

7. kubernetes 자동 완성 설정

ubuntu@k8s-master:~$ source <(kubectl completion bash)
ubuntu@k8s-master:~$ echo "source <(kubectl completion bash)" >> ~/.bashrc
ubuntu@k8s-master:~$ complete -F   start_kubectl k
ubuntu@k8s-master:~$ vi .bashrc
ubuntu@k8s-master:~$ source .bashrc

 

8. 프로세스 확인

ubuntu@k8s-master:~$ sudo netstat -nltp | grep LISTEN

ubuntu@k8s-master:~$ kubectl get nodes

ubuntu@k8s-master:~$ kubectl get pods -A

>> master 서버 작업 마무리