EKS 핸즈온 : 클러스터 생성

9226 단어 eksAWS

목차는 이쪽



EKS 핸즈온 : 목차

TL;DR



첫 번째 단계 EKS 클러스터를 만듭니다.
클러스터는 eksctl을 사용하여 생성됩니다.
클라이언트는 환경 의존성을 최대한 제거하기 위해 Cloud9를 사용합니다.

클라이언트 환경 정비



Cloud9 시작


  • 나는 오레곤 지역을 사용하고 있지만 Cloud9와 EKS가 제공되는 지역이라고 어디서나 좋다고 생각합니다.
  • 최근 업데이트와 인스턴스를 Amazon Linux 또는 Ubuntu에서 선택할 수 있게 된 것 같습니다만, Amazon Linux를 선택했습니다.
  • 인스턴스 유형은 T2.micro입니다.
    -에서 기존 VPC/Subnet도 선택할 수 있고, 신규 VPC도 만들 수 있습니다만, 외부에서 액세스 가능한 public subnet을 선택하면 어느 쪽이라도 좋다고 생각합니다.

  • 보충


  • 기본값으로 Cloud9에 할당된 IAM은 Cloud9를 만든 IAM 사용자의 권한이 할당됩니다.
  • 관리자 권한이 있는 IAM 사용자로 Cloud9를 생성하면 Cloud9의 모든 AWS 리소스에도 관리자 권한으로 액세스됩니다.
  • 즉, 어떠한 권한 에러가 나왔을 경우는, 자신의 IAM 유저의 권한이 부족하지 않을 것이므로, 거기를 확인할 필요가 있습니다.


  • Cloud9에 EKS 관련 도구 다운로드



    kubectl 설치



    클러스터 인증 관리 를 참고로 합니다.
    # 最新のバイナリでない可能性があるので、実行される場合はあその都度URLを確認したほうがいいと思います
    curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/linux/amd64/kubectl
    chmod +x ./kubectl
    mkdir $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
    echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
    
    #インストールされたことを確認します。タイミングによってはバージョンは異なるかもしれません
    kubectl version --short --client
    Client Version: v1.11.5
    
    

    aws-iam-authenticator 설치


    # 同様に上記リンクより、最新のURLを確認したほうがいいと思います
    curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/linux/amd64/aws-iam-authenticator
    chmod +x ./aws-iam-authenticator
    cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator && export PATH=$HOME/bin:$PATH
    echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
    
    #インストールされたことを確認します。
    aws-iam-authenticator help
    ## こんな感じでhelpが表示されればOKです
    A tool to authenticate to Kubernetes using AWS IAM credentials
    
    Usage:
      aws-iam-authenticator [command]
    
    Available Commands:
      help        Help about any command
      init        Pre-generate certificate, private key, and kubeconfig files for the server.
      server      Run a webhook validation server suitable that validates tokens using AWS IAM
      token       Authenticate using AWS IAM and get token for Kubernetes
      verify      Verify a token for debugging purpose
      version     Version will output the current build information
    
    Flags:
      -i, --cluster-id ID       Specify the cluster ID, a unique-per-cluster identifier for your aws-iam-authenticator installation.
      -c, --config filename     Load configuration from filename
      -h, --help                help for aws-iam-authenticator
      -l, --log-format string   Specify log format to use when logging to stderr [text or json] (default "text")
    
    Use "aws-iam-authenticator [command] --help" for more information about a command.
    
    

    eksctl 설치



    여기 를 참고했습니다.
    curl --silent --location "https://github.com/weaveworks/eksctl/releases/download/latest_release/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
    sudo mv /tmp/eksctl /usr/local/bin
    
    #インストールされたことを確認します
    eksctl --help
    a CLI for Amazon EKS
    

    EKS 클러스터 만들기


  • 클러스터 이름은 "test-cluster"입니다.
  • workder node(컨테이너가 일어나는 EC2)는 2대
  • 인스턴스 유형은 t2.large입니다.
    eksctl create cluster --name=test-cluster --node-type=t2.large --nodes=2
    # こんな感じの出力が表示されます
    [ℹ]  using region us-west-2
    [ℹ]  setting availability zones to [us-west-2a us-west-2b us-west-2d]
    [ℹ]  subnets for us-west-2a - public:192.168.0.0/19 private:192.168.96.0/19
    [ℹ]  subnets for us-west-2b - public:192.168.32.0/19 private:192.168.128.0/19
    [ℹ]  subnets for us-west-2d - public:192.168.64.0/19 private:192.168.160.0/19
    [ℹ]  nodegroup "ng-7bc19846" will use "ami-0923e4b35a30a5f53" [AmazonLinux2/1.12]
    [ℹ]  creating EKS cluster "test-cluster" in "us-west-2" region
    [ℹ]  will create 2 separate CloudFormation stacks for cluster itself and the initial nodegroup
    [ℹ]  if you encounter any issues, check CloudFormation console or try 'eksctl utils describe-stacks --region=us-west-2 --name=test-cluster'
    [ℹ]  2 sequential tasks: { create cluster control plane "test-cluster", create nodegroup "ng-7bc19846" }
    [ℹ]  building cluster stack "eksctl-test-cluster-cluster"
    [ℹ]  deploying stack "eksctl-test-cluster-cluster"
    [ℹ]  buildings nodegroup stack "eksctl-test-cluster-nodegroup-ng-7bc19846"
    [ℹ]  --nodes-min=2 was set automatically for nodegroup ng-7bc19846
    [ℹ]  --nodes-max=2 was set automatically for nodegroup ng-7bc19846
    [ℹ]  deploying stack "eksctl-test-cluster-nodegroup-ng-7bc19846"
    [✔]  all EKS cluster resource for "test-cluster" had been created
    [✔]  saved kubeconfig as "/home/ec2-user/.kube/config"
    [ℹ]  adding role "arn:aws:iam::748762807827:role/eksctl-test-cluster-nodegroup-ng-NodeInstanceRole-PBAU38LJJM31" to auth ConfigMap
    [ℹ]  nodegroup "ng-7bc19846" has 0 node(s)
    [ℹ]  waiting for at least 2 node(s) to become ready in "ng-7bc19846"
    [ℹ]  nodegroup "ng-7bc19846" has 2 node(s)
    [ℹ]  node "ip-192-168-26-104.us-west-2.compute.internal" is ready
    [ℹ]  node "ip-192-168-56-26.us-west-2.compute.internal" is ready
    [ℹ]  kubectl command should work with "/home/ec2-user/.kube/config", try 'kubectl get nodes'
    [✔]  EKS cluster "test-cluster" in "us-west-2" region is ready
    
    

    보충



    실제 상황은 CloudFormation이므로 관리 콘솔에서 확인하면 다음과 같이 리소스가 생성되었음을 알 수 있습니다.
    조금 시간이 걸리므로 완료할 때까지 기다리자.



    클러스터가 생성되었는지 확인



    [✔] EKS cluster "test-cluster"in "us-west-2"region is ready
    라는 것이 표시되면 작성 완료입니다. 즉시 확인합시다.
    # worker node を確認するコマンドを実行します
    kubectl get nodes
    NAME                                           STATUS    ROLES     AGE       VERSION
    ip-192-168-26-104.us-west-2.compute.internal   Ready     <none>    13m       v1.12.7
    ip-192-168-56-26.us-west-2.compute.internal    Ready     <none>    12m       v1.12.7
    
    #2台作成したので、ちゃんと2台作成されていますね
    
    

    요약



    cloud9의 시작 ~ EKS 클러스터 + worker node의 작성까지 실시했습니다.
    다음 기사에서는 실제로 컨테이너를 만들려고합니다.

    (선택 사항) 환경 삭제



    다음 기사를 쓸 때까지 환경을 시작하지 않으면 돈이 걸려 버리므로, 그것이 싫은 분(아마 모두?)은 환경을 삭제합시다. 필요할 때 다시 만들어야 합니다.
    # クラスターの削除コマンド
    eksctl delete cluster --name=test-cluster
    
    [ℹ]  using region us-west-2
    [ℹ]  deleting EKS cluster "test-cluster"
    [✔]  kubeconfig has been updated
    [ℹ]  2 sequential tasks: { delete nodegroup "ng-7c2bd618", delete cluster control plane "test-cluster" [async] }
    [ℹ]  will delete stack "eksctl-test-cluster-nodegroup-ng-7c2bd618"
    [ℹ]  waiting for stack "eksctl-test-cluster-nodegroup-ng-7c2bd618" to get deleted
    [ℹ]  will delete stack "eksctl-test-cluster-cluster"
    [✔]  all cluster resources were deleted 
    

    cloudformation 템플릿도 잠시 지나면 삭제됩니다.
    이를 위해 cloudformation의 관리 콘솔에서 리소스가 완전히 삭제되었는지 확인하는 것이 더 확실합니다.
    그런 다음 cloud9 삭제는 Cloud9 관리 콘솔에서 삭제할 수 있습니다.
    다만, 브라우저를 닫고 30분 후에 자동 정지하기 때문에, 무료 테두리가 남아 있는 경우는 거의 돈은 들지 않기 때문에, 그대로 두는 것도 있을까 생각합니다.
  • 좋은 웹페이지 즐겨찾기