Dream Driven Development。夢を形にしよう!

microk8sのセットアップが簡単すぎる 自宅Kubernetes環境はこれでおk

microk8sのセットアップが簡単すぎる
自宅Kubernetes環境はこれでおk


Kubernetesの自宅環境へのインストールは下記記事のように何かと面倒だったのですが

Kubernetes + CRI-O
インストール-Dream Driven Development(夢駆動開発)
Kubernetes + CRI-O インストール-Dream Driven Development(夢駆動開発)
クラウド環境の勉強と開発環境のセットアップを兼ねてKubernetesをインストール&セットアップします。 dockerをコンテナに使った情報ばかり出回ってますが、この記事では次世代を担うと思われる(個人的に)CRI-Oをコンテナ:Kubernetes + CRI-O インストール

Ubuntuがmicrok8sというパッケージを作ってさらにawsがそれに乗っかってeks-distroなんてものを作ったりして、簡単に環境を作成できるようになりました(そのかわりに、いろいろな部分が決め打ちの構成になっています。)
minikubeは使ったこと無いですが、きっとそれより簡単で最新です。使ってみましょう!

基本的な情報は以下のサイトに丁寧に書かれています。
web Install a local Kubernetes with MicroK8s Ubuntu

じゃぁ、この記事の存在意義は?笑

用意する環境

microk8sはlinuxマシン1台あればインストールできます。
今回は2台用意して、片方をworkerノードとして登録して使おうと思います。

インストール

snapコマンドでインストールしていきます。

worker1:~$ sudo snap install microk8s --classic --channel=latest/stable
microk8s v1.20.1 from Canonical✓ installed

簡単すぎる

お前にはちょうどいいよ笑

さらに現在のユーザーで操作できるようにgroupに追加しておきます。
これを行っておかないと権限が無いというエラーがでて面倒です。

エラーメッセージ例(heisakuというのが僕のユーザ名):
Insufficient permissions to access MicroK8s.
You can either try again with sudo or add the user heisaku to the 'microk8s' group:

グループへの追加は以下のコマンドです。

worker1:~$ sudo usermod -a -G microk8s heisaku
worker1:~$ sudo chown -f -R heisaku ~/.kube

設定後再ログインして有効化してください。

複数ノード(マスター+Worker)構成にする時は、ここまでの作業をworker側でも行っておきます。

ついでにアドオン(add-on)機能も用意されているのでいくつか入れましょう。

worker1:~$ microk8s enable dns dashboard storage registry

add-onの種類はたくさんあります。以下のコマンドで現在使用しているadd-on、使用していないadd-onのリストをみることができます。

worker1:~$ microk8s status
microk8s is running
:
:
addons:
  enabled:
    dashboard            # The Kubernetes dashboard
    dns                  # CoreDNS
    ha-cluster           # Configure high availability on the current node
    metrics-server       # K8s Metrics Server for API access to service metrics
    registry             # Private image registry exposed on localhost:32000
    storage              # Storage class; allocates storage from host directory
  disabled:
    ambassador           # Ambassador API Gateway and Ingress
    cilium               # SDN, fast with full network policy
    fluentd              # Elasticsearch-Fluentd-Kibana logging and monitoring
    gpu                  # Automatic enablement of Nvidia CUDA
    helm                 # Helm 2 - the package manager for Kubernetes
    helm3                # Helm 3 - Kubernetes package manager
    host-access          # Allow Pods connecting to Host services smoothly
    ingress              # Ingress controller for external access
    istio                # Core Istio service mesh services
    jaeger               # Kubernetes Jaeger operator with its simple config
    keda                 # Kubernetes-based Event Driven Autoscaling
    knative              # The Knative framework on Kubernetes.
    kubeflow             # Kubeflow for easy ML deployments
    linkerd              # Linkerd is a service mesh for Kubernetes and other frameworks
    metallb              # Loadbalancer for your Kubernetes cluster
    multus               # Multus CNI enables attaching multiple network interfaces to pods
    portainer            # Portainer UI for your Kubernetes cluster
    prometheus           # Prometheus operator for monitoring and logging
    rbac                 # Role-Based Access Control for authorisation
    traefik              # traefik Ingress controller for external access

動作確認

本当に動いているか確認しましょう。
microk8sではkubectlの前にmicrok8sと打たないといけないので少々面倒です。

worker1:~$ microk8s kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
worker1   Ready    <none>   11m   v1.20.1-34+e7db93d188d0d1

そこで、.bash_aliasesにmicrok8sと入力しなくて良いように設定しておきます。

#.bash_alases
alias kubectl='microk8s kubectl'

再ログインして反映させます。

heisaku@worker1:~$ kubectl get all -A
NAMESPACE            NAME                                             READY   STATUS    RESTARTS   AGE
kube-system          pod/calico-kube-controllers-847c8c99d-w9w27      1/1     Running   0          17m
kube-system          pod/metrics-server-8bbfb4bdb-5kk6t               1/1     Running   0          7m43s
kube-system          pod/coredns-86f78bb79c-sqgrn                     1/1     Running   0          8m1s
:
:

worker node追加

worker1と同様にworker2にもmicrok8sをインストールします。(addonは入れませんでした)

worker2:~$ sudo snap install microk8s --classic --channel=latest/stable
microk8s v1.20.1 from Canonical✓ installed
worker2:~$ sudo usermod -a -G microk8s heisaku
worker2:~$ sudo chown -f -R heisaku ~/.kube

worker1(マスター)でadd-nodeコマンドで追加のためのインストラクションを表示させます。

worker1:~$ microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 192.168.0.xx:25000/76b492db3f3......
:

worker2側で、表示されたコマンドを実行してjoinします。

worker2:~$ microk8s join 192.168.0.xx:25000/76b492db3f3......
Contacting cluster at 192.168.0.xx
Waiting for this node to finish joining the cluster. ..

worker1から見えるようになったか確認しましょう。

heisaku@worker1:~$ kubectl get nodes
NAME      STATUS   ROLES    AGE    VERSION
worker1   Ready    <none>    4h    v1.20.1-34+e7db93d188d0d1
worker2   Ready    <none>   50s    v1.20.1-34+e7db93d188d0d1

できました!

まとめ

たったこれだけでkubernetes環境が手に入ってしまいます。簡単ですね。
インストールに時間を取られるより、開発に時間をかけたいですからこういうのは大歓迎ですね。

enjoy!

|

お気に入りサイト