追記
本記事の内容で、「2.本エラーが発生する要因」と「3.解決方法」の②/③の解決方法について、誤りがありました。自分の勉強不足で、嘘を記載してしまい、申し訳ありません。
誤った内容については、取り消し線で全て削除させてもらいました。
おうちkubernetesの構築した記録の番外編となります。
今回は、kubernetes構築時にハマったところと、その解決方法について記載します。
環境
S/W
- OS : Ubuntu22.04
- docker : 20.10.12
- kubernetes : 1.24.1
- terterm :4.106
H/W
- 本体 :rasberry Pi4 8GB × 2
- ルータ :LINKSYS 5PORT
- SDカード :64GB
1.ハマりポイント
・masterノードの設定時、「kubeadm init」処理後、kubectlコマンドを実行しようとしても、以下のエラーが発生し、実行されない。
The connection to the server localhost:8080 was refused - did you specify the right host or port?
本エラーの意味は
サーバーlocalhost:8080への接続が拒否されました-正しいホストまたはポートを指定しましたか?
となります。
2.本エラーが発生する要因
1)本エラーが発生する要因としては、
①kubectlの実行権限が設定できていない。(実行しようとしているユーザが指定されていない。)
②kubeletが壊れている。
があげられます。
次に、その解決方法を記載します。
3.解決方法
1)kubectlの実行権限が設定できていない。
kubernetesの権限は、実行するユーザで、設定する箇所が変わってきます。
①rootでkubectlを実行する場合
②super userで実行する場合
③ローカルユーザで実行する場合
それぞれの実行権限の設定方法を記載します。
①rootでkubectlを実行する場合
この場合は、/.bashrcファイルの最後に、以下の一文を追加します。
export KUBECONFIG=/etc/kubernetes/admin.conf
その後、「source /.bashrc」コマンドで、bashrcの内容を反映させます。
以上で、rootユーザの権限設定は完了となります。
②super userで実行する場合
この場合は、以下のファイルを編集する必要があります。
$ $HOME/etc/kubernetes/admin.conf
本ファイルの内容は、以下の通りとなります。
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakN>
server: https://192.168.2.119:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQW>
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0>
ここで、注意する点としては、下から5行目のusersの内容となります。
この中の、「name:」の内容が、kuernetes-adminとなっていますが、ここで、「kubectl」を実行するユーザが指定されています。
ここを、実行したいユーザ名に変更します。
そして、「kubernetes-admin」と記載されいる箇所すべてを、そのユーザ名に変更します。
以下のような感じ
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMvakN>
server: https://192.168.2.119:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: <変更したユーザ名>
name: <変更したユーザ名>@kubernetes
current-context: <変更したユーザ名>@kubernetes
kind: Config
preferences: {}
users:
- name: <変更したユーザ名>
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURJVENDQW>
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0>
合計で、4か所修正します。
これで、super userでの実行が可能となります。
③ローカルユーザで実行する場合
これも「②super userで実行する場合」とやることは同じですが、編集するファイルが異なります
super userでの実行権限を付与する際は、以下のファイルを編集する必要がありました。
$ $HOME/etc/kubernetes/admin.conf
しかし、ローカルユーザでkubectlを実行したい場合は、
$ $HOME/.kube/config
ファイルを編集する必要があります。
編集内容は、「②super userで実行する場合」と全く同じとなります。
これで、ローカルユーザでのkubectlの実行が可能となります。
2)kubeletが壊れている。
この場合は、以下のコマンドを実行し、kubeletを再起動させてください。
sudo systemctl restart kubelet
これで、kubeletの再起動が完了するので、再度、kubectlコマンドを実行してみてください。
以上で、kubernetes構築記は終了となります。