BEOM_IT

RKE2/ Rancher 환경별 설치 방법 본문

DevOps/Rancher

RKE2/ Rancher 환경별 설치 방법

beomzh 2025. 2. 19. 17:44
728x90
반응형

참고 사이트


0. 전제조건

하드웨어

리눅스/윈도우

  • RAM: 최소 4GB (최소 8GB 권장)
  • CPU: 최소 2개 (최소 4CPU 권장)

VM 사이즈 가이드

  • 제어 평면 + etcd 노드의 CPU 및 RAM이 제한되는 경우, 표준 워크로드 조건에서 결합할 수 있는 에이전트 노드의 수에 제한이 있을 수 있습니다.서버 CPU서버 RAM에이전트 수
    2 4GB 0-225
    4 8GB 226-450
    8 16GB 451-1300
    16+ 32GB 1300+
  • 노드 조인에 급증이 있기 때문에 CPU가 공간을 확보할 수 있도록 에이전트 노드를 50개 이하의 배치로 결합하는 것이 좋습니다. 255개 이상의 노드를 원하는 경우 기본 cluster-cidr 수정하는 것을 잊지 마세요!
  • 이 데이터는 특정 테스트 조건 하에서 검색되었습니다. 환경과 작업량에 따라 달라질 수 있습니다. 아래 단계는 이것을 검색하기 위해 실행된 테스트의 개요를 제공합니다. 그것은 v1.27.4+rke2r1에서 마지막으로 수행되었다. 모든 기계는 표준 20 GiB gp3 볼륨으로 AWS에서 프로비저닝되었습니다.
    1. 프로메테우스 데이터 소스를 사용하여 grafana의 자원을 모니터링하십시오.
    2. 지속적인 클러스터 활동을 시뮬레이션하는 방식으로 워크로드를 배포합니다.
      • 지속적으로 위아래로 확장되는 기본 작업량
      • 루프에서 삭제되고 다시 생성되는 워크로드
      • CRD를 포함한 여러 다른 리소스를 포함하는 지속적인 작업량.
    3. 에이전트 노드를 한 번에 30-50개씩 일괄적으로 가입하세요.

디스크

  • RKE2 성능은 데이터베이스의 성능에 따라 달라지며, RKE2는 etcd를 내장하여 실행하고 데이터 디렉토리를 디스크에 저장하기 때문에 최적의 성능을 보장하기 위해 가능하면 SSD를 사용하는 것이 좋습니다.

네트워킹

  • 노드에 NetworkManager가 설치되고 활성화된 경우, CNI 관리 인터페이스를 무시하도록 구성되어 있는지 확인하십시오. 노드에 Wicked가 설치되고 활성화된 경우, 전달 sysctl 구성이 활성화되었는지 확인하십시오.
  • RKE2 서버는 클러스터의 다른 노드에서 액세스할 수 있도록 포트 6443과 9345가 필요합니다.
  • 플란넬 VXLAN을 사용할 때 모든 노드는 UDP 포트 8472를 통해 다른 노드에 도달할 수 있어야 합니다.
  • 메트릭 서버를 활용하려면 각 노드에서 포트 10250을 열어야 합니다.
  • 중요: 노드의 VXLAN 포트는 누구나 액세스할 수 있도록 클러스터 네트워크를 개방하기 때문에 세계에 노출되어서는 안 됩니다. 포트 8472에 대한 액세스를 비활성화하는 방화벽/보안 그룹 뒤에서 노드를 실행하십시오.

