Ubuntu22.04にmicrok8sをインストールする手順を紹介します。
microk8sインストール
- インストール
- microk8sグループにユーザadmin追加
- microk8sの起動
- 必要なプラグインを有効にする
- kubectlを実行すればmicrok8s.kubectlが実行されるようにalias設定
- nginxを3つのレプリカで起動する
- 起動確認
- イメージ図
$ snap info microk8s -microk8sパッケージ情報確認
$ sudo snap install microk8s --channel latest/stable --classic -microk8s安定版インストール
microk8s v1.32.3 from Canonical✓ installed
$ sudo microk8s version
MicroK8s v1.32.3 revision 7977
$ cat /etc/group | grep microk8s -microk8sグループ存在確認
microk8s:x:1004:
$ sudo usermod -a -G microk8s admin -adminユーザをmicrok8sグループに追加
$ cat /etc/group | grep microk8s -グループ追加結果確認
microk8s:x:1004:admin
$ newgrp microk8s -microk8sグループに切替
$ microk8s start
$ microk8s status --wait-ready -microk8s起動完了待機
microk8s is running
high-availability: no
datastore master nodes: 127.0.0.1:19001
datastore standby nodes: none
addons:
enabled:
dns # (core) CoreDNS
ha-cluster # (core) Configure high availability on the current node
helm # (core) Helm - the package manager for Kubernetes
helm3 # (core) Helm 3 - the package manager for Kubernetes
disabled:
cert-manager # (core) Cloud native certificate management
cis-hardening # (core) Apply CIS K8s hardening
community # (core) The community addons repository
dashboard # (core) The Kubernetes dashboard
host-access # (core) Allow Pods connecting to Host services smoothly
hostpath-storage # (core) Storage class; allocates storage from host directory
ingress # (core) Ingress controller for external access
kube-ovn # (core) An advanced network fabric for Kubernetes
mayastor # (core) OpenEBS MayaStor
metallb # (core) Loadbalancer for your Kubernetes cluster
metrics-server # (core) K8s Metrics Server for API access to service metrics
minio # (core) MinIO object storage
observability # (core) A lightweight observability stack for logs, traces and metrics
prometheus # (core) Prometheus operator for monitoring and logging
rbac # (core) Role-Based Access Control for authorisation
registry # (core) Private image registry exposed on localhost:32000
rook-ceph # (core) Distributed Ceph storage using Rook
storage # (core) Alias to hostpath-storage add-on, deprecated
$ ll ~/.kube - .kubeディレクトリが作成されていること
total 12
drwxr-x--- 3 admin microk8s 4096 Aug 17 17:03 ./
drwxr-x--- 6 admin admin 4096 Aug 17 17:03 ../
drwxr-x--- 4 admin microk8s 4096 Aug 17 17:03 cache/
$ sudo chown -R admin ~/.kube -権限変更、所有者を再起的にrootから一般ユーザに変える ※既に所有者がadminなので不要
停止するときは、
$ microk8s stop
$ microk8s enable dns -DNS機能有効化
$ microk8s enable hostpath-storage -ローカルストレージ有効化
$ microk8s enable dashboard -Web管理画面有効化
$ sudo snap alias microk8s.kubectl kubectl -kubectlエイリアス設定
Added:
- microk8s.kubectl as kubectl
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
ras4 Ready 161m v1.32.3
>$ kubectl run nginx --image nginx --replicas 3
↓こちらは廃止されたコマンドなので下記を使用
$ kubectl create deployment nginx --image=nginx --replicas=3
deployment.apps/nginx created
$ kubectl expose deployment nginx --port=80 --type=NodePort
service/nginx exposed
$ kubectl get nodes -ノード一覧表示
NAME STATUS ROLES AGE VERSION
ras4 Ready 31h v1.32.3
$ kubectl get services -サービス一覧表示
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.152.183.1 443/TCP 31h
nginx NodePort 10.152.183.63 80:32382/TCP 34s
$ kubectl get pods -Pod一覧表示
NAME READY STATUS RESTARTS AGE
nginx-5869d7778c-9bj9z 1/1 Running 0 84s
nginx-5869d7778c-fvd59 1/1 Running 0 84s
nginx-5869d7778c-gkflv 1/1 Running 0 84s
$ curl http://localhost:32382
<html>
<head>
<title>Welcome to nginx!</title>
略
$
$ kubectl get svc nginx -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
nginx NodePort 10.152.183.63 80:32382/TCP 46m app=nginx
$
$ kubectl describe svc nginx
Name: nginx
Namespace: default
Labels: app=nginx
Annotations:
Selector: app=nginx
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.152.183.63
IPs: 10.152.183.63
Port: 80/TCP
TargetPort: 80/TCP
NodePort: 32382/TCP
Endpoints: 10.1.248.207:80,10.1.248.206:80,10.1.248.205:80
Session Affinity: None
External Traffic Policy: Cluster
Internal Traffic Policy: Cluster
Events:
別ホストからnginxへアクセスします。
ポート32382から80へポートフォワードされて、3つのnginxPodsにロードバランシングされます
nginxのdeploymentおよびserviceを削除する
- deploymentを削除することで、deploymentで管理されるPodも削除される
$ kubectl scale deployment nginx --replicas=0 deployment.apps/nginx scaled $ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE nginx 0/0 0 0 8d $ kubectl delete deployments nginx deployment.apps "nginx" deleted $ kubectl get pods No resources found in default namespace.
- serviceを削除することで、Podへのアクセス経路が削除される
$ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.152.183.1
443/TCP 9d nginx NodePort 10.152.183.63 80:32382/TCP 8d $ kubectl delete service nginx service "nginx" deleted $ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.152.183.1 443/TCP 9d
アンインストール手順
$ microk8s stop
$ sudo snap remove microk8s
$ sudo rm -rf ~/.kube
[…] ンストール方法を紹介しています。 microk8sインストール方法 […]
[…] – 【kubernetes】microk8sインストール – microk8sのInstall/Uninstall – dashboard関連 – Podのデプロイ – nginxによるLoad Balancer […]