概要
EKSのクラスターに繋ぐように設定していたkubectlで以下のエラーが。
$ kubectl get pods
Unable to connect to the server: dial tcp: lookup [API サーバーエンドポイント]: no such host
そういえばkubeconfigを作成した後、EKSでそのクラスターが削除されてたのを思い出した。
やったこと
結論から言うと、kubeconfigを一旦作り直しました。
やったことには悪手も含まれているので、どういうエラーが返ってきたかは参考になると思いますがコピペは責任取れませんmm
現状把握
$ kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: [旧API サーバーエンドポイント]
name: [旧クラスター ARN]
contexts:
- context:
cluster: [旧クラスター ARN]
user: [旧クラスター ARN]
name: [旧クラスター ARN]
current-context: [旧クラスター ARN]
・
・
・
という感じで、kubectlくんが既に存在しないクラスターの情報を見に行ってるようです。
本来の手順としては
-
kubectl config delete-cluster hoge
で旧クラスターを削除 -
kubectl config delete-context fuga
で旧コンテキストも削除 -
kubectl config set-cluster spam
で新クラスターを登録 -
kubectl config set-context ham
で新コンテキストを登録 - ・
- ・
- ・
とか、まだあると思いますが、基本的にはそのように登録を進めていけばいいはずです。
私はここで、vimを使って~/.kube/config内のファイルを編集してしまい、よく分からん挙動になってしまいました。
詳しく書くと更に読者を混乱させるのでやめておきます。
kubeconfigを作成し直す
$ mv ~/.kube/config ~/Desktop
$ aws eks --region [リージョン] update-kubeconfig --name [新クラスター名]
Added new context [新クラスターのARN] to /Users/myname/.kube/config
実際にkubectlを打ち込むと正常に起動します。catでみても問題なさそう。
コマンドがあるのに我流でvimは良くないですね、自戒。