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

MyMemoWiki

MicroK8s

提供: MyMemoWiki
2020年11月13日 (金) 11:51時点におけるPiroto (トーク | 投稿記録)による版 (→‎クラスタリング)
ナビゲーションに移動 検索に移動

| Kubernetes | Docker |

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 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

クラスタリング

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

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

クラスタリング(Try)

$ microk8s.enable dashboard dns storage

$ multipass list
Name                    State             IPv4             Image
microk8s-vm             Running           192.168.64.2     Ubuntu 18.04 LTS
delhi:~ hirotoyagi$ multipass shell

$ multipass exec microk8s-vm  -- sudo iptables -P FORWARD ACCEPT

$ microk8s add-node
From the node you wish to join to this cluster, run the following:
microk8s join 192.168.0.47:25000/8d0a8aefaa574545524af88c13a36647

If the node you are adding is not reachable through the default interface you can use one of the following:
 microk8s join 192.168.0.46:25000/8d0a8aefaa574545524af88c13a36647
 microk8s join 192.168.0.47:25000/8d0a8aefaa574545524af88c13a36647
 microk8s join 192.168.122.1:25000/8d0a8aefaa574545524af88c13a36647
 microk8s join 172.17.0.1:25000/8d0a8aefaa574545524af88c13a36647
 microk8s join 10.1.220.128:25000/8d0a8aefaa574545524af88c13a36647
  • add-node コマンドは、 microk8s joinコマンドでジョインしたいクラスタをMicroK8sで 実行すべきコマンドを出力する
  • add-nodeを実行したマスター側で出力されたコマンドを、参加させたいワーカーノード側で実行する


$ multipass info --all
Name:           microk8s-vm
State:          Running
IPv4:           192.168.64.2
Release:        Ubuntu 18.04.5 LTS
Image hash:     9fdd8fa3091b (Ubuntu 18.04 LTS)
Load:           0.92 1.13 0.77
Disk usage:     6.0G out of 48.3G
Memory usage:   674.4M out of 3.9G

$ multipass ls
Name                    State             IPv4             Image
microk8s-vm             Running           192.168.64.2     Ubuntu 18.04 LTS

Mac問題

  • https://discourse.ubuntu.com/t/troubleshooting-networking-on-macos/12901#arp-problems
  • macOS ブリッジは、hyperkit フィルターパッケージを使用しているので、IPアドレスは、元々VMに割り当てられたもののみ通過が許可される。もし追加のアドレスをVMに追加する場合、ARPブロードキャストは通過するが、ARP応答はフィルタリング除外される
  • これが意味するのは、追加されたIPアドレスをあてにするアプリケーション、metallb 7 (microk8sのロードバランサー) は動作しない
  • /Library/Preferences/SystemConfiguration/com.apple.vmnet.plist という設定ファイルにVMのサブネットのアドレス設定があります。

https://microk8s.io/docs/high-availability https://askubuntu.com/questions/1263043/cannot-access-an-ubuntu-guest-vm-running-under-multipass-on-an-ubuntu-host-from https://qiita.com/ynott/items/be8810f83d1db6f4540b https://discourse.ubuntu.com/t/troubleshooting-networking-on-macos/12901