관리자 워크스테이션 기본 요건

관리자 워크스테이션은 설치 중 클러스터를 프로비저닝하는 명령줄 인터페이스(CLI) 도구와 구성 파일 및 설치 후 프로비저닝된 클러스터와 상호작용하는 CLI 도구를 호스팅합니다.

클러스터 및 Google Cloud 리소스와 상호작용하려면 관리자 워크스테이션에서 bmctl 및 Google Cloud CLI와 같은 도구를 다운로드하고 실행합니다. 관리자 워크스테이션은 설치, 업그레이드, 업데이트 중에 클러스터를 프로비저닝하도록 구성 파일을 호스팅합니다. 설치 후 관리자 워크스테이션은 kubectl을 사용하여 프로비저닝된 클러스터와 상호작용할 수 있도록 kubeconfig 파일을 호스팅합니다. 또한 관리자 워크스테이션에서 중요한 클러스터 작업의 로그에 액세스합니다. 단일 관리자 워크스테이션을 사용해서 여러 클러스터를 만들고 관리할 수 있습니다.

관리자 워크스테이션이 다음 섹션에 설명된 기본 요건을 충족하는지 확인합니다.

운영체제 및 소프트웨어

bmctl을 실행하고 제어 영역 노드로 작동하기 위해 관리자 워크스테이션에는 노드와 동일한 운영체제(OS) 요구사항이 있습니다. 관리자 워크스테이션을 사용하려면 Docker가 필요하지만 이 관리 스테이션을 컨테이너 런타임으로는 사용할 수 없습니다. 베어메탈용 GKE는 클러스터를 만들 때 관리자 워크스테이션에 Docker의 Kubernetes(종류) 클러스터를 배포합니다. 이 부트스트랩 클러스터는 클러스터를 만드는 데 필요한 Kubernetes 컨트롤러를 호스팅합니다. 달리 지정하지 않으면 클러스터가 성공적으로 생성될 때 부트스트랩 클러스터가 제거됩니다. 컨테이너 이미지를 가져오려면 부트스트랩 클러스터에 Docker가 있어야 합니다.

클러스터를 설치하려면 먼저 관리자 워크스테이션에서 다음 요구사항을 충족해야 합니다.

  • 운영체제는 지원되는 Linux 배포판입니다.

    지원되는 Linux OS 및 버전 목록은 운영체제 선택을 참조하세요. 이 페이지에는 각 OS의 Docker 구성을 포함한 구성 안내에 대한 링크가 있습니다.

  • Docker 버전 19.03 이상이 설치되어 있습니다. 그러나 시스템에 cgroup v2가 사용되는 경우 관리자 워크스테이션의 Docker 설치가 버전 20.10.0 이상이어야 합니다. 시스템에 cgroup v2가 사용되는지 여부는 /sys/fs/cgroup/cgroup.controllers 파일이 있는지를 보고 확인할 수 있습니다. cgroup v2는 미리보기 기능으로만 지원됩니다. 프로덕션 환경에서는 미리보기 기능을 사용하지 않는 것이 좋습니다.

  • 루트가 아닌 사용자는 docker 그룹의 구성원입니다(자세한 내용은 Docker를 루트가 아닌 사용자로 관리 참조).

  • Google Cloud CLI가 설치되어 있습니다.

    kubectlbmctl 도구를 사용하여 클러스터를 만들고 관리할 수 있습니다. 이러한 도구를 설치하려면 gcloudgsutil 도구가 필요합니다. gcloud, gsutil, kubectl 명령줄 도구는 gcloud CLI의 구성요소입니다. 구성요소 설치 안내를 포함한 설치 안내는 gcloud CLI 설치를 참조하세요.

  • kubectl이 설치되어 있습니다. gcloud CLI를 사용하여 다음 명령어로 kubectl을 설치합니다.

    gcloud components install kubectl
    
  • bmctl은 생성되거나 작동하는 클러스터 버전에 설치됩니다.

    설치는 gsutil을 사용하여 bmctl 바이너리 또는 이미지 패키지 다운로드로 구성됩니다. 자세한 내용은 베어메탈용 Anthos 클러스터 다운로드를 참조하세요.

