LoginSignup
0
0

More than 1 year has passed since last update.

せっかくAWS上に作ったk3sクラスタにローカルからアクセスしたいのだが、、、

Last updated at Posted at 2022-07-07

この間書いた記事で、AWS上にk3sクラスタを作ることができました。
AWSのインスタンスにログインしてからkubectlで操作してもよいのですが、せっかくなのでローカルのWindows端末からもアクセスしたいですよね。でも、どういうわけかてこずってしまいました。

1.準備

用意したインスタンス

サーバー用×3
名前:k3s-a,k3s-b,k3s-c
インスタンスタイプ:t3.large
ストレージ:20G
AMI:Debian 11を指定

エージェント用×1
名前:k3s-d
インスタンスタイプ:t2.micro
ストレージ:20G

  • 各インスタンスは、同じサブネットに所属するように設定しておきました。
  • セキュリティグループも各インスタンス同じものを設定しておきます。このセキュリティグループは、同じセキュリティグループに所属するインスタンスからは無制限にアクセスできるようにしておく必要があります

ソフトウェアのバージョン

k3s側
Debian GNU/Linux 11
k3s version v1.23.8+k3s1 (53f2d4e7)
go version go1.17.5
Windows端末側
Rancher Desktop 1.2.1
※kubectlはRancher Desktop付属のもの

2.インスタンスと繋がるようにする

ローカルのWindwosPCからAWSのインスタンスに繋がらなくては話になりません。AWSのコンソールで対象のインスタンスをクリックし、セキュリティグループを選び、、、
1.png
「インバウンドルールの編集」をクリックします。
2.png
自分のグローバルipアドレスからのインバウンドは、すべて受け付ける様に設定しました。横着して”すべてのトラフィック”を指定しましたが、本来は必要な6443ポートだけを追加する方がいいのかもしれません。
3.png
ルールを保存して終了です。ですが私の場合、直後にkubectlを使ってもどういうわけかunreachableと叱られてしまいました。一日たってもう一度試すと、何の問題もなく繋がったので、ひょっとしたら設定の変更に時間がかかるのでしょうか?わかりません。ここがてこずったポイントの一つ目でした。

3.kubectlを使ってみる

インスタンスk3s-aにログインして、k3s.yamlを確認し、何らかの方法でローカルPCにコピーしましょう(それこそGUI上のコピー&ペーストでも何でもよい)。

k3s-a
$sudo cat /etc/rancher/k3s/k3s.yaml
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyTlRZNE9USTJNVFl3SGhjTk1qSXdOekF6TWpNMU5qVTJXaGNOTXpJd05qTXdNak0xTmpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUyTlRZNE9USTJNVFl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUUXc4NjV2aHZ0ZWxvcmJPY3JaRkNRaEdxMXo1MUh2T1FDNWRGd1liNDEKa1dwcXNkZ1BtVFRCbmtUZTdWVkxCNW5tUjRDQ0FvRHVpSks1NVpxTGQ2MVBvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXRIL3ozNmo4T1dZOS95K3AwbGdQCklKRVdkL1F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnR24rSTVPQjNscENadThvdFN0QlY0cm54ZzN0UVhNcXEKNGhSZU9XS2tMUjRDSVFEeU1GcWxZT0tMMFVkWTVaUms3Mm9qSzRPY1l1ZytGRks2RWdoVFpQRTFTdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://127.0.0.1:6443
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJrRENDQVRlZ0F3SUJBZ0lJZlRmWjQ2VFlBOVV3Q2dZSUtvWkl6ajBFQXdJd0l6RWhNQjhHQTFVRUF3d1kKYXpOekxXTnNhV1Z1ZEMxallVQXhOalUyT0RreU5qRTJNQjRYRFRJeU1EY3dNekl6TlRZMU5sb1hEVEl6TURjdwpOREF3TlRrd09Wb3dNREVYTUJVR0ExVUVDaE1PYzNsemRHVnRPbTFoYzNSbGNuTXhGVEFUQmdOVkJBTVRESE41CmMzUmxiVHBoWkcxcGJqQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJKcUxhK3NnMENuQ3N4OGgKVENsV3B6ZEtvUXltamROY0dvQUNGeDZLS0w0bHBvWEdJbHJrbDJwZGhDc2RnWFpieHFDVjVtalA3Q25xazN5YQo5bi94V3UyalNEQkdNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RBakFmCkJnTlZIU01FR0RBV2dCUVhMUFBJVnZMTzMxUHZYbFd1eDRrUFVmNkFWREFLQmdncWhrak9QUVFEQWdOSEFEQkUKQWlCeEljRVZnLytKck50aWx2a3pKWElITkhsbmJWYitobFVtS2lnVHJhZjhtZ0lnTjZKcHFKU3FIVGxrcVdxWApib1NJZnV6Sys4VHZJOVJMeUNZUVlqUXYzc0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdFkyeHAKWlc1MExXTmhRREUyTlRZNE9USTJNVFl3SGhjTk1qSXdOekF6TWpNMU5qVTJXaGNOTXpJd05qTXdNak0xTmpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRZMnhwWlc1MExXTmhRREUyTlRZNE9USTJNVFl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFScXd0aFJFVCthenBNTm1HL1drZnVoVHE4RVVFWS9vZi9YSTFyeTdydGoKZnRZdHBNaWExOXRlWHRQejByWVVSZ2dabllueFBqUGpQRlVSRDRKd2RHUGRvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUZ5enp5RmJ5enQ5VDcxNVZyc2VKCkQxSCtnRlF3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUloQU0yN1ZjckNrWmJWV24rSlNyV3BEbXd1cXo1NEJ3MUkKUlMwR3JwYStnNjNaQWlCa283ZUZQQkJlYTAyM2doTnpFSXBTTW9XVGZWL3FqQi9yNkVlV0phUVF4UT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    client-key-data: LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUpRZzg2elR2OUVXUjRhaEFtSmlsS2xWbUFhK0Jjd1ppRnlIcEtlWS9sbGlvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFbW90cjZ5RFFLY0t6SHlGTUtWYW5OMHFoREthTjAxd2FnQUlYSG9vb3ZpV21oY1lpV3VTWAphbDJFS3gyQmRsdkdvSlhtYU0vc0tlcVRmSnIyZi9GYTdRPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=

