kubernetes

Kubernetes(クーベルネティス)チュートリアル

https://www.kkaneko.jp/tools/server/pubkey.html
Kubernetes(クーベルネティス)

・インストール
apt -y update
apt -y install openssh-server
open-ssh.server
Oracle_VM_VirtualBox_Extension_Pack
apt -y install bzip2 gcc make perl kernel-devel kernel-headers elfutils-libelf-devel
sudo apt -y install bzip2
sudo apt -y install gcc
sudo apt -y install make
sudo apt -y install perl
sudo apt -y install kernel-devel*
sudo apt -y update kernel*

curl
sudo snap install curl # version 8.1.2, or

—————————————————————-
https://kubernetes.io/ja/docs/tutorials/hello-minikube/

Hello Minikube

●目標
Minikubeへのサンプルアプリケーションのデプロイ
アプリケーションの実行
アプリケーションログの確認
始める前に
このチュートリアルはNGINXを利用してすべての要求をエコーバックするコンテナイメージを提供します。

●Minikubeクラスターの作成
1. Minikubeをローカルにインストール済みの場合は、minikube startを実行してください。
2. ブラウザーでKubernetesダッシュボードを開いてください:
disktop$ minikube dashboard

3. Katacoda環境のみ:ターミナルペーン上部の+ボタンをクリックしてから
Select port to view on Host 1 をクリックしてください。

4. Katacoda環境のみ:30000を入力し、Display Portをクリックしてください。

●Deploymentの作成
KubernetesのPod は、コンテナの管理やネットワーキングの目的でまとめられた、
1つ以上のコンテナのグループです。このチュートリアルのPodがもつコンテナは1つのみです。
Kubernetesの Deployment はPodの状態を確認し、Podのコンテナが停止した場合には再起動します。
DeploymentはPodの作成やスケールを管理するために推奨される方法(手段)です。

1. kubectl create コマンドを使用してPodを管理するDeploymentを作成してください。
Podは提供されたDockerイメージを元にコンテナを実行します。
$ kubectl create deployment hello-node –image=registry.k8s.io/echoserver:1.4

2. Deploymentを確認します:
$ kubectl get deployments
出力は下記のようになります:
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m

NAME READY UP-TO-DATE AVAILABLE AGE
hello-minikube 1/1 1 1 67m
hello-node 1/1 1 1 40m

3. Podを確認します:
$ kubectl get pods

出力は下記のようになります:

NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0

NAME READY STATUS RESTARTS AGE
hello-minikube-59d4768566-gs2pv 1/1 Running 1 (40m ago) 69m
hello-node-8474cdd645-dntds 1/1 Running 1 (40m ago) 42m

4. クラスターイベントを確認します:
$ kubectl get events

5. kubectl で設定を確認します:
$ kubectl config view

——————————————————————————
elm@ub2204:~$ kubectl config view
apiVersion: v1
clusters:
– cluster:
certificate-authority: /home/elm/.minikube/ca.crt
extensions:
– extension:
last-update: Thu, 02 Nov 2023 15:31:47 JST
provider: minikube.sigs.k8s.io
version: v1.31.2
name: cluster_info
server: https://192.168.49.2:8443
name: minikube
contexts:
– context:
cluster: minikube
extensions:
– extension:
last-update: Thu, 02 Nov 2023 15:31:47 JST
provider: minikube.sigs.k8s.io
version: v1.31.2
name: context_info
namespace: default
user: minikube
name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
– name: minikube
user:
client-certificate: /home/elm/.minikube/profiles/minikube/client.crt
client-key: /home/elm/.minikube/profiles/minikube/client.key
——————————————————————————

備考: kubectlコマンドの詳細な情報はコマンドラインツール(kubectl)を参照してください。
https://kubernetes.io/ja/docs/reference/kubectl/

●クリーンアップ
・クラスターに作成したリソースをクリーンアップします:
$ kubectl delete service hello-node
$ kubectl delete deployment hello-node

deployment.apps “hello-node” deleted

・(オプション)Minikubeの仮想マシン(VM)を停止します:
$ minikube stop
* 「minikube」ノードを停止しています…
* SSH 経由で「minikube」の電源をオフにしています…
* 1 台のノードが停止しました。

・(オプション)MinikubeのVMを削除します:
$ minikube delete
* docker の「minikube」を削除しています…
* コンテナー「minikube」を削除しています…
* /home/elm/.minikube/machines/minikube を削除しています…
* クラスター「minikube」の全てのトレースを削除しました。

####################################################################################################
■Minikubeをローカルにインストール
https://minikube.sigs.k8s.io/docs/start/

—————————————————————————————————
前提条件
What you’ll need
2 CPUs or more
2GB of free memory
20GB of free disk space
Internet connection
Container or virtual machine manager, such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

Dockerをインストール
Install Docker Engine on Ubuntu
https://docs.docker.com/engine/install/ubuntu/

1. Set up Docker’s apt repository.

$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