하드웨어 리소스 요구사항

관리 스테이션을 사용하려면 도구를 실행하고 클러스터 생성 및 관리와 관련된 리소스를 저장할 수 있는 상당한 컴퓨팅 성능, 메모리, 스토리지가 필요합니다.

기본적으로 클러스터 업그레이드 및 클러스터 만들기 작업에서 부트스트랩 클러스터를 사용합니다. 부트스트랩 클러스터를 사용하면 CPU 및 메모리 사용량이 크게 증가합니다. 관리자 워크스테이션을 제어 영역 노드로 사용하려면 관리자 워크스테이션 활동이 클러스터 제어 영역 기능을 방해하지 않도록 CPU 및 RAM 권장 용량 이상을 사용합니다.

etcd 데이터베이스의 크기와 제어 영역 노드 수에 따라 클러스터 백업 및 복원 작업에서 상당한 양의 RAM을 사용합니다. 백업에 필요한 RAM의 대략적인 추정치는 제어 영역 노드당 3~5GiB입니다. 메모리가 부족하면 백업 프로세스가 실패합니다. 이에 따라 RAM 요구사항을 계획합니다.

다음 표에는 관리자 워크스테이션의 최소 및 권장 하드웨어 요구사항이 나와 있습니다.

리소스 최소 권장
CPU/vCPU* 코어 2개 코어 4개
RAM Ubuntu: 4GiB
CentOS/RHEL: 6GiB
Ubuntu: 8GiB
CentOS/RHEL: 12GiB
스토리지 128GiB 256GiB

* 베어메탈용 GKE는 CPU 마이크로아키텍처 수준 v3(x86-64-v3) 이상에서 x86-64 CPU 및 vCPU만 지원합니다.

네트워킹 요구사항

관리자 워크스테이션에서 Google Cloud 및 모든 클러스터 노드에 액세스해야 합니다.

Google Cloud에 액세스

관리자 워크스테이션은 Google Cloud에 액세스하여 도구와 이미지 다운로드 및 설치, 승인 요청 처리, 서비스 계정 생성, 로깅 및 모니터링 관리 등을 수행합니다. Google Cloud에 대한 액세스 권한이 없는 클러스터를 만들 수 없습니다.

Google Cloud에 직접 또는 프록시 서버를 통해 액세스할 수 있습니다. Google Cloud에 연결하는 다양한 방법은 Google에 연결을 참조하세요. 프록시 서버 구성 방법은 프록시 뒤 설치를 참조하세요.

Google Cloud에 대한 액세스 중단으로 인한 결과는 Google Cloud와의 임시 연결 해제 영향을 참조하세요.

노드에 액세스

관리자 워크스테이션에서 클러스터를 만들고 관리하려면 노드 머신에 대한 다음 액세스 권한이 필요합니다.

  • 모든 클러스터 노드 머신에 대한 Layer 3 연결
  • SSH를 통해 모든 클러스터 노드 머신에 비밀번호가 없는 root 액세스. 직접 또는 sudo를 통해 SSH 액세스가 가능합니다.
  • 제어 영역 VIP에 대한 액세스 권한입니다.

IP 전달

관리자 워크스테이션에서 IP 전달을 사용 설정해야 합니다. IP 전달 없이는 클러스터 생성을 차단하는 부트스트랩 클러스터를 만들 수 없습니다. IP 전달을 사용 중지하면 클러스터를 만들려고 할 때 다음과 같은 오류가 표시됩니다.

Error message: E0202 14:53:25.979322 225917 console.go:110] Error creating cluster: create kind cluster failed: error creating bootstrap cluster: failed to init node with kubeadm: command "docker exec --privileged bmctl-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 1