k3s.yamlをローカルに用意出来たら、いよいよkubectlを使いたいのですが、

ローカル
$ kubectl --kubeconfig k3s.yaml get all
I0707 09:49:34.679235   42700 versioner.go:58] Get https://13.208.173.101:6443/version?timeout=5s: 
x509: certificate is valid for 10.43.0.1, 127.0.0.1, 13.208.186.206, 13.208.45.169, 15.152.36.55, 15.152.39.162, 172.31.42.76, 172.31.46.204, 172.31.47.52, ::1, not 13.208.xxx.xxx

末尾でnot 13.208.xxx.xxxと叱られてしまいました。13.208.xxx.xxxはインスタンスのパブリックアドレスですが、どうやらこの証明書はこのパブリックアドレスでは使えませんよ、と言われてしまってるようです。k3sの証明書は自己署名証明書でかつ動的に生成されます。
そこで、k3s.yamlに細工をします。

k3s.yaml(一部)
apiVersion: v1
clusters:
- cluster:
    #certificate-authority-dataをコメントアウト。削除でも可。
    #certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJkekNDQVIyZ0F3SUJBZ0lCQURBS0JnZ3Foa2pPUFFRREFqQWpNU0V3SHdZRFZRUUREQmhyTTNNdGMyVnkKZG1WeUxXTmhRREUyTlRZNE9USTJNVFl3SGhjTk1qSXdOekF6TWpNMU5qVTJXaGNOTXpJd05qTXdNak0xTmpVMgpXakFqTVNFd0h3WURWUVFEREJock0zTXRjMlZ5ZG1WeUxXTmhRREUyTlRZNE9USTJNVFl3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFUUXc4NjV2aHZ0ZWxvcmJPY3JaRkNRaEdxMXo1MUh2T1FDNWRGd1liNDEKa1dwcXNkZ1BtVFRCbmtUZTdWVkxCNW5tUjRDQ0FvRHVpSks1NVpxTGQ2MVBvMEl3UURBT0JnTlZIUThCQWY4RQpCQU1DQXFRd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVXRIL3ozNmo4T1dZOS95K3AwbGdQCklKRVdkL1F3Q2dZSUtvWkl6ajBFQXdJRFNBQXdSUUlnR24rSTVPQjNscENadThvdFN0QlY0cm54ZzN0UVhNcXEKNGhSZU9XS2tMUjRDSVFEeU1GcWxZT0tMMFVkWTVaUms3Mm9qSzRPY1l1ZytGRks2RWdoVFpQRTFTdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
    server: https://13.208.173.101:6443
    #insecure-skip-tls-verifyの一行を追加
    insecure-skip-tls-verify: true
  name: default
(以下略)

TLSによる認証を強制的にスキップしているという事に注意してください。
本来なら正式に証明書をk3sにインストールすべきでしょう(そこまで調査の手が回ってないのですが)

改めて挑戦。

ローカル
$ kubectl --kubeconfig k3s.yaml get all
NAME                                   READY   STATUS    RESTARTS        AGE
pod/nginx-deployment-9456bbbf9-4bns8   1/1     Running   2 (7m59s ago)   42h
pod/nginx-deployment-9456bbbf9-lnhkb   1/1     Running   2 (8m ago)      42h

NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
service/kubernetes   ClusterIP   10.43.0.1    <none>        443/TCP   3d

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   2/2     2            2           42h

NAME                                         DESIRED   CURRENT   READY   AGE
replicaset.apps/nginx-deployment-9456bbbf9   2         2         2       42h

今度はうまくいきました。k3s.yamlを細工する代わりに、以下でも同じ結果になります。

ローカル
kubectl --kubeconfig k3s.yaml get all --insecure-skip-tls-verify=true

4.参考文献

k3sを使う - 名有りさんの日記
このページを見つけられなければ解決しませんでした。御礼申し上げます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0