# Add the repository to Apt sources:
$ echo \
“deb [arch=”$(dpkg –print-architecture)” signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
“$(. /etc/os-release && echo “$VERSION_CODENAME”)” stable” | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt-get update

2. Install the Docker packages.
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3. Verify that the Docker Engine installation is successful by running the hello-world image.

$ sudo docker run hello-world
—————————————————————————————————

●1. Installation
Debian package
mura$ cd
mura$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
mura$ sudo dpkg -i minikube_latest_amd64.deb

●2. Start your cluster
elm$ sudo usermod -aG docker elm && newgrp docker
elm$ minikube start

elm@ub2204:~$ minikube start
$ minikube kubectl — get pods -A

*************************************************************************************
* Ubuntu 22.04 (vbox/amd64) 上の minikube v1.31.2
* docker ドライバーが自動的に選択されました

X 要求された 2200MiB のメモリー割当は、システムのオーバーヘッド (合計システムメ
モリー: 2460MiB) に十分な空きを残しません。安定性の問題に直面するかも知れません。
* 提案: Start minikube with less memory allocated: ‘minikube start –memory=2200mb’

* root 権限を持つ Docker ドライバーを使用
* minikube クラスター中のコントロールプレーンの minikube ノードを起動しています
* ベースイメージを取得しています…
* ロード済み Kubernetes v1.27.4 をダウンロードしています…
> preloaded-images-k8s-v18-v1…: 393.21 MiB / 393.21 MiB 100.00% 3.25 Mi
> gcr.io/k8s-minikube/kicbase…: 447.61 MiB / 447.62 MiB 100.00% 3.47 Mi
* docker container (CPUs=2, Memory=2200MB) を作成しています…
* Docker 24.0.4 で Kubernetes v1.27.4 を準備しています…
– 証明書と鍵を作成しています…
– コントロールプレーンを起動しています…
– RBAC のルールを設定中です…
* bridge CNI (コンテナーネットワークインターフェース) を設定中です…
– gcr.io/k8s-minikube/storage-provisioner:v5 イメージを使用しています
* Kubernetes コンポーネントを検証しています…
* 有効なアドオン: storage-provisioner, default-storageclass
* kubectl が見つかりません。kubectl が必要な場合、’minikube kubectl — get pods -A’
を試してください
* 終了しました!kubectl がデフォルトで「minikube」クラスターと「default」ネームスペースを使用する
よう設定されました
*************************************************************************************

●3. Interact with your cluster

$ minikube kubectl — get pods -A

*************************************************************************************
elm@ub2204:~$ minikube kubectl — get pods -A
> kubectl.sha256: 64 B / 64 B [————————-] 100.00% ? p/s 0s
> kubectl: 46.98 MiB / 46.98 MiB [————–] 100.00% 3.40 MiB p/s 14s
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-5d78c9869d-fz27l 1/1 Running 0 4m59s
kube-system etcd-minikube 1/1 Running 0 5m13s
kube-system kube-apiserver-minikube 1/1 Running 0 5m10s
kube-system kube-controller-manager-minikube 1/1 Running 0 5m10s
kube-system kube-proxy-j98hl 1/1 Running 0 4m59s
kube-system kube-scheduler-minikube 1/1 Running 0 5m10s
kube-system storage-provisioner 1/1 Running 1 (4m48s ago) 5m8s
*************************************************************************************

$ vi ~/.bash_profile
#!/usr/bin/bash

if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi

$ vi ~/bashrc
alias kubectl=”minikube kubectl –”

$ minikube dashboard
minikube がstartしていない場合は「minikube start」

●4. Deploy applications

・Service
Create a sample deployment and expose it on port 8080:
$ kubectl create deployment hello-minikube –image=kicbase/echo-server:1.0
$ kubectl expose deployment hello-minikube –type=NodePort –port=8080

It may take a moment, but your deployment will soon show up when you run:
$ kubectl get services hello-minikube

The easiest way to access this service is to let minikube launch a web browser for you:

$ minikube service hello-minikube
Alternatively, use kubectl to forward the port:

$ kubectl port-forward service/hello-minikube 7080:8080

Tada! Your application is now available at http://localhost:7080/.

You should be able to see the request metadata in the application output. Try changing the path of the request and observe the changes. Similarly, you can do a POST request and observe the body show up in the output.

●5. Manage your cluster
・Pause Kubernetes without impacting deployed applications:
クラスタの一時停止
$ minikube pause

・Unpause a paused instance:
クラスタの再開
$ minikube unpause

・Halt the cluster:
クラスタの停止
$ minikube stop

・Change the default memory limit (requires a restart):
デフォルトのメモリ制限を変更します (再起動が必要)。
$ minikube config set memory 9001

・Browse the catalog of easily installed Kubernetes services:
簡単にインストールできる Kubernetes サービスのカタログを参照する
$ minikube addons list

・Create a second cluster running an older Kubernetes release:
古い Kubernetes リリースを実行する 2 番目のクラスターを作成
$ minikube start -p aged –kubernetes-version=v1.16.1

・Delete all of the minikube clusters:
すべての minikube クラスターを削除
$ minikube delete –all

●Take the next step
The minikube handbook
ミニキューブハンドブック
https://minikube.sigs.k8s.io/docs/handbook/

Community-contributed tutorials
コミュニティ提供のチュートリアル
https://minikube.sigs.k8s.io/docs/tutorials/

minikube command reference
minikube コマンドリファレンス
https://minikube.sigs.k8s.io/docs/commands/

Contributors guide
貢献者ガイド
https://minikube.sigs.k8s.io/docs/contrib/
####################################################################################################
・簡単にローカルKubernetes環境を構築できるツール「Minikube」
https://knowledge.sakura.ad.jp/15320/