ubuntu에 k3s 마스터 노드 설치 방법
- OS 환경 : ubuntu 22.04
k3s란?
- 간단하고 쉽게 kubernetes를 운영하기 위해 컨테이너 관련 기술을 주로 개발하는 Rancher Labs에서 만든 kubernetes의 또다른 버전
k3s 특징 - kubernetes(k8s)와의 차이
- 경량화
- k3s는 k8s에 비해 외부 클라우드 서비스와의 연동 기능을 최소한도로 줄이고 고가용성(HA) 배포를 위해 기본으로 사용하던 etcd의존성을 없애고 sqlite를 기본값으로 사용
- Docker와 같은 의존성을 모두 삭제하고 containerd와 같은 가벼운 대체제 사용
- 기존 k8s에서 지원하는 과거 버전의 API 또한 지원하지 않음 - 설치가 간단
- 쉘 스크립트 하나로 대부분의 배포판에서 설치 가능
- 설치 후 자동으로 systemd 서비스 또한 마들기 때문에 사용자가 신경써야 될 것들이 거의 없음
Ubuntu에 k3s 설치
# k3s 설치
- k3s는 systemd 또는 openrc 기반 시스템에 서비스로 설치하는 편리한 방법인 설치 스크립트 제공
curl -sfL https://get.k3s.io | sh -
- k3s 서비스는 노드 재부팅 후 또는 프로세스가 충돌하거나 종료된 경우 자동으로 다시 시작되도록 구성
- kubectl, crictl, ctr, k3s-killall.sh, k3s-uninstall.sh를 포함한 추가 유틸리티가 설치됨
- kubeconfig 파일은 /etc/rancher/k3s/k3s.yaml에 의해 작성되고 kubectl은 자동으로 이걸 사용
# k3s.service에 권한 부여
chmod 644 /etc/rancher/k3s/k3s.yaml
# k3s.service 상태 확인
systemctl status k3s.service
k3s 마스터 노드 세팅
- 마스터 노드에 다음과 같은 포트가 열려있어야함
프로토콜 / 포트 범위 / 목적
- TCP / 6443 / API 서버
- TCP / 2379 - 2380 / etcd 서버 client API
- TCP / 10250 / kubelet API
- TCP / 10251 / kube-scheduler
- TCP / 30000 - 32767 / nodePort services
# 마스터 통신을 위한 설정
mkdir ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown -R $(id -u):$(id -g) ~/.kube
echo "export KUBECONFIG=~/.kube/config" >> ~/.bashrc
source ~/.bashrc
- 만약에 마스터 통신을 위한 설정을 하지 않으면 kubectl get nodes 명령을 했을 때,
Unable to connect to the server: x509: certificate signed by unknown authority 에러가 발생하게 된다.
- 마스터 통신 설정 후에 kubectl get nodes를 하면 정상적으로 확인이 됨
ubuntu에 k3s 마스터 노드 설치 완료! ROLES에 master라고 표시되고 상태(STATUS)가 Ready인 것을 확인할 수 있음
# 설치 확인
kubectl cluster-info
k3s Node Token값 / Master id 확인
- k3s 클러스터에 워커 노드를 추가하기 위해 마스터 노드에서 NODE_TOKEN값과 마스터 노드의 IP인 MASTER_IP 값을 확인
# 마스터 노드 토큰 확인
NODE_TOKEN=$(sudo cat /var/lib/rancher/k3s/server/node-token)
echo $NODE_TOKEN
# 마스터 노드 IP 확인
MASTER_IP=$(kubectl get node [master node의 NAME] -ojsonpath="{.status.addresses[0].address}")
echo $MASTER_IP
6443 포트가 안열려 있어서 에러가 뜨는 경우 ubuntu에 6443 포트 open
- ubuntu에서 기본적으로 제공하는 방화벽은 UFW(Ubuntu Firewall) 이다.
- 기본적으로 ufw는 비활성화(inactive)가 되어 있음
- ufw를 활성화 해준다.
ufw enable
# 6443 포트를 오픈해준다.
sudo ufw allow 6443/tcp
# 다시 ufw 상태를 확인해보면 active상태임을 확인할 수 있음
sudo ufw status verbose
'컨테이너 > Kubernetes' 카테고리의 다른 글
Kubernetes Terminated 상태의 pod 삭제 / Pods stuck in Terminating status / 503 Service Unavailable (0) | 2022.11.23 |
---|---|
Kubernetes(k3s) Pod / Service / Namespace 관련 기본 명령어 학습 (0) | 2022.11.02 |
k3s에 'hello world' HTTP 배포(Traefik Ingress Controller 사용) (0) | 2022.10.31 |
k3s 워커노드 설치하고 k3s 대시보드 확인하기 (0) | 2022.10.31 |
k3s dashboard 설치 및 원격 허용 설정(Node Port방식) (0) | 2022.10.31 |