DigitalOcean에 CoreOS 클러스터 설정 방법

DigitalOcean에 CoreOS 클러스터 설정 방법

2022-06-01 last update

11 minutes reading Scaling DigitalOcean API CoreOS Clustering

상태: 만료


이 문장은 더 이상 최신이 아니다.본 문서의 업데이트를 작성하는 데 관심이 있으시면 DigitalOcean wants to publish your tech tutorial!
원인:
2016년 12월 22일, CoreOS는 더 이상 차량 팀을 유지하지 않겠다고 발표했다.CoreOS는 Kubernetes를 사용하여 모든 클러스터 요구 사항을 충족하는 것이 좋습니다.
다음을 참조하십시오.
함대가 없는 CoreOS에서 Kubernetes 사용에 대한 지침은 Kubernetes on CoreOS Documentation 을 참조하십시오.

소개


인프라에서 CoreOS를 사용할 계획이라면 먼저 CoreOS 클러스터를 설정해야 합니다.CoreOS 기기가 클러스터를 형성하기 위해서는 그것들etcd2의 실례를 연결해야 한다.이 강좌에서 우리는 어떻게 Digital Ocean에서 3 노드 CoreOS 군집을 신속하게 만드는지 점차적으로 설명할 것이다.

선결 조건


CoreOS를 구축하는 구성 요소 (docker, etcd2, fleet) 에 익숙하지 않으면, An Introduction to CoreOS System Components 를 읽는 것을 강력히 권장합니다.이 구성 요소는 집단 발견 과정에 매우 중요하기 때문에 특히 주의해야 합니다.

SSH 키


생성된 각 CoreOS 서버는 생성 과정에서 최소 하나의 SSH 키를 설치해야 합니다.키가 etcd2 사용자의 인증 키 파일에 설치되며, CoreOS 서버에 로그인하려면 적절한 개인 키가 필요합니다.
Digital Ocean 계정과 연결된 SSH 키가 없으면 이 강좌의 1~3단계에 따라 작업하십시오How To Use SSH Keys with DigitalOcean Droplets.그런 다음 다음 다음 명령을 실행하여 클라이언트 컴퓨터의 SSH 에이전트에 개인 키를 추가해야 합니다.
ssh-add
이 단계에 대한 자세한 내용은 this article 을 참조하십시오.

Digital Ocean 개인 액세스 토큰


Digital Ocean API를 사용하여 CoreOS 시스템을 만들 계획이라면 this tutorial 을 참조하여 쓰기 권한이 있는 개인 액세스 토큰을 생성하고 사용하는 방법을 알아보십시오.
지금 당신은 이미 선결 조건을 갖추었으니, 우리 코어OS 집단을 구축하기 시작합시다!

새 검색 URL 생성


새 CoreOS 클러스터를 설정하는 첫 번째 단계는 피어 CoreOS 주소와 메타데이터를 저장하는 유일한 주소인 새 검색 URL을 생성하는 것입니다.가장 간단한 방법은 사용core이다. 이것은 무료 발견 서비스다.웹 브라우저에서 액세스https://discovery.etcd.io/new하거나 다음https://discovery.etcd.io 명령을 실행하여 새 검색 URL을 생성할 수 있습니다.
curl -w "\n" "https://discovery.etcd.io/new?size=3"
어떤 방법으로든 다음과 유사한 새 고유 검색 URL을 반환합니다(강조 표시된 부분은 고유 태그가 됩니다).
https://discovery.etcd.io/5c1574906b3502aa9d8dc43c1b185775
생성된 검색 URL을 사용하여 새 CoreOS 클러스터를 생성합니다.특정 CoreOS 클러스터에 추가할 각 서버의 클라우드 구성curl 섹션에서 동일한 검색 URL을 지정해야 합니다.
이제 검색 URL이 하나 생겼습니다. 이 파일을 사용하는 etcd2 파일을 만드는 방법을 보여 드리겠습니다.

클라우드 프로필 쓰기


CoreOS는 cloud-config라는 파일을 사용합니다. 이 파일은 성명 방식으로 네트워크 설정, 시스템d 단위 및 기타 OS급 항목을 사용자 정의할 수 있습니다.이 파일은 데이터 계층 구조를 나타내는 들여쓰기를 사용하여 YAML 형식으로 작성됩니다.cloud-config 파일은 기계가 시작할 때 처리된 것으로 cloud-config 설정 기계를 사용하는 방법을 제공합니다. 이 설정들은 기계가 가입해야 할 집단을 발견할 수 있도록 합니다.
제대로 작동하는 CoreOS 클러스터를 시작하고 실행하기 위해 MINIMUMetcd2을 작성하는 방법을 소개합니다.클라우드 구성 구성을 사용할 수 있는 항목의 전체 목록은 official documentation 을 보십시오.클라우드 프로필의 문법 Cloud-Config Validator 을 검사할 수 있는 유용한 도구도 제공했다.