다음 명령어를 사용하여 IP 전달 설정을 확인할 수 있습니다.

cat /proc/sys/net/ipv4/ip_forward

값이 1이면 IP 전달이 사용 설정된 것입니다. IP 전달이 중지(0)되면 다음 명령어를 사용하여 사용 설정합니다.

echo '1' | sudo tee /proc/sys/net/ipv4/ip_forward

노드에 대한 root SSH 액세스 설정

관리자 워크스테이션과 클러스터 노드 머신 간에 안전한 비밀번호가 없는 연결을 사용 설정하려면 관리자 워크스테이션에서 SSH 키를 만들고 공개 키를 클러스터 노드와 공유합니다.

  1. /etc/ssh/sshd_config 파일에서 PermitRootLoginPasswordAuthentication 줄의 주석 처리를 삭제하거나 추가하고 값을 yes로 설정하여 클러스터 노드 머신마다 root SSH 비밀번호 인증을 사용 설정합니다.

    # $OpenBSD: sshd_config,v 1.103 2018/04/09 20:41:22 tj Exp $
    
    # This is the sshd server system-wide configuration file.  See
    # sshd_config(5) for more information.
    
    ...
    
    # Authentication:
    
    #LoginGraceTime 2m
    PermitRootLogin yes
    #StrictModes yes
    #MaxAuthTries 6
    #MaxSessions 10
    
    ...
    
    PasswordAuthentication yes
    

    처음에는 관리자 워크스테이션의 키를 공유하려면 원격 클러스터 노드 머신에서 SSH 비밀번호 인증을 사용 설정해야 합니다.

  2. SSH 구성 변경사항을 적용하려면 SSH 서비스를 다시 시작합니다.

    sudo systemctl restart ssh.service
    
  3. 관리자 워크스테이션에서 비공개 및 공개 키 쌍을 생성합니다. 키에 암호를 설정하지 마세요. 다음 명령어를 사용하여 키를 생성합니다.

    ssh-keygen -t rsa
    

    클러스터 노드 머신에 대한 sudo 사용자 액세스 권한을 사용하여 SSH를 설정할 수도 있습니다. 하지만 비밀번호가 없는 루트가 아닌 사용자를 연결할 경우 spec.nodeAccess.loginUser 필드를 사용하여 클러스터 구성 파일을 업데이트해야 합니다. 이 필드는 기본적으로 주석 처리됩니다. 클러스터를 만드는 중에 또는 그 후에 언제든지 loginUser를 사용하여 루트가 아닌 사용자 이름을 지정할 수 있습니다. 자세한 내용은 loginUser를 참조하세요.

  4. 생성된 공개 키를 클러스터 노드 머신에 추가합니다.

    ssh-copy-id -i PATH_TO_IDENTITY_FILE root@CLUSTER_NODE_IP
    

    다음을 바꿉니다.

    • PATH_TO_IDENTITY_FILE: SSH 공개 키가 포함된 파일의 경로. 기본적으로 공개 키가 포함된 ID 파일의 경로는 /home/USERNAME/.ssh/id_rsa.pub입니다.
    • CLUSTER_NODE_IP: SSH 공개 키를 추가할 노드 머신의 IP 주소.
  5. sshd_config 파일에서 PasswordAuthenticationno로 설정하고 SSH 서비스를 다시 시작하여 클러스터 노드 머신에서 SSH 비밀번호 인증을 중지합니다.

  6. 관리자 워크스테이션에서 다음 명령어를 사용하여 워크스테이션과 노드 머신 간에 공개 키 인증이 작동하는지 확인합니다.

    ssh -o IdentitiesOnly=yes -i PATH_TO_IDENTITY_FILE root@CLUSTER_NODE_IP
    

    SSH가 올바르게 구성되면 비밀번호를 입력하지 않고도 관리자 워크스테이션에서 root로 노드 머신에 로그인할 수 있습니다.

다음 단계