[kubernetes] k3s 소개 (번역)

leehs·2023년 3월 22일
0

kubernetes

목록 보기
6/7
post-thumbnail

원문: https://docs.k3s.io/

K3S

"Lightweight Kubernetes. Easy to install, half the memory, all in a binary of less than 100 MB."
경량 쿠버네티스. 설치가 쉽고 메모리가 절반이며 모두 100MB 미만의 바이너리입니다.

다음 환경에서 사용하면 좋습니다.

  • Edge
  • IoT
  • CI
  • Development
  • ARM
  • Embedding K8s

K3s란?

K3s는 다음과 같은 향상된 기능을 갖춘 완전히 호환되는 쿠버네티스 배포판입니다:

  • 단일 바이너리로 패키지화
  • 기본 스토리지 메커니즘으로 sqlite3를 기반으로 하는 경량 스토리지 백엔드
    • (etcd3, MySQL, Postgres도 사용 가능)
  • 복잡한 TLS 및 옵션을 처리하는 간단한 런처에 포함
  • 경량 환경을 위한 합리적인 기본값으로 기본적으로 안전함
  • 다음과 같이 간단하지만 강력한 'batteries-included' 기능 추가
    • local storage provider
    • service load balancer
    • Helm controller
    • Traefik ingress controller
  • 모든 쿠버네티스 컨트롤 플레인 구성 요소의 작동은 단일 바이너리 및 프로세스로 캡슐화
  • 이를 통해 K3는 인증서 배포와 같은 복잡한 클러스터 작업을 자동화하고 관리
  • 외부 종속성 최소화(최신 커널과 cgroup 마운트만 필요)

K3는 다음과 같은 필수 종속성을 패키지로 제공합니다:

  • Container Runtime: Containerd
  • CNI: Flannel
  • DNS: CoreDNS
  • Ingress: Traefik
  • Service LB: Klipper-lb
  • 임베디드 네트워크 정책 컨트롤러
  • 임베디드 로컬 경로 프로비저너
  • 호스트 유틸리티(iptables, socat 등)

아키텍쳐

노드 구성

k3s 의 서버 노드는 k3s 서버 명령을 실행하는 호스트로 정의되며, 컨트롤 플레인 및 데이터스토어 구성 요소는 K3s에 의해 관리됩니다.
k3s 에이전트 노드는 데이터스토어 또는 컨트롤 플레인 구성 요소 없이 k3s 에이전트 명령을 실행하는 호스트로 정의됩니다.
서버와 에이전트 모두 kubelet, 컨테이너 런타임 및 CNI를 실행합니다.

서버 노드

  • k3s server configuration: Link

최소 사양

  • CPU: 10% (Xeon Platinum 8124M CPU, 3.00GHz)
  • Sotrage: 50 IOPS, 250KiB/sec
  • RAM: 896M

에이전트 노드

  • k3s agent configuration: Link

최소 사양

  • CPU: 5% (Xeon Platinum 8124M CPU, 3.00GHz)
  • RAM: 256M

내장 DB의 단일 서버 구조

다음 다이어그램은 SQLite 데이터베이스가 내장된 단일 노드 K3s 서버가 있는 클러스터의 예를 보여줍니다.

이 구성에서 각 에이전트 노드는 동일한 서버 노드에 등록됩니다. K3s 사용자는 서버 노드에서 K3s API를 호출하여 쿠버네티스 리소스를 조작할 수 있습니다.

외부 DB의 다중 HA 서버 구조

단일 서버 클러스터는 다양한 사용 사례를 충족할 수 있지만, Kubernetes 컨트롤 플레인의 가동 시간이 중요한 환경의 경우, HA 구성으로 K3를 실행할 수 있습니다.

HA K3s 클러스터는 다음과 같이 구성됩니다:

  • Kubernetes API를 제공하고 다른 컨트롤 플레인 서비스를 실행할 2개 이상의 서버 노드
  • 외부 데이터스토어(단일 서버 설정에 사용되는 임베디드 SQLite 데이터스토어와 반대)

에이전트 노드 등록 절차

에이전트 노드는 k3s 에이전트 프로세스에 의해 시작된 웹소켓 연결로 등록되며, 에이전트 프로세스의 일부로 실행되는 클라이언트 측 로드 밸런서에 의해 연결이 유지됩니다.

에이전트는 노드 클러스터 비밀과 노드에 대해 무작위로 생성된 비밀번호를 사용하여 서버에 등록하며, 비밀번호는 '/etc/rancher/node/password'에 저장됩니다. 서버는 개별 노드의 비밀번호를 쿠버네티스 시크릿으로 저장하며, 이후 모든 시도는 동일한 비밀번호를 사용해야 합니다. 노드 비밀번호 시크릿은 .node-password.k3s 템플릿을 사용하는 이름으로 kube-시스템 네임스페이스에 저장됩니다.

참고: K3s v1.20.2 이전 서버는 '/var/lib/rancher/k3s/server/cred/node-passwd' 에 패스워드를 저장했습니다.

에이전트의 /etc/rancher/node 디렉터리가 제거된 경우 에이전트에 대한 비밀번호 파일을 다시 만들거나 서버에서 해당 항목을 제거해야 합니다.

고유한 노드 ID는 --with-node-id 플래그를 사용하여 K3 서버 또는 에이전트를 시작하여 호스트 이름에 추가할 수 있습니다.

0개의 댓글