최소 클라우드 구성


앞에서 설명한 바와 같이 클러스터에 있는 각 CoreOS 시스템의 피어 주소는 검색 URL과 함께 저장됩니다.따라서 클러스터에 있는 각 컴퓨터는 동일한 검색 URL을 사용하여 자체 IP 주소를 전송하여 서비스 cloud-config 에 액세스해야 합니다.이것들은 etcd2 부분의 cloud-config 에 지정되어 아래의 코드 블록에 표시됩니다.
또한 CoreOS 클러스터 작업에 필요한 etcd2units 서비스를 시작하려면 etcd2 섹션을 지정해야 합니다.
다음은 CoreOS 시스템과 함께 사용할 수 있는 기본 fleet 파일로 새 클러스터 생성cloud-config의 값을 이전에 생성된 검색 URL로 대체합니다.
#cloud-config

coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new:
    discovery: https://discovery.etcd.io/<$><discovery_token><$>
    # multi-region deployments, multi-cloud deployments, and Droplets without
    # private networking need to use $public_ipv4:
    advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
    initial-advertise-peer-urls: http://$private_ipv4:2380
    # listen on the official ports 2379, 2380 and one legacy port 4001:
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://$private_ipv4:2380
  fleet:
    public-ip: $private_ipv4   # used for fleetctl ssh command
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start
주: discovery선이 필요합니다.Digital Ocean의 클라우드 구성에서는 #cloud-config$private_ipv4 대체 변수가 완전히 지원됩니다. 이 변수는 새 VP의 실제 IP 주소로 대체됩니다.또한 $public_ipv4 명령을 사용하지 않으려면 fleet 부분이 필요하지 않습니다.
fleetctl ssh 스크립트는 테스트 목적에 사용할 수 있는 기본 CoreOS를 설정하는 데 사용할 수 있습니다.불행히도 그것은 그리 안전하지 않다.보다 엄격한 설정을 하려면 본 강좌How To Secure Your CoreOS Cluster with TLS/SSL and Firewall Rules에 따라 안전한 CoreOS 클러스터를 설정해야 합니다.

CoreOS 클러스터 생성


이제 새 CoreOS 클러스터에 있는 각 기기의 cloud-config 파일이 어떻게 구성되는지 알고 CoreOS 클러스터를 만듭니다.물방울은 Digital Ocean 제어판이나 API를 통해 만들 수 있기 때문에 이 두 가지 방법으로 CoreOS 군집을 만드는 방법을 보여 드리겠습니다.

DigitalOcean 제어판


먼저 DigitalOcean Control Panel에 액세스한 다음 물방울 만들기 버튼을 클릭합니다.
다음은 Linux 릴리스로 CoreOS를 선택한 다음 사용할 채널(안정적, 베타 또는 알파)을 선택합니다.
그리고 필요한 액적 크기를 선택하세요.기본 테스트를 진행 중인 경우 작은 크기를 사용할 수 있습니다.
다음으로 데이터 센터 영역을 선택합니다.
추가 옵션 선택 제목에서 전용 네트워크 및 사용자 데이터를 선택합니다.cloud-config 스크립트를 사용자 데이터 텍스트 필드에 복사하여 붙여넣습니다.그래야 한다.

다음 Drops에 로그인할 SSH 키를 하나 이상 선택합니다.
Finalize andcreate 부분에서 최소한 세 개의 물방울을 만들고 호스트 이름을 지정합니다.우리의 예시에서 우리는 그것들을 코어os-01, 코어os-02, 코어os-03이라고 명명했다.

마지막으로 생성 버튼을 클릭하여 CoreOS 클러스터를 형성하는 물방울을 생성합니다.
물방울 생성 과정에 대한 자세한 내용은 Digital Ocean 제어판을 사용하십시오this guide.

DigitalOcean API


Digital Ocean API를 사용하여 CoreOS 물방울을 생성하는 경우 물방울 생성 후 요청된 cloud-config 매개 변수 지정cloud-config을 통해 전체 스크립트를 붙여넣기만 하면 됩니다.
만약에 우리가 NYC3 데이터 센터에서 코어os 안정 채널 이미지와 앞에 표시된 user_data 파일을 사용하여 코어os-01, 코어os-02, 코어os-03이라는 1GB 물방울을 만들고 전용 네트워크를 사용하려고 한다.다음은 DigitalOcean API 실행cloud-config 명령을 사용하여 생성한 예입니다.
curl -X POST "https://api./v2/droplets" \
      -d'{"names":["coreos-01","coreos-02","coreos-03"],"region":"nyc3","size":"1GB","private_networking":true,"image":"coreos-stable","user_data":
