* 본 게시물은 쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의와 강의 자료를 바탕으로 작성되었습니다.

- 기존 Container 배포와 다른 점은 Jenkins에 배포 명령을 내리면 K8s로 Pod 생성 명령을 내림
- K8s는 Pod 안의 Container Image 주소를 확인하고 docker hub에서 Image를 다운로드함
- 그 이미지로 containerd에게 Container를 생성 요청을 함

- Host-Only_Network의 192.168.56.30 는 내 PC에서만 접근할 수 있는 IPv4 주소를 만들어줌
- NAT를 통해 할당된 IP 주소는 외부 인터넷과 연결됨 -> 이것을 통해 패키지를 설치 할 수 있음
Kubernetes 설치하기
* 위에 언급된 환경 중 인프라 환경 구축에 대해 서술하며, 요구된 버전의 Rocky Linux가 설치되어 있다고 가정
kubeadm 설치하기 | Kubernetes
- 보편적인 kubadm으로 Cluster를 설치하는 방법

- 패키지 업데이트, 타임존(현재 지역 시간) 설정
- kubeadm 설치 전 사전작업 -> 방화벽 해제(실습이 원활하게 하기 위함), 스왑 비활성화
kubeadm은 K8s 클러스터를 빨리 구축하기 위해 다양한 기능을 제공함 - Container Runtime 설치
- 설치 전, 사전작업: iptables 세팅
- containerd 패키지 설치 (docker engine 설치: repo 설정, container.io만 설치)
설치할때, K8s와 호환이 되는 버전을 설치해야 하며, 릴리즈의 EOL을 고려해 설치해야 함


- 레드햇 계열 리눅스의 경우, systemd를 메인으로 프로세스를 실행시키는 시스템이라, K8s 설치 시 기본이 systemd가 됨
- 따라서, containerd의 기본은 cgroupfs이기 때문에 systemd로 변경해주어야 함
4. kubeadm 설치: repo 설정, SELinux(보안) 설정, kubeadm, kubelet, kubectl 패키지 설치

Master Node 설정

1. Cluster 초기화 (Pod Network 설정) -> CIDR를 지정해 네트워크 대역을 잡음
2. kubectl 사용 설정
Cluster 초기화 후, K8s에 접속할 수 있는 인증서가 생성됨
-> 인증서를 가져와 kubectl을 통해 kube-apiserver에 요청을 날릴 수 있게 함
3. CNI(Container Network Interface) Plugin 설치 (calico)
Container들 간 통신을 관리하는 K8s와 네트워크 간의 Interface
4. Master에 Pod를 생성할 수 있도록 설정
원래, kubeadm에서 생성되는 컴포넌트들이나 Dashboard는 Master에 올라가도 되도록 설정되어 있지만,
사용자가 만든 Pod는 올리지 못하게 되어있음 -> 이 설정을 해제하는 것
5. Metrics Server 설치
대시보드에서 CPU와 메모리 정보를 볼 수 있게 해줌
[미션 1]
[1-1] 내 PC 네트워크 확인

[1-2] 내 PC 자원 확인

[1-3] VirtualBox 설치 버전 확인

[1-4] Vagrant 설치 버전 확인

[1-5] 원격접속(MobaXterm) 설치 버전 확인
(Terminus로 대체함)
[2-1] VirtualBox VM 확인

[2-2] 내 VM에 적용된 NAT 확인

[2-3] 내 VM에 적용된 Host-Only Network 확인

[2-4] VirtualBox Host-Only CIDR 확인

[3-1] Rocky Linux 버전 확인

[3-2] Hostname 확인

[3-3], [3-4] Network 확인

[3-5] 자원(CPU, Memory) 확인


[4] Rocky Linux 기본 설정
> 타임존 설정 확인

[5] kubeadm 설치 전 사전작업
> 방화벽 해제 확인

> 스왑(Swap) 비활성화 확인

[6] 컨테이너 런타임 설치
[6-1] 컨테이너 런타임 설치 전 사전작업
> iptables 세팅

[6-2] 컨테이너 런타임 (containerd) 설치
[Kubernetes Docs] : https://kubernetes.io/ko/docs/setup/production-environment/container-runtimes/#containerd
[Containerd Release] : https://github.com/containerd/containerd/blob/main/RELEASES.md#kubernetes-support
[6-2-1] containerd 패키지 설치 (Option 2)
[Containerd Docs] : https://github.com/containerd/containerd/blob/main/docs/getting-started.md#option-2-from-apt-get-or-dnf
[6-2-1-1] docker engine (containerd.io)만 설치
> docker repo 설정 확인

> containerd 설치 확인

> 설치 가능한 버전의 container.io 리스트 확인

[6-3] 컨테이너 런타임 (CRI 활성화)
> CRI 활성화 설정 확인

> kubelet cgroup 확인 (configmap)

> kubelet cgroup 확인 (kubelet)

[7] kubeadam 설치
> repo 설정 확인

> SELinux 설정 확인


> kubelet, kubeadam, kubectl 패키지 설치
#버전 보기
[root@k8s-master ~]# kubeadm version
[root@k8s-master ~]# kubectl version
#상태 보기
[root@k8s-master ~]# systemctl status kubelet
#설정 파일 위치
[root@k8s-master ~]# cat /var/lib/kubelet/config.yaml
#로그 조회
journalctl -u kubelet | tail -10

> 설치 가능한 버전의 kubeadm 리스트 확인

[8] kubeadm으로 클러스터 생성
[8-1] 클러스터 초기화 (Pod Network 세팅)
> 클러스터 상태 확인
# master node 상태확인
[root@k8s-master ~]# kubectl get node
# pod network cidr 설정 확인
[root@k8s-master ~]# kubectl cluster-info dump | grep -m 1 cluster-cidr
# apiserver advertise address 적용 확인
[root@k8s-master ~]# kubectl cluster-info
# kubernetes component pod 확인
[root@k8s-master ~]# kubectl get pods -n kube-system
[8-2] kubectl 사용 설정
> 인증서 설정 확인

[8-3] CNI Plugin 설치 (calico)
> calico pod 설치 및 pod network cidr 적용 확인
# Calico Pod 상태 확인
[root@k8s-master ~]# kubectl get -n calico-system pod
[root@k8s-master ~]# kubectl get -n calico-apiserver pod
# Calico에 pod network cidr 적용 확인
[root@k8s-master ~]# kubectl get installations.operator.tigera.io default -o yaml | grep cidr
[8-4] Master에 pod를 생성할 수 있도록 설정
> Master Node에 Taint 해제 확인

[9] 쿠버네티스 편의 기능 설치
[9-1] kubectl 자동완성 기능
> kubectl 기능 설정 확인

[9-2] Dashboard 설치
> dashboard 설치 확인

[9-3] Metrics Server 설치
> metrics server 설치 확인

'Tech > Kubernetes(K8s)' 카테고리의 다른 글
잘못된 정보가 있다면 말씀해주세요!