쿠버네티스 교육/강의 내용 정리

220620_3_k8s_kubespray를 이용한 쿠버네티스 클러스터 구성

kimhope 2022. 6. 20. 16:41
728x90

암호 없이 ssh 로그인 설정


ssh 키 생성 및 복사

  • ssh 키 생성
vagrant@kube-master1:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/vagrant/.ssh/id_rsa.
Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:csgTKKowCqnYLPCzPPlZKMumIoe5RgJBXEMKep2uO9k vagrant@kube-master1
The key's randomart image is:
+---[RSA 2048]----+
|+.o+             |
|+....o           |
|.oo + .          |
|.+ o . o         |
|O   . = S        |
|X* . . +         |
|OoB+. .          |
|==B*Eo           |
|*=*+o            |
+----[SHA256]-----+

 

  • 각 노드들에 ssh 키 복사
vagrant@kube-master1:~$ ssh-copy-id vagrant@localhost
vagrant@kube-master1:~$ ssh-copy-id vagrant@kube-node1
vagrant@kube-master1:~$ ssh-copy-id vagrant@kube-node2
vagrant@kube-master1:~$ ssh-copy-id vagrant@kube-node3

 

  • 암호 없이 ssh 로그인 확인
vagrant@kube-master1:~$ ssh kube-node1
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-187-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Mon Jun 20 05:43:35 UTC 2022

  System load:  0.0               Processes:             99
  Usage of /:   3.4% of 38.71GB   Users logged in:       0
  Memory usage: 4%                IP address for enp0s3: 10.0.2.15
  Swap usage:   0%                IP address for enp0s8: 192.168.56.21


0 updates can be applied immediately.

New release '20.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.

 

==> 모든 노드에서 스냅샷 생성: 1

 


 

쿠버네티스 설치


 

python3, python3-pip, git 설치

vagrant@kube-master1:~$ sudo apt update
vagrant@kube-master1:~$ sudo apt install -y python3 python3-pip git

 

kubespray 배포

  • kubespray git repository 클론
vagrant@kube-master1:~$ git clone --single-branch --branch v2.14.2 https://github.com/kubernetes-sigs/kubespray.git
vagrant@kube-master1:~$ ls
kubespray

 

  • requirements.txt 파일에서 의존성 확인 및 설치
vagrant@kube-master1:~$ cd kubespray/
vagrant@kube-master1:~/kubespray$ sudo pip3 install -r requirements.txt

 

 

인벤토리 구성

  • 인벤토리 준비
vagrant@kube-master1:~/kubespray$ cp -rfp inventory/sample inventory/mycluster

 

  • 인벤토리 수정
vagrant@kube-master1:~/kubespray$ vi inventory/mycluster/inventory.ini

# :% d 명령 실행으로 파일 내용 모두 지우기

 

  • 수정 내용
[all]  
kube-master1	ansible_host=192.168.56.11 ip=192.168.56.11 ansible_connection=local
kube-node1      ansible_host=192.168.56.21 ip=192.168.56.21
kube-node2      ansible_host=192.168.56.22 ip=192.168.56.22
kube-node3      ansible_host=192.168.56.23 ip=192.168.56.23

[all:vars]  
ansible_python_interpreter=/usr/bin/python3

[kube-master]  
kube-master1 

[etcd]  
kube-master1  

[kube-node]  
kube-node1  
kube-node2  
kube-node3  

[calico-rr]  

[k8s-cluster:children]  
kube-master  
kube-node  
calico-rr

 

  • 파라미터 확인 및 변경 (false -> true 변경)
vagrant@kube-master1:~/kubespray$ vi inventory/mycluster/group_vars/k8s-cluster/addons.yml

metrics_server_enabled: true
ingress_nginx_enabled: true

 

앤서블 실행

 

  • 앤서블 통신 확인
  • 각 호스트 별로 앤서블 통신이 가능한지 확인하고 success가 뜨면 쿠버네티스 설치 준비 완료
vagrant@kube-master1:~/kubespray$ ansible all -i inventory/mycluster/inventory.ini -m ping

 

  • 플레이북 실행
  • 앤서블을 통한 쿠버네티스 설치 시작 (약 20분 소요)
ansible-playbook -i inventory/mycluster/inventory.ini cluster.yml --become

 

  • 설치 완료

 

 

  • 자격 증명 가져오기
vagrant@kube-master1:~/kubespray$ mkdir ~/.kube
vagrant@kube-master1:~/kubespray$ sudo cp ~root/.kube/config ~/.kube
vagrant@kube-master1:~/kubespray$ sudo chown vagrant:vagrant -R ~/.kube

 

kubectl 실행

  • kubectl 명령 자동 완성
vagrant@kube-master1:~/kubespray$ kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl
vagrant@kube-master1:~/kubespray$ exec bash

 

  • Kubernetes 클러스터 확인
vagrant@kube-master1:~$ kubectl get nodes
NAME           STATUS   ROLES    AGE   VERSION
kube-master1   Ready    master   27m   v1.18.10
kube-node1     Ready    <none>   26m   v1.18.10
kube-node2     Ready    <none>   26m   v1.18.10
kube-node3     Ready    <none>   27m   v1.18.10

vagrant@kube-master1:~$ kubectl cluster-info
Kubernetes master is running at https://192.168.56.11:6443

 

==> 모든 노드에서 스냅샷 생성: kubespray 

728x90