Kopsを使用してKubernetesクラスターを作成する方法

この記事では、kopsを使用して、アマゾンウェブサービスに本番環境グレードのKubernetesクラスターをインストールします。 このガイドでは、AWSアカウントを持っていることを前提としています。 また、kubectlをインストールする必要があります。以前のKubernetesの記事のいずれかに従っている場合は、おそらくすでにインストールされています。 そうでない場合は、awscliなどの他の依存関係とともにインストール手順をここで提供します。

kubectl、kops、awscliバイナリのインストール

kubectlをフェッチしてゲームを開始しましょう

curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl 

sudo mv kubectl /usr/local/bin/

次に、kopsバイナリを取得します

wget https://github.com/kubernetes/kops/releases/download/1.7.0/kops-linux-amd64

chmod +x kops-linux-amd64

sudo mv kops-linux-amd64 /usr/local/bin/kops

次に、Pythonのパッケージマネージャーであるpipを使用してawscliをインストールする必要があります。 明らかにPythonをインストールする必要があります。

sudo pip install awscli

awscliの構成

awscliを使用するには、AWSアカウントのアクセスキーが必要です。 あなたは方法を参照することができます ルートAWSアクセスキーを作成する ドキュメンテーション。

一度やれば、設定部分に移ります

aws configure

次に、プロンプトを次のように操作します

AWS Access Key ID [None]: youraccesskeyID
AWS Secret Access Key [None]: yourSecretAccessKey

Default region name [None]: us-west-2
Default output format [None]:

これらのキーも後で必要になるため、環境変数に出力する必要があります。

export AWS_ACCESS_KEY_ID=youraccesskeyID
export AWS_SECRET_ACCESS_KEY=yourSecretAccessKey

これらの行を〜/ .bashrcに追加し、source〜 / .bashrcコマンドを実行して、再起動後もそのままにしておくこともできます。 ただし、コンピュータを使用するすべての人がこれらのキーを取得できることに注意してください。

次に、グループとユーザーのkopsを作成し、必要な権限を付与して、kopsが問題なく動作できるようにします。

aws iam create-group --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops

aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops

aws iam create-user --user-name kops

aws iam add-user-to-group --user-name kops --group-name kops

そして最後に、kopsユーザーのアクセスキーを作成します

aws iam create-access-key --user-name kops

次のコマンドでいつでもIAMユーザーを確認できます

aws iam list-users

クラスターの作成

クラスタを作成するには、さらに環境変数を追加する必要があります。 NAMEはクラスターの名前になります。DNS設定は行わないため、ゴシップベースのDNSを使用します。そのクラスター名は、k8s.localで終わる必要があり、その前にほとんど何でも入力できます。

export NAME=cluster.k8s.local

次に、クラスターのawsバケットを作成し、kopsが状態ストアに使用する変数を作成する必要があります。

aws s3api create-bucket --bucket ${NAME}-state

export KOPS_STATE_STORE=s3://cluster.k8s.local-state

次に、実際にクラスターを作成します。 t2.microインスタンスは無料利用枠の対象であるため、使用します。無料利用枠にサインアップした場合(私のように)、無料で合格できます。 それ以外の場合、AWSはあなたにいくらかのお金がかかります。

kops create cluster 
 --name=${NAME} 
 --zones=us-west-2a 
 --master-size="t2.micro" 
 --node-size="t2.micro" 
 --node-count="3" 
 --ssh-public-key="~/.ssh/id_rsa.pub"

この後、新しいクラスターの構成ファイルを取得します。

このコマンドで編集できます。 デフォルトのエディターを使用します。これは、$ EDITOR変数を変更することで変更できます。

kops edit cluster ${NAME}

yamlファイルを確認した後、次のコマンドを使用してクラスターの作成にコミットできます。

kops update cluster ${NAME} --yes

この後、あなたはいくつかの待機中です

次のコマンドは、クラスターの準備ができたことを示します。

kops validate cluster

ノードが初期化されるまで、おそらく数回それを行う必要があります。 準備ができたときのクラスターは次のようになります。

一部のアプリのデプロイ

手始めに、ダッシュボードをインストールできます。

kubectl create -f https://git.io/kube-dashboard

次のコマンドでダッシュボードを使用できます。

kubectl proxy

次に、古き良き靴下屋のマイクロサービスのデモをインストールします。

kubectl apply -n sock-shop -f "https://github.com/microservices-demo/microservices-demo/blob/master/deploy/kubernetes/complete-demo.yaml?raw=true"

kubectl -n sock-shop get svc front-end

あなたはこれに似たものを手に入れるでしょう

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
 front-end 100.66.88.111 <nodes> 80:30001/TCP 35m

この場合、探しているのはポート30001です。 マスターサーバーの場合、このポートをIPと一致させる必要があります。 AWSセキュリティグループでこのポートへのインバウンドトラフィックを許可する必要があります。

次に、ipとportからURLを作成すると、sock-shopサイトを取得する必要があります。

クラスターの使用が終了したら、次のコマンドを使用してクラスターの削除をプレビューできます。

kops delete cluster --name ${NAME}

そして実際にこれでそれを削除します:

kops delete cluster --name ${NAME} --yes

次の記事でこのクラスターでkube-promptを使用するため、まだ削除しません。 これで、Kopsを使用した本番環境グレードのkubernetesクラスターの作成に成功した後、この記事を終了します。 KopsはKubernetesOperationsの略で、AWSにデプロイしている限り、操作が簡単になります。 Googleが必要な場合 Cloud エンジン、ベアメタルまたはプライベートOpenStack Cloud、それならAnsibleベースのKubesprayはあなたのためのものであり、次の記事のいくつかでそれを紹介します。

また読む:

  • 無料の電子ブックKubernetesEssentials-初心者向けのチュートリアル