| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

MicroK8s

提供: MyMemoWiki
2020年11月14日 (土) 13:25時点におけるPiroto (トーク | 投稿記録)による版 (→‎ダッシュボード)
ナビゲーションに移動 検索に移動

MicroK8s

インストール

Macにインストール

$ brew install ubuntu/microk8s/microk8s
$ microk8s install

Macネットワークトラブルシュート

Ubuntuにインストール

$ sudo snap install microk8s --classic

ステータスの確認

$ microk8s status --wait-ready
microk8s is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
addons:
  enabled:
    ha-cluster           # Configure high availability on the current node
  disabled:
    ambassador           # Ambassador API Gateway and Ingress
    cilium               # SDN, fast with full network policy
    dashboard            # The Kubernetes dashboard
    dns                  # CoreDNS
    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
    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
    metrics-server       # K8s Metrics Server for API access to service metrics
    multus               # Multus CNI enables attaching multiple network interfaces to pods
    prometheus           # Prometheus operator for monitoring and logging
    rbac                 # Role-Based Access Control for authorisation
    registry             # Private image registry exposed on localhost:32000
    storage              # Storage class; allocates storage from host directory


サービスの有効化/無効化

  • 組み込みで有効化可能なアドオンサービスの確認
  • サービスを無効化する場合は、disable
$ microk8s enable --help
  • サービスを有効化する
$ microk8s enable dashboard dns registry istio

ダッシュボード

$ microk8s enable dashboard dns registry istio
$ microk8s dashboard-proxy

Kubectl

  • MicroK8s は専用のバージョンのkubrctlをバンドルしている。
  • コマンドを監視と制御のために実行することができる。
$ microk8s kubectl get all --all-namespaces
NAMESPACE            NAME                                             READY   STATUS              RESTARTS   AGE
kube-system          pod/calico-node-m9j8n                            1/1     Running             0          90m
kube-system          pod/metrics-server-8bbfb4bdb-679mc               1/1     Running             0          7m38s
            :
  • MicroK8s は、すでにインストール済みのkubectlとの衝突を防ぐためにネームスペースを指定したkubectlコマンドを使用する
  • もしインストール済みの物がないのであれば、簡単にエイリアスを指定できる
  • ~/.bash_aliases に以下を記載
alias kubectl='microk8s kubectl'
  • ~/.bash_profile に以下を追記
if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

https://hondou.homedns.org/pukiwiki/index.php?k8s%20microK8s

$ token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
$ microk8s kubectl -n kube-system describe secret $token
$ microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443

https://127.0.0.1:10443

コマンド

https://microk8s.io/docs/commands

コマンド 内容
microk8s add-node クラスタへの接続文字列を生成
microk8s config
microk8s ctr
microk8s dbctl
microk8s disable
microk8s enable
microk8s inspect
microk8s join
microk8s kubectl
microk8s leave
microk8s refresh-certs
microk8s remove-node
microk8s reset ノードを初期状態にリセット
microk8s start 停止されたノードを開始
microk8s status ステータス情報を表示
microk8s stop カレントノードの停止

はじめに

  • Kubernetes は、appやserviceをデプロイするためにあるので、kubecltでそれらをKubernetesに対して行うことができる
  • デモアプリをインストールしてみる
$ kubectl create deployment nginx --image=nginx
  • 確認
$ kubectl get pods

アドオンの使用

  • MicroK8s は最低限のコンポーネントを使用するが、豊富な機能が "add-ons" とタイプすることで利用できる
  • サービス間の連携を容易にするDNS管理、 アプリケーションがストレージが必要な場合、'storage' アドオンはホストに直接領域を提供する。これらは簡単にセットアップできる
$ microk8s enable dns storage

アドオンの一覧

開始と終了

  • MicroK8sは、停止するまで実行し続ける。停止と開始は、以下のコマンド。
$ microk8s stop
$microk8s start

ダッシュボード

クラスタリング

DriverをVirtualBoxに変更する

*現在選択されているドライバを確認する

$ sudo multipass get local.driver
hyperkit
$ sudo multipass set local.driver=virtualbox
$ sudo VBoxManage list vms
Password:
"microk8s-vm" {d90718db-3795-4116-825f-cffe4a2f0fea}

VirtualBoxのNetwork Bridgeを構成する

$ VBoxManage list bridgedifs | grep ^Name:
Name:            en0: Wi-Fi (AirPort)
Name:            en1: Thunderbolt 1
Name:            bridge0
Name:            p2p0
Name:            awdl0
Name:            llw0

$ sudo VBoxManage modifyvm microk8s-vm --nic2 bridged --bridgeadapter2 en0
  • インスタンスを立ち上げて新しいNICの名前(enp0s8)を得る
$ multipass exec microk8s-vm -- ip link | grep DOWN
3: enp0s8:  mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
  • 新しいNIC(enp0s8)の設定
$ multipass exec microk8s-vm -- sudo bash -c "cat > /etc/netplan/60-bridge.yaml" <<EOF
network:
  ethernets:
    enp0s8:                  # this is the interface name from above
      dhcp4: true
      dhcp4-overrides:       # this is needed so the default gateway
        route-metric: 200    # remains with the first interface
  version: 2
EOF

$ multipass exec microk8s-vm -- sudo netplan apply
  • ipアドレスを確認
$ multipass exec microk8s-vm -- ip address show dev enp0s8 up    
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:3a:92:dd brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.40/24 brd 192.168.0.255 scope global dynamic enp0s8
       valid_lft 86331sec preferred_lft 86331sec
    inet6 2402:6b00:3666:5800:a00:27ff:fe3a:92dd/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 266sec preferred_lft 266sec
    inet6 fe80::a00:27ff:fe3a:92dd/64 scope link 
       valid_lft forever preferred_lft forever

マルチノードクラスタの構成

  • 構成コマンドの生成
$ microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 10.0.2.15:25000/136ac2967078d5490de2d1a2d3a8bf52

If the node you are adding is not reachable through the default interface you can use one of the following:
 microk8s join 10.0.2.15:25000/136ac2967078d5490de2d1a2d3a8bf52
 microk8s join 192.168.0.40:25000/136ac2967078d5490de2d1a2d3a8bf52
  • 生成されたコマンドを実行
$ microk8s join 192.168.0.47:25000/1c3d59551648b6da13ccbca9cf1a0fad
Contacting cluster at 192.168.0.47
Waiting for this node to finish joining the cluster. ..  
delhi:~ hirotoyagi$ kubectl get node
NAME          STATUS   ROLES    AGE     VERSION
jinmu         Ready    <none>   3d16h   v1.19.3-34+a56971609ff35a
microk8s-vm   Ready    <none>   17s     v1.19.3-34+9e8b6537ec8b6f