인바운드 네트워크 규칙

  • RKE2의 인바운드 네트워크 규칙Port프로토콜출처목적지설명
    6443 TCP RKE2 에이전트 노드 RKE2 서버 노드 쿠버네티스 API
    9345 TCP RKE2 에이전트 노드 RKE2 서버 노드 RKE2 감독자 API
    10250 TCP 모든 RKE2 노드 모든 RKE2 노드 쿠벨렛 메트릭
    2379 TCP RKE2 서버 노드 RKE2 서버 노드 Etcd 클라이언트 포트
    2380 TCP RKE2 서버 노드 RKE2 서버 노드 Etcd 피어 포트
    2381 TCP RKE2 서버 노드 RKE2 서버 노드 Etcd 메트릭 포트
    30000-32767 TCP 모든 RKE2 노드 모든 RKE2 노드 노드포트 포트 범위
  • CNI 특정 인바운드 네트워크 규칙
    • CanalPort프로토콜출처목적지설명
      8472 UDP 모든 RKE2 노드 모든 RKE2 노드 VXLAN이 있는 Canal CNI
      9099 TCP 모든 RKE2 노드 모든 RKE2 노드 운하 CNI 상태 점검
      51820 UDP 모든 RKE2 노드 모든 RKE2 노드 와이어가드 IPv4가 있는 Canal CNI
      51821 UDP 모든 RKE2 노드 모든 RKE2 노드 와이어가드 IPv6/이중 스택이 있는 Canal CNI
    • ciliumPort프로토콜출처목적지설명
      8/0 ICMP 모든 RKE2 노드 모든 RKE2 노드 실륨 CNI 건강 검진
      4240 TCP 모든 RKE2 노드 모든 RKE2 노드 실륨 CNI 건강 검진
      8472 UDP 모든 RKE2 노드 모든 RKE2 노드 VXLAN이 있는 실륨 CNI
      51871 UDP 모든 RKE2 노드 모든 RKE2 노드 와이어가드가 있는 실륨 CNI
    • CalicoPort프로토콜출처목적지설명
      179 TCP 모든 RKE2 노드 모든 RKE2 노드 BGP가 있는 Calico CNI
      4789 UDP 모든 RKE2 노드 모든 RKE2 노드 VXLAN이 있는 Calico CNI
      5473 TCP 모든 RKE2 노드 모든 RKE2 노드 Typha가 있는 Calico CNI
      9098 TCP 모든 RKE2 노드 모든 RKE2 노드 옥양목 티파 건강 검진
      9099 TCP 모든 RKE2 노드 모든 RKE2 노드 칼리코 건강 검진
    • FlannelPort프로토콜출처목적지설명
      4789 UDP 모든 RKE2 노드 모든 RKE2 노드 VXLAN이 있는 플란넬 CNI
  • 윈도우 특정 인바운드 네트워크 규칙프로토콜Port출처목적지설명
    UDP 4789 모든 RKE2 노드 모든 RKE2 노드 Calico 및 Flannel VXLAN에 필요
    TCP 179 모든 RKE2 노드 모든 RKE2 노드 BGP가 있는 Calico CNI

일반적으로, 모든 아웃바운드 트래픽은 허용됩니다.

1. 인터넷 환경 설치 방안

구성 옵션

  • RKE2를 구성하는 주요 방법은 구성 파일을 사용하는 것입니다. 커맨드 라인 인수와 환경 변수도 사용할 수 있지만, RKE2는 시스템 서비스로 설치되므로 활용하기 쉽지 않습니다.
  • 기본적으로 RKE2는 /etc/rancher/rke2/config.yaml 위치한 YAML 파일에 있는 값으로 실행됩니다.
  • RKE2 구성 파일은 수동으로 생성되어야 합니다. 당신은 touch /etc/rancher/rke2/config.yaml 권한 있는 사용자로 실행하여 그렇게 할 수 있습니다. RKE2를 시작한 후 구성이 변경된 경우, 새 구성을 적용하려면 서비스를 다시 시작해야 합니다.
    • yaml 파일을 사용한 방안 ( 추천 방안 )
    • # server config file 예시 write-kubeconfig-mode: "0644" tls-san: - "foo.local" node-label: - "foo=bar" - "something=amazing" debug: true
  • CLI 를 사용한 방안
  • rke2 server \\ --write-kubeconfig-mode "0644" \\ --tls-san "foo.local" \\ --node-label "foo=bar" \\ --node-label "something=amazing" \\ --debug