"#cloud-config

coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new:
    discovery: https://discovery.etcd.io/<$><discovery_token><$>
    # multi-region deployments, multi-cloud deployments, and Droplets without
    # private networking need to use $public_ipv4:
    advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
    initial-advertise-peer-urls: http://$private_ipv4:2380
    # listen on the official ports 2379, 2380 and one legacy port 4001:
    listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
    listen-peer-urls: http://$private_ipv4:2380
  fleet:
    public-ip: $private_ipv4   # used for fleetctl ssh command
  units:
    - name: etcd2.service
      command: start
    - name: fleet.service
      command: start",
      "ssh_keys":[ <SSH Key ID(s)> ]}' \
      -H "Authorization: Bearer $TOKEN" \
      -H "Content-Type: application/json"
주의: 이것은 일반적인 다액적 생성 요청과 유사하며, curl 파라미터를 통해 전달되는 예시cloud-config를 추가했다.
SSH 키 ID 또는 지문을 user_data 로 교체하고 <SSH Key ID(s)> 이 Digital Ocean 개인 액세스 토큰의 하나로 설정되어 있는지 확인해야 합니다.
적절한 교체를 사용하여 명령을 실행하면 3 노드 CoreOS 클러스터가 생성됩니다.
API 사용에 대한 자세한 내용은 this tutorial 을 참조하십시오.

클러스터 확인


3기 클러스터가 제대로 구성되었는지 확인하기 위해 SSH를 클러스터 구성원 중 한 명에게 전달해야 합니다.
SSH를 통해 $TOKEN 사용자로 코어os-01 컴퓨터에 로그인하고 core 옵션을 사용하여 SSH 에이전트를 전송합니다.공용 IP 주소 바꾸기 기억하기
ssh -A [email protected]coreos-01_public_IP
명령 프롬프트에서 이 -A 명령을 입력하여 클러스터의 모든 구성원을 표시합니다.
fleetctl list-machines
그룹에 있는 모든 온라인 컴퓨터의 목록을 보십시오. 각각의 IP 주소를 통해 식별할 수 있습니다.다음은 출력 예제입니다.
MACHINE		IP		METADATA
59b2fffd...	10.131.29.141	-
853b0df3...	10.131.63.121	-
cd64a2e3...	10.131.63.120	-
만약 당신이 만든 모든 기계를 보신다면, 모든 기계는 fleetctl 를 통해 서로 이해하고, 당신의 집단은 정확하게 형성되었습니다!
경고: 클러스터를 설정한 후 IPTables를 설정하여 CoreOS 클러스터 내 컴퓨터의 포트 4001 액세스를 제한하십시오.그러면 외부에서 승인되지 않은 사용자가 CoreOS 시스템을 제어하지 못하게 됩니다.생산 사용에 대해 당신은 this guide to securing a CoreOS cluster with TLS/SSL certificates and firewall rules 중의 절차를 따르는 것을 강력히 고려해야 합니다.

새 컴퓨터 추가


기존 CoreOS 클러스터에 새 시스템을 추가하려면 동일한 peer-addr (URL 검색) 을 사용하여 새 Droplet을 만들면 됩니다.새 CoreOS 컴퓨터가 자동으로 기존 클러스터에 추가됩니다.
검색 URL을 사용하지 않으면 그룹의 구성원 중 하나를 찾을 수 있습니다.기존 컴퓨터에서 다음 etcd2 명령을 사용합니다.
grep DISCOVERY /run/systemd/system/etcd2.service.d/20-cloudinit.conf
다음과 같이 원본 검색 URL이 포함된 행을 볼 수 있습니다.
Environment="ETCD_DISCOVERY=https://discovery.etcd.io/575302f03f4fb2db82e81ea2abca55e9"

결론


기본 CoreOS 클러스터가 구축되었으므로 테스트를 계속할 수 있습니다!안전한 CoreOS 클러스터를 설정하려면 이 강좌를 따르십시오How To Secure Your CoreOS Cluster with TLS/SSL and Firewall Rules.
이 시리즈의 나머지 강좌는 CoreOS에 대한 더 많은 정보와 CoreOS 집단에서 Docker 용기와 서비스를 사용하는 방법을 보여 줍니다.