毎度、ググっても出てこない小ネタを取り扱っております。
本記事は個人的な見解であり、筆者の所属するいかなる団体にも関係ございません。
0. はじめに
MicroK8s 便利です。何が便利かというと、Kubernetesのインストールが簡単、だけじゃなくて
Kubernetesのバージョンを気軽に変更したり、Kubernetes環境をリセットしてやり直したり、
いつのまにかjaegerとか、istioがコマンド1つで動かせるようになっていたり
と便利さ満点です。
ローカルのコンソールで使うというのが基本ですが、MicroK8sがインストールされているホストに対して
外部のクライアントからも当然接続できる(kubectlで利用したりも可)ので、お手軽に試す環境として利用できます。
MicroK8s自体がsnapで動くというのはまあ非常に微妙なところではありますが、ローカルループバックマウントは見ないでくださいというところがポイントです(苦笑)
1. MicroK8sのホストにkubectlで接続する構成
さて、本題です。
図にするほどでもないですが、以下のような構成になります。
リモート側にはkubectlコマンドを入れておいてください。
2. configをmicrok8s.configで出力する
MicroK8sがインストールされているローカルからのkubectlは認証なんて何それ?必要なの?ぐらいの勢いですが、外から接続する場合にはそうはいかないので.kube/configに書き込む設定をローカル側で出力します。
microk8s.configコマンドで設定が出力されますのでリダイレクトしてファイルに保存しましょう。
$ microk8s.config | tee microk8s-kube-config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
server: https://xx.xx.xx.xx:16443
name: microk8s-cluster
contexts:
- context:
cluster: microk8s-cluster
user: admin
name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
user:
username: admin
password: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
3. 2で作成したmicrok8s-kube-configファイルをリモート側に設定
microk8s-kube-configファイルをリモート側のkubectlを動かすホスト側にコピーして、既存のconfigファイルとマージしましょう。contextを設定してもいいですし、KUBECONFIGでファイルを指定してもOKです。
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ubuntu Ready <none> 15d v1.14.6