🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Amazon EKS

Amazon EKSは、コンテナ群を管理するマネージドサービスです。Kubernetesコントロールプレーンを独自で立ち上げ・維持せずにAWSで容易に実行できます。自動デプロイやスケーリング、アプリ・コンテナの管理を自動化するオープンソースのプラットフォームです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

3932閲覧

k8sクラスタを作成した翌日に利用できなくなる。

pokemonta

総合スコア170

Amazon EKS

Amazon EKSは、コンテナ群を管理するマネージドサービスです。Kubernetesコントロールプレーンを独自で立ち上げ・維持せずにAWSで容易に実行できます。自動デプロイやスケーリング、アプリ・コンテナの管理を自動化するオープンソースのプラットフォームです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2021/02/16 03:11

編集2021/02/16 04:41

EC2上でKubernetes Clustersを作成しました。
昨日作成して、今朝EC2で以下のコマンドを実行したところ
以下のエラーが発生いたします。

kubectl

1$ kubectl version 2Client Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"fda", GitTreeState:"clean", BuildDate:"2021-01-13T13:28:09Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"} 3error: You must be logged in to the server (the server has asked for the client to provide credentials) 4 5$ kubectl get all 6error: You must be logged in to the server (Unauthorized)

恐らくクラスタを作成したユーザと違うと認識されエラーが発生しています。
ただ、EC2に設定しているAWSの認証情報は、『user1』であり
昨日と変わらずこのユーザでクラスタを作成していました。
(cloudtrailのログからもuser1で設定されていることを確認しています。)
実際に以下のコマンドを実行するとちゃんとuser1が設定されています。

cli

1aws sts get-caller-identity 2{ 3 "UserId": "*****", 4 "Account": "*****", 5 "Arn": "arn:aws:iam::*****:user/user1" 6}

クラスタを作成したときにConfigMapを設定しましたが
そちらも問題ないように思えます。

apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapUsers: | - userarn: arn:aws:iam::*****:user/user1 username: user1 groups: - system:masters

以上のことから打ち手がなく困っています。
対応方法をご教示願います。

***追記***
構築手順を以下に示します。
EC2インスタンスを起動(amazon linux2)
EC2にログインして以下のコマンドを入力
・install kubectl
・install kops
・SSH鍵の生成
$ ssh-keygen
・AWS認証情報作成
$ aws configure
・kops用のS3バケットの作成
・k8sクラスタ構築
kops create cluster --name クラスタ名 --zones リージョン --yes
kops update cluster クラスタ名 --yes
構築完了。
kubectl get all
→podが作られていることを確認


翌日にkubectl get all実行
上記エラー発生。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/02/16 04:14

Kubernetesの知識がないのでざっくり調べてみると、EC2インスタンスの立ち上げ方あたりからいくつかやり方があるようなので、もうちょっと具体的な構築手順を示してみたらどうでしょうか。何を参考にしたか、具体的に実行したコマンドはなにか、など。それとも、過去の質問を一つ一つ調べ直しさせる手間を回答する人に求めますか?
pokemonta

2021/02/16 04:40

しつもんに追記いたしました。
guest

回答1

0

ベストアンサー

https://aws.amazon.com/jp/premiumsupport/knowledge-center/amazon-eks-cluster-access/

aws-authにはcluster creatorのIAM情報を記載しないのがベストプラクティスとなります。(記載しないでおけば、cluster creatorとしてdefaultで付与されているadmin権限がaws-auth設定による影響を受ける事が無いので、インシデント時のフェイルセーフとなります。)
aws-authの詳細情報が確認のとりようが無い為、推測でしかないのですが、

  • aws-authにcluster creatorのIAM情報を記載してしまっている
  • aws-authの記載が誤っている(bootstrapの記載が無い点がきになります)

以上のような状態の場合、永続的に外部アクセス不可になってしまっている可能性があります。
商用環境であれば、AWSサポートに問い合わせてみるのも良いかもしれません。
検証用であれば、一旦当該クラスターは削除し、eksの認証・認可の仕組みをもう少し詳しく調べて再構築し方が良いかと思われます。

あと、考えられる可能性としては
接続元のkubectl configの接続先設定情報が誤っている可能性もあります。
eksの場合は
aws eks --region <region> update-kubeconfig --name <cluster-name>
上記コマンドを打鍵してcontext情報を追加すれば、aws-authの設定、及びIAM情報が適切な場合、原則として問題無く接続可能なはずです。

投稿2021/02/20 11:38

編集2021/02/20 11:47
fenethtool

総合スコア68

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問