다중 구성 방안

  • 다중 구성 방안은 지원
  • 여러 구성 파일이 지원됩니다. 기본적으로 구성 파일은 /etc/rancher/rke2/config.yaml 및 /etc/rancher/rke2/config.yaml.d/*.yaml에서 알파벳 순서로 읽혀집니다.
  • 기본적으로 특정 키에 대해 발견된 마지막 값이 사용됩니다. 값을 바꾸는 대신 기존 문자열이나 조각에 값을 추가하기 위해 키에 +를 추가할 수 있습니다. 후속 파일에서 이 키가 나타날 때마다 누적된 값을 덮어쓰는 것을 방지하기 위해 +가 필요합니다.
    • 여러 구성 파일의 예시
    # config.yaml
    token: boop
    node-label:
      - foo=bar
      - bar=baz
    
    # config.yaml.d/test1.yaml
    write-kubeconfig-mode: 600
    node-taint:
      - alice=bob:NoExecute
    
    # config.yaml.d/test2.yaml
    write-kubeconfig-mode: 777
    node-label:
      - other=what
      - foo=three
    node-taint+:
      - charlie=delta:NoSchedule
    
    • 최종 구성
    write-kubeconfig-mode: 777
    token: boop
    node-label:
      - other=what
      - foo=three
    node-taint:
      - alice=bob:NoExecute
      - charlie=delta:NoSchedule
    

RKE2 설치

Linux 환경 Tarball 설치

  • 설치를 통해 RKE2를 설치하려면 먼저 설치 스크립트를 가져와야 합니다. 이것은 여러 가지 방법으로 이루어질 수 있다.
    1. 스크립트를 받고 즉시 설치 프로세스를 시작합니다.
    2. # curl -sfL <https://get.rke2.io> | sudo sh - curl -sfL <https://get.rke2.io> | sh -
    3. 설치 스크립트를 다운로드하여 실행 가능하도록 만들 수 있습니다.
    4. curl -sfL <https://get.rke2.io> --output install.sh chmod +x install.sh
  • 설치
    • 설치 프로세스는 기본적으로 최신 RKE2 버전으로 설정되며 다른 한정자는 필요하지 않습니다. 그러나 버전을 지정하려면 INSTALL_RKE2_CHANNEL 환경 변수를 설정해야 합니다.
    INSTALL_RKE2_CHANNEL=latest ./install.sh
    
    • 설치 스크립트가 실행되면, 어떤 유형의 시스템인지 결정합니다. RPM(예: CentOS 또는 RHEL)을 사용하는 OS인 경우 RPM 기반 설치를 수행하며, 그렇지 않으면 스크립트가 기본적으로 tarball입니다. RPM 기반 설치는 아래에 설명되어 있습니다.
    • 설치 스크립트는 tarball을 다운로드하고, SHA256 해시를 비교하여 확인하고, 마지막으로 /usr/local 내용을 추출합니다. 운영자는 원하는 경우 설치 후 파일을 자유롭게 이동할 수 있습니다. 이 작업은 단순히 타르볼을 추출하고 다른 시스템 수정은 이루어지지 않습니다.

윈도우 설치 스크립트 구성

Rancher

  • 설치 옵션 개요
    • Helm CLI로 고가용성 쿠버네티스 설치
      • 쿠버네티스 패키지 관리자인 Helm을 사용하여 전용 쿠버네티스 클러스터의 여러 노드에 Rancher를 설치하는 것이 좋습니다. RKE 클러스터의 경우, 고가용성 클러스터를 달성하기 위해 세 개의 노드가 필요합니다. K3 클러스터의 경우, 두 개의 노드만 필요합니다.
    • AWS 마켓플레이스로 EKS 설치의 랜처
      • 랜처는 AWS 마켓플레이스를 통해 아마존 엘라스틱 쿠버네티스 서비스(EKS)에 설치할 수 있다. 배포된 EKS 클러스터는 생산 준비가 되어 있으며 AWS 모범 사례를 따릅니다.
    • 단일 노드 쿠버네티스 설치
      • Rancher는 단일 노드 쿠버네티스 클러스터에 설치할 수 있습니다. 이 경우, Rancher 서버는 높은 가용성을 가지고 있지 않으며, 이는 프로덕션에서 Rancher를 실행하는 데 중요합니다.
      • 그러나 이 옵션은 고가용성 마이그레이션 경로를 유지하면서 단기적으로 단일 노드를 사용하여 리소스를 절약하려는 경우에 유용합니다. 앞으로는 클러스터에 노드를 추가하여 고가용성 Rancher 서버를 얻을 수 있습니다.
    • 도커 설치
      • 테스트 및 시연 목적으로 Rancher는 단일 노드에 Docker와 함께 설치할 수 있습니다. 로컬 쿠버네티스 클러스터는 단일 도커 컨테이너에 설치되며, 랜처는 로컬 클러스터에 설치됩니다.
      • 랜처 백업 운영자는 랜처를 단일 도커 컨테이너 설치에서 고가용성 쿠버네티스 클러스터의 설치로 마이그레이션하는 데 사용할 수 있습니다.
  • 랜처는 다음 주요 아키텍처에 설치할 수 있습니다:
  • 설치 팁
    • 최고의 성능과 더 큰 보안을 위해, 우리는 Rancher 관리 서버를 위한 별도의 전용 Kubernetes 클러스터를 권장합니다.
  • 랜처 헬름 차트 설치 방법
    1. Helm 차트 저장소를 추가
      • Helm repo add 명령을 사용하여 Rancher를 설치할 차트가 포함된 Helm 차트 저장소를 추가합니다.
      1. latest
      2. helm repo add rancher-latest <https://releases.rancher.com/server-charts/latest>
      3. stable
      4. helm repo add rancher-stable <https://releases.rancher.com/server-charts/stable>
      5. alpha
      6. helm repo add rancher-alpha <https://releases.rancher.com/server-charts/alpha>
    2. 랜처를 위한 네임스페이스 생성
      • 차트에 의해 생성된 리소스가 설치되어야 하는 쿠버네티스 네임스페이스를 정의해야 합니다. 이것은 항상 cattle-system 으로 정의 해야합니다.
    3. SSL 구성을 선택
      • 랜처 관리 서버는 기본적으로 안전하도록 설계되었으며 SSL/TLS 구성이 필요합니다.
      • Rancher 서버에서 TLS 종료에 사용되는 인증서의 소스에 대한 세 가지 권장 옵션이 있습니다ConfigurationHelm Chart OptionRequires cert-manager
        Rancher Generated Certificates (Default) ingress.tls.source=rancher yes
        Let’s Encrypt ingress.tls.source=letsEncrypt yes
        Certificates from Files ingress.tls.source=secret no
    4. 인증서 관리자 설치 (자신의 인증서를 가져오지 않는 한, 그렇지 않으면 TLS가 로드 밸런서에서 종료됩니다)
      • 자신의 인증서 파일(optioningressingress.tls.source=secret)을 가져오거나 외부 로드 밸런서에서 TLS 종료를 사용하는 경우 이 단계를 건너뛰어야 합니다.
      • 단계는 Rancher가 생성한 CA(ingress.tls.source=rancher)에서 발급한 인증서를 사용하거나 Let's Encrypt 발급 인증서(ingress.tls.source=letsEncrypt)를 요청하기 위해서만 필요합니다
      • # If you have installed the CRDs manually, instead of setting `installCRDs` or `crds.enabled` to `true` in your Helm install command, you should upgrade your CRD resources before upgrading the Helm chart: kubectl apply -f <https://github.com/cert-manager/cert-manager/releases/download/>/cert-manager.crds.yaml # Add the Jetstack Helm repository helm repo add jetstack <https://charts.jetstack.io> # Update your local Helm chart repository cache helm repo update # Install the cert-manager Helm chart helm install cert-manager jetstack/cert-manager \\ --namespace cert-manager \\ --create-namespace \\ --set crds.enabled=true
      • cert-manager를 설치한 후, 실행 중인 포드에 대한 cert-manager 네임스페이스를 확인하여 올바르게 배포되었는지 확인할 수 있습니다.
      • kubectl get pods --namespace cert-manager NAME READY STATUS RESTARTS AGE cert-manager-5c6866597-zw7kh 1/1 Running 0 2m cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m
    5. Helm과 선택한 인증서 옵션으로 Rancher를 설치
      • Rancher를 설치하는 정확한 명령은 인증서 구성에 따라 다릅니다.
        • Rancher-generated Certificates
          • 기본값은 Rancher가 CA를 생성하고 cert-manager 사용하여 Rancher 서버 인터페이스에 대한 액세스를 위한 인증서를 발급하는 것입니다.
          • 쿠버네티스 v1.25 이상의 경우, Rancher v2.7.2-v2.7.4를 사용할 때 global.cattle.psp.enabled:false 설정하세요. 이것은 Rancher v2.7.5 이상에는 필요하지 않지만, 원한다면 여전히 수동으로 옵션을 설정할 수 있습니다.
          • 설치 명령어
          • helm install rancher rancher-<CHART_REPO>/rancher \\ --namespace cattle-system \\ --set hostname=rancher.my.org \\ --set bootstrapPassword=admin
          • 만약 설치시 alpha 버전등을 설치하고 싶다면 —devel 옵션을 추가하세요
          • helm install rancher rancher-alpha/rancher --devel
        • Let's Encrypt
          • 이 옵션은 cert-manager 사용하여 Let's Encrypt 인증서를 자동으로 요청하고 갱신합니다. 이것은 Let's Encrypt가 신뢰할 수 있는 CA이기 때문에 유효한 인증서를 제공하는 무료 서비스입니다.
          • HTTP-01 챌린지는 포트 80에서만 수행할 수 있으므로 포트 80을 열어야 합니다.
          • helm install rancher rancher-<CHART_REPO>/rancher \\ --namespace cattle-system \\ --set hostname=rancher.my.org \\ --set bootstrapPassword=admin \\ --set ingress.tls.source=letsEncrypt \\ --set letsEncrypt.email=me@example.org \\ --set letsEncrypt.ingress.class=nginx
        • Certificates from Files
          • 이 옵션에서 쿠버네티스 secret은 랜처가 사용할 수 있도록 자신의 인증서로 생성됩니다.
          • helm install rancher rancher-<CHART_REPO>/rancher \\ --namespace cattle-system \\ --set hostname=rancher.my.org \\ --set bootstrapPassword=admin \\ --set ingress.tls.source=secret
      • 그러나 인증서 구성에 관계없이 Rancher 설치 네임스페이스의 이름은 항상 cattle-system 이여야 합니다
    6. Rancher 서버가 성공적으로 배포되었는지 확인
      • DNS 서버에 랜처 IP 및 설치시 사용한 hostname 을 추가하고 WEB UI로 접속하세요.
    7. kubectl -n cattle-system rollout status deploy/rancher Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available... deployment "rancher" successfully rolled out

설치가 완료되었습니다.

2. 인터넷 아닌 환경(airgapped) 설치 방안

RKE2 설치

Linux 환경

  • 노드에 기본 경로가 있는 인터페이스가 없는 경우 기본 경로를 구성해야 합니다. 더미 인터페이스를 통한 블랙홀 경로도 충분합니다. RKE2는 노드의 기본 IP를 자동으로 감지하고 kube-proxy ClusterIP 라우팅이 제대로 작동하려면 기본 경로가 필요합니다.
    • dummy 경로 추가
    • ip link add dummy0 type dummy ip link set dummy0 up ip addr add 203.0.113.254/31 dev dummy0 ip route add default via 203.0.113.255 dev dummy0 metric 1000

Tarball

  • 사용 중인 RKE2의 버전과 플랫폼에 대한 RKE 릴리스 아티팩트 목록에서 에어갭 이미지 타르볼을 다운로드하십시오.
    • rke2-images.linux-amd64.tar.zst 또는 rke2-images.linux-amd64.tar.gz 를 사용하세요.
      • Zstandard 파일은 gzip 파일에 비해 더 나은 압출률과 더 빠른 압축 해제 속도를 제공합니다.
    • 만약 default CNI 가 아닌 다른 CNI를 기본 CNI로 사용하고자 한다면, rke2-image 파일을 사용하거나  rke2-images-core 및 rke2-images-canalarchive 파일을 사용할 수 있습니다.
    • 노드에 /var/lib/rancher/rke2/agent/images/ directory 가 있는지 확인하세요
    • 압축된 아카이브 파일을 노드의 /var/lib/rancher/rke2/agent/images/ 에 복사하여 파일 확장자가 유지되도록 합니다.

Tarball 완료 후 Install.sh 스크립트 설치

  • 인터넷 환경에서 파일을 다운로드하여 해당 서버에 업로드 하세요.
  • 설치 서버에서 해당 install.sh를 실행하세요.
  • mkdir /root/rke2-artifacts && cd /root/rke2-artifacts/ # 파일 업로드 INSTALL_RKE2_ARTIFACT_PATH=/root/rke2-artifacts sh install.sh
  • rke2-server 서비스를 활성화하세요
  • systemctl enable rke2-[server/agent].service
  • config.yaml 파일을 설정하세요.
    • server
    • tls: - [server1 IP] - [server2 IP] - [server3 IP] ...
    • agent
      • token은 sever1의 /var/lib/rancher/rke2/server/node-token 경로에 생성됩니다.
      server: https://<server1 IP>:9345
      token: <token from server node>
      
  • 서비스를 시작하세요
  • systemctl start rke2-[server/agent].service
  • 원한다면 로그를 따라가세요
  • journalctl -u rke2-[server/agent] -f
  • 설치 후
    • 추가 유틸리티는 /var/lib/rancher/rke2/bin/에 설치될 것입니다. 그들은 다음을 포함한다: kubectl, crictl, 그리고 ctr. 이것들은 기본적으로 당신의 경로에 없다는 점에 유의하십시오.
    • 두 개의 정리 스크립트, rke2-killall.sh rke2-uninstall.sh 다음의 경로에 설치됩니다.
      • /usr/local/bin일반 파일 시스템을 위해
      • /opt/rke2/bin읽기 전용 및 brtfs 파일 시스템용
      • INSTALL_RKE2_TAR_PREFIX/binINSTALL_RKE2_TAR_PREFIX 설정된 경우
    • kubeconfig 파일은 /etc/rancher/rke2/rke2.yaml 기록될 것입니다.
    • 다른 서버 또는 에이전트 노드를 등록하는 데 사용할 수 있는 토큰이 생성됩니다./var/lib/rancher/rke2/server/node-token
  • 추가 서버 노드를 추가하는 경우, 총 홀수가 있어야 합니다. 정족수를 유지하려면 홀수가 필요합니다.

Windows 환경

Tarball

  • 사용 중인 RKE2 버전에 대한 RKE2 릴리스 아티팩트 목록에서 Windows 이미지 tarballs 및 바이너리를 다운로드하십시오.
  • tar.gz 이미지 tarballs 사용
    • 윈도우 서버 2019 LTSC (amd64) (OS 빌드 17763.2061)
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-1809-amd64-images.tar.gz> -OutFile /var/lib/rancher/rke2/agent/images/rke2-windows-1809-amd64-images.tar.gz
    
    
    • 윈도우 서버 SAC 2004 (amd64) (OS 빌드 19041.1110)
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-2004-amd64-images.tar.gz> -OutFile c:/var/lib/rancher/rke2/agent/images/rke2-windows-2004-amd64-images.tar.gz
    
    
    • 윈도우 서버 SAC 20H2 (amd64) (OS 빌드 19042.1110)
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-20H2-amd64-images.tar.gz> -OutFile c:/var/lib/rancher/rke2/agent/images/rke2-windows-20H2-amd64-images.tar.gz
    
    
  • tar.zst 이미지 tarballs 사용
    • 파일 준비
      • 윈도우 서버 2019 LTSC (amd64) (OS 빌드 17763.2061)
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-1809-amd64-images.tar.zst> -OutFile /var/lib/rancher/rke2/agent/images/rke2-windows-1809-amd64-images.tar.zst
      
      
      • 윈도우 서버 SAC 2004 (amd64) (OS 빌드 19041.1110)
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-2004-amd64-images.tar.zst> -OutFile c:/var/lib/rancher/rke2/agent/images/rke2-windows-2004-amd64-images.tar.zst
      
      
      • 윈도우 서버 SAC 20H2 (amd64) (OS 빌드 19042.1110)
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-20H2-amd64-images.tar.zst> -OutFile c:/var/lib/rancher/rke2/agent/images/rke2-windows-20H2-amd64-images.tar.zst
      
      
    • rke2-windows-<BUILD_VERSION>-amd64.tar.gz 또는 rke2-windows-<BUILD_VERSION>-amd64.tar.zst파일을 사용하세요.
      • Zstandard 파일은 gzip 파일에 비해 더 나은 압출률과 더 빠른 압축 해제 속도를 제공합니다.
    • 노드에 /var/lib/rancher/rke2/agent/images/ directory 가 있는지 확인하세요.
    New-Item -Type Directory c:\\usr\\local\\bin -Force
    New-Item -Type Directory c:\\var\\lib\\rancher\\rke2\\bin -Force
    
    • 압축된 아카이브 파일을 노드의 /var/lib/rancher/rke2/agent/images/ 에 복사하여 파일 확장자가 유지되도록 합니다.

Tarball 완료 후 윈도우 RKE2 설치

  • 인터넷 환경에서 윈도우 RKE2 바이너리 파일 rke2-windows-amd64.exe 받으세요. 바이너리 이름이 rke2.exe 확인하고 c:/usr/local/bin 배치하십시오.
  • Invoke-WebRequest <https://github.com/rancher/rke2/releases/download/v1.26.10%2Brke2r2/rke2-windows-amd64.exe> -OutFile c:/usr/local/bin/rke2.exe
  • 윈도우 서버에 rke2-agent를 구성하세요
  • New-Item -Type Directory c:/etc/rancher/rke2 -Force Set-Content -Path c:/etc/rancher/rke2/config.yaml -Value @" server: https://<server>:9345 token: <token from server node> "@
  • 당신의 PATH를 설정 하세요
  • $env:PATH+=";c:\\var\\lib\\rancher\\rke2\\bin;c:\\usr\\local\\bin" [Environment]::SetEnvironmentVariable( "Path", [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine) + ";c:\\var\\lib\\rancher\\rke2\\bin;c:\\usr\\local\\bin", [EnvironmentVariableTarget]::Machine)
  • 원하는 매개 변수로 바이너리를 실행하여 RKE2 Windows 서비스를 시작하십시오.
  • c:\\usr\\local\\bin\\rke2.exe agent service --add
  • CLI 매개변수만 사용하고 싶다면 원하는 매개 변수로 바이너리를 실행 하십시오.
  • c:/usr/local/bin/rke2.exe agent --token <> --server <>

Rancher 설치

  • 전제조건
    • 사용할 수 있는 개인 레지스트리가 있어야 합니다.
      • 인증서 및 레지스트리 구성 파일은 Rancher 컨테이너에 마운트되어야 합니다
  • 에어 갭 환경에서 Rancher 관리 서버의 기본 인프라를 프로비저닝합니다. 또한 Rancher 노드(들)에서 사용할 수 있어야 하는 개인 컨테이너 이미지 레지스트리를 설정할 것입니다.
  • 에어 갭 환경은 랜처 서버가 오프라인 또는 방화벽 뒤에 설치되는 환경입니다.
  • 기본적으로 쿠버네티스 클러스터를 프로비저닝하거나 랜처에서 모니터링, 파이프라인, 경고와 같은 도구를 실행하는 데 사용되는 모든 이미지는 도커 허브에서 가져온다. 랜처의 에어 갭 설치에서는 랜처 서버가 액세스할 수 있는 곳에 있는 개인 레지스트리가 필요합니다.
  • 설치 파일들을 준비하세요
    • releases page 에 접속하여 설치하기를 원하는 Rancher v2.x.x release 를 클릭하세요
    • 릴리스의 자산 섹션에서, 에어 갭 환경에 Rancher를 설치하는 데 필요한 다음 파일을 다운로드하십시오.Release FileDescription
      rancher-images.txt 이 파일에는 Rancher, 프로비저닝 클러스터 및 사용자 Rancher 도구를 설치하는 데 필요한 이미지 목록이 포함되어 있습니다.
      rancher-save-images.sh 이 스크립트는 Docker Hub에서 rancher-images.txt 모든 이미지를 가져오고 모든 이미지를 rancher-images.tar.gz 저장합니다.
      rancher-load-images.sh 이 스크립트는 rancher-images.tar.gz file 로 부터 이미지를 가져와 개인 private registry에 저장합니다.
  • 인증서 관리자 이미지를 수집하세요
    • Kubernetes 설치에서 Rancher 기본 자체 서명 TLS 인증서를 사용하기로 선택한 경우 rancher-images.txt에도 cert-manager 이미지를 추가해야 합니다.
    • 최신 인증서 관리자 Helm 차트를 가져오고 이미지 세부정보를 위해 템플릿을 구문 분석합니다.
    • helm repo add jetstack <https://charts.jetstack.io> helm repo update helm fetch jetstack/cert-manager helm template ./cert-manager-.tgz | awk '$1 ~ /image:/ {print $2}' | sed s/\\"//g >> ./rancher-images.txt curl -L -o cert-manager-crd.yaml <https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.crds.yaml>
    • 소스 간의 겹침을 제거하기 위해 이미지 목록을 정렬하고 고유하게 만듭니다.
    • sort -u rancher-images.txt -o rancher-images.txt
  • Private-Registry에 이미지를 저장하세요
    • rancher-save-images.sh 실행 파일로 만드세요.
    • chmod +x rancher-save-images.sh
    • rancher-images.txt 이미지 목록과 함께 rancher-save-images.sh를 실행하여 필요한 모든 이미지의 tarball을 만듭니다.
    • 이미지를 로드하는 스크립트를 사용하여 rancher-images.tar.gz 이미지를 개인 레지스트리로 이동합니다.
      • 필요한 경우 개인 레지스트리에 로그인하세요:
      • docker login <REGISTRY.YOURDOMAIN.COM:PORT>
      • rancher-load-images.sh 실행 파일로 만드세요:
      • chmod +x rancher-load-images.sh
      • Use rancher-load-images.sh to extract, tag and push rancher-images.txt and rancher-images.tar.gz to your private registry:
      • ./rancher-load-images.sh --image-list ./rancher-images.txt --registry <REGISTRY.YOURDOMAIN.COM:PORT>
    • 개인 레지스트리로 정상적으로 저장이 되었는지 확인하세요.
    curl https://<REGISTRY.YOURDOMAIN.COM:PORT>/v2/_catalog 
    
  • /etc/rancher/rke2/registries.yaml registries.yaml 파일을 만드세요
  • --- mirrors: customreg: endpoint: - "<https://ip-to-server:5000>" configs: customreg: auth: username: xxxxxx # this is the registry username password: xxxxxx # this is the registry password tls: cert_file: <path to the cert file used in the registry> key_file: <path to the key file used in the registry> ca_file: <path to the ca file used in the registry>
  • 인증서 관리자 (cert-manager)설치
    • 자체 서명된 인증서를 사용하는 경우, cert-manager를 설치하십시오.
      • cert-manager를 위한 네임스페이스를 만드세요.
      • kubectl create namespace cert-manager
      • cert-manager CustomResourceDefinitions (CRDs)를 만듭니다.
      • kubectl apply -f cert-manager-crd.yaml
      • cert-manager를 설치하세요.
      • helm install cert-manager ./cert-manager-v1.11.0.tgz \\ --namespace cert-manager \\ --set image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-controller \\ --set webhook.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-webhook \\ --set cainjector.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-cainjector \\ --set startupapicheck.image.repository=<REGISTRY.YOURDOMAIN.COM:PORT>/quay.io/jetstack/cert-manager-ctl
  • Rancher 설치
    • Rancher를 설치하고, 선택한 옵션을 선언하세요. 아래의 참조 표를 사용하여 각 Placeholder 를 교체하십시오. 랜처가 실행한 쿠버네티스 클러스터 또는 랜처 도구를 프로비저닝하려면 개인 레지스트리를 사용하도록 구성해야 합니다.PlaceholderDescription
      <VERSION> The version number of the output tarball.
      <RANCHER.YOURDOMAIN.COM> The DNS name you pointed at your load balancer.
      <REGISTRY.YOURDOMAIN.COM:PORT> The DNS name for your private registry.
      <CERTMANAGER_VERSION> Cert-manager version running on k8s cluster.
         helm install rancher ./rancher-<VERSION>.tgz \\
          --namespace cattle-system \\
          --set hostname=<RANCHER.YOURDOMAIN.COM> \\
          --set certmanager.version=<CERTMANAGER_VERSION> \\
          --set rancherImage=<REGISTRY.YOURDOMAIN.COM:PORT>/rancher/rancher \\
          --set systemDefaultRegistry=<REGISTRY.YOURDOMAIN.COM:PORT> \\ # Set a default private registry to be used in Rancher
          --set useBundledSystemChart=true # Use the packaged Rancher system charts
      
    • Rancher 서버가 성공적으로 배포되었는지 확인
      • DNS 서버에 랜처 IP 및 설치시 사용한 hostname 을 추가하고 WEB UI로 접속하세요.
    • kubectl -n cattle-system rollout status deploy/rancher Waiting for deployment "rancher" rollout to finish: 0 of 3 updated replicas are available... deployment "rancher" successfully rolled out

설치가 완료되었습니다.

3. 용어설명

RKE: Kubernetes 클러스터를 만들고 관리하는 인증된 Kubernetes 배포판 및 CLI/library

RKE2: rancher kubernetes engine2

  • 미국 내 보안 및 규정 준수에 중점을 둔 완전히 적합한 쿠버네티스 배포판

CNI(container network interface): 컨테이너 간의 네트워킹을 제어할 수 있는 플러그인을 만들기 위한 표준

인바운드(inbound) : 내부로 들어오는 것

아웃바운드 (outbound) : 외부로 나가는 것

tarball : 여러파일을 하나로 묶어주는 tar 압축 파일

latest : 최신버전

stable : 안정버전

alpha : 곧 출시될 버전

namespace : 프로그램에서 사용되는 이름의 논리적 그룹인 식별자의 컨텍스트 DNS(Domain Name System) : 도메인을 IP 네트워크에서 찾아갈 수 있는 IP 로 변환해주는 시스템

728x90
반응형