MicroK8s
ナビゲーションに移動
検索に移動
| Kubernetes | Docker |
目次
MicroK8s
インストール
Macにインストール
- https://jp.ubuntu.com/blog/kubernetes-on-mac-how-to-set-up-jp
- https://microk8s.io/docs/install-alternatives#heading--macos
$ brew install ubuntu/microk8s/microk8s
- DriverをVirtualBoxに変更する場合、先に変更してから、install
$ 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 $ multipass exec microk8s-vm -- sudo microk8s kubectl -n kube-system describe secret $(multipass exec microk8s-vm -- sudo microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
- https://microk8s.io/docs/install-alternatives#heading--macos
- https://gihyo.jp/admin/serial/01/ubuntu-recipe/0560?page=2
- hyperkit
$ microk8s enable dashboard dns $ kubectl cluster-info Kubernetes master is running at https://127.0.0.1:16443 Metrics-server is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy CoreDNS is running at https://127.0.0.1:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy $ kubectl proxy Starting to serve on 127.0.0.1:8001
- multipass で動いているからNG
$ multipass exec microk8s-vm -- sudo microk8s kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8080:443 $ multipass exec microk8s-vm -- sudo microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard --address 0.0.0.0 10443:443 Forwarding from 0.0.0.0:10443 -> 8443 kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 8080:443 $ microk8s dashboard-proxy Checking if Dashboard is running. Dashboard will be available at https://192.168.64.2:10443 Use the following token to login: :
$ multipass sh microk8s ubuntu@microk8s-vm:~$$ vi dashboard-admin.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard namespace: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kubernetes-dashboard ubuntu@microk8s-vm:~$ sudo microk8s disable dashboard $ sudo microk8s kubectl create -f ./dashboard-admin.yaml clusterrolebinding.rbac.authorization.k8s.io/kubernetes-dashboard created
$ kubectl get service -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metrics-server ClusterIP 10.152.183.135 <none> 443/TCP 3m18s kubernetes-dashboard ClusterIP 10.152.183.224 <none> 443/TCP 3m17s dashboard-metrics-scraper ClusterIP 10.152.183.185 <none> 8000/TCP 3m17s kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 3m15s
- https://qiita.com/h-sakano/items/79bb15f7a0661e141c75
- https://github.com/kubernetes/dashboard/tree/master/docs
- https://github.com/kubernetes/dashboard/blob/master/docs/user/accessing-dashboard/README.md
- VirtualBox だと、IPV4がN/A
$ microk8s enable dashboard dns $ microk8s dashboard-proxy Checking if Dashboard is running. Dashboard will be available at https://N/A:10443 Use the following token to login: : Forwarding from 0.0.0.0:10443 -> 8443
$ multipass ls Name State IPv4 Image microk8s-vm Running N/A Ubuntu 18.04 LTS
$ sudo VBoxManage modifyvm microk8s-vm --natnet1 "192.168/16" $ sudo VBoxManage modifyvm microk8s-vm --natbindip1 "192.168.64.2"
- ダッシュボードのサービス確認
$ kubectl get services -n kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 6m50s metrics-server ClusterIP 10.152.183.186 <none> 443/TCP 6m32s kubernetes-dashboard ClusterIP 10.152.183.43 <none> 443/TCP 6m27s dashboard-metrics-scraper ClusterIP 10.152.183.234 <none> 8000/TCP 6m27s
- Ubuntuの場合、以下の kubernetes-dashboard へ直接ブラウザでアクセスすればOK
$ kubectl get services --namespace=kube-system NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE metrics-server ClusterIP 10.152.183.224 <none> 443/TCP 8h kubernetes-dashboard ClusterIP 10.152.183.188 <none> 443/TCP 8h dashboard-metrics-scraper ClusterIP 10.152.183.169 <none> 8000/TCP 8h kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 8h
Istio
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://microk8s.io/docs/working-with-kubectl
- https://qiita.com/imamura_sh/items/91208a9b30e701d1e7f2
$ cd ~/ $ mkdir .kube $ cd .kube $ microk8s config > config
ダッシュボードメモ
*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://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
クラスタリング
- https://microk8s.io/docs/clustering
- https://tech.virtualtech.jp/entry/2019/10/25/150802
- 2つ以上のすでに稼働しているMicoroK8sインスタンスにクラスタを作成するには、add-nodeコマンドを使用
- このコマンドが実行されたMicroK8sインスタンスが、クラスタのマスターとなり、Kubernetesコントロールプレーンをホストする
DriverをVirtualBoxに変更する
*現在選択されているドライバを確認する
$ sudo multipass get local.driver hyperkit
- hyperkitでは、ネットワークの公開ができなかったので、ドライバをVirtualBoxに変更
- https://multipass.run/docs/using-virtualbox-in-multipass-macos
$ 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
© 2006 矢木浩人