kubectl describe -A pvc | grep -E "^Name:.*|^Namespace:.*|^Used By:.*" | sed -e 's/^.*: *//' | awk '{printf("%s ", $1);} NR%3==0 {printf("\n");}' | grep '<none>'
2024年10月19日土曜日
Kubernetesで使用されていないPVCを一覧表示する
Kubernetesで使用されていないPVCを一覧表示するには、以下のコマンドを実行します。Name, Namespace, Used Byフィールドが表示されます。
2024年10月18日金曜日
KubernetesでPostgreSQLの共有メモリを増やす
KubernetesでPostgreSQLの共有メモリを増やすには以下の手順を実行します。
1. 現在の設定の確認
2. 設定変更
PVに割り当てられたディレクトリからpostgresql.confを変更
■変更前
Documentationでは1GB以上のRAMがあればshared_buffersに対する妥当な初期値はシステムメモリの25%。
https://www.postgresql.jp/document/16/html/runtime-config-resource.html
3. 再起動して変更を反映
4. 再度設定確認
1. 現在の設定の確認
kubectl exec --stdin --tty ※ポッド名 --container ※コンテナ名 -- /usr/local/bin/psql -U postgres
クライアントから確認show shared_buffers;
2. 設定変更
PVに割り当てられたディレクトリからpostgresql.confを変更
■変更前
shared_buffers = 128MB # min 128kB
# (change requires restart)
■変更後shared_buffers = 256MB # min 128kB
# (change requires restart)
Documentationでは1GB以上のRAMがあればshared_buffersに対する妥当な初期値はシステムメモリの25%。
https://www.postgresql.jp/document/16/html/runtime-config-resource.html
3. 再起動して変更を反映
kubectl rollout restart deployment ※デプロイメント名
4. 再度設定確認
2024年10月17日木曜日
KubernetesでPostgreSQLをアップグレードする方法
KubernetesでPostgreSQLをアップグレードする場合、以下の順序でバージョンアップを行います。
1. 現バージョンでバックアップを取得
2. バージョンアップ後に使用するPV/PVCを作成
3. deploymentなどで使用するPostgreSQLのイメージを新しいものに変更し、PVCもあたらしいものを参照するようにymlを更新。kubectl applyで反映。
4. 新バージョンでデータをインポート
5. 動作確認後、古いバージョンのPV/PVCを削除
1. 現バージョンでバックアップを取得
kubectl exec --stdin ※ポッド名 --container ※コンテナ名 -- /usr/local/bin/pg_dumpall -U postgres > dumpall.sql
2. バージョンアップ後に使用するPV/PVCを作成
3. deploymentなどで使用するPostgreSQLのイメージを新しいものに変更し、PVCもあたらしいものを参照するようにymlを更新。kubectl applyで反映。
4. 新バージョンでデータをインポート
cat dumpall.sql | kubectl exec --stdin ※ポッド名 --container ※コンテナ名 -- /usr/local/bin/psql -U postgres
5. 動作確認後、古いバージョンのPV/PVCを削除
2024年10月16日水曜日
Kubernetesでポッド内のコンテナのマウント名とパスを一覧表示する
Kubernetesでポッド内のコンテナのマウント名とパスを一覧表示するには、以下のコマンドを実行します
1.ポッド一覧を取得
2.ポッドのコンテナ内のマウント名とパスを一覧表示
1.ポッド一覧を取得
kubectl get pods
2.ポッドのコンテナ内のマウント名とパスを一覧表示
kubectl get pod ※1で取得したポッド名 -o jsonpath='{range .spec.containers[*]}{.name}{"\n"}{range .volumeMounts[*]}{"- "}{.name}{":"}{.mountPath}{"\n"}{end}{end}'
2024年10月15日火曜日
Kubernetesでポッド内のコンテナ名とイメージ名を一覧表示する
Kubernetesでポッド内のコンテナ名とイメージ名を一覧表示するには、以下のコマンドを実行します
1.ポッド一覧を取得
2.コンテナ名とイメージ名を一覧表示
1.ポッド一覧を取得
kubectl get pods
2.コンテナ名とイメージ名を一覧表示
kubectl get pod ※1で取得したポッド名 -o jsonpath='{range .spec.containers[*]}{.name}{":"}{.image}{"\n"}{end}'
2022年4月30日土曜日
Kubernetes python clientでMicrok8sの永続ボリュームを削除する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sの永続ボリュームを削除することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリュームを削除することが出来ます。
delete-pv.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリュームを削除することが出来ます。
delete-pv.py
from kubernetes import config, client
from kubernetes.client.exceptions import ApiException
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
namespace = 'default'
pv_name = 'local-httpd-pv'
# 永続ボリュームの削除
try:
api.delete_persistent_volume(pv_name)
except ApiException as ex:
print(ex)
・実行コマンド
python3 delete-pv.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月29日金曜日
Kubernetes python clientでMicrok8sの永続ボリューム要求を削除する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sの永続ボリューム要求を削除することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリューム要求を削除することが出来ます。
delete-pvc.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリューム要求を削除することが出来ます。
delete-pvc.py
from kubernetes import config, client
from kubernetes.client.exceptions import ApiException
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
namespace = 'default'
pvc_name = 'local-httpd-pvc'
# 永続ボリューム要求の削除
try:
api.delete_namespaced_persistent_volume_claim(pvc_name, namespace)
except ApiException as ex:
print(ex)
・実行コマンド
python3 delete-pvc.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月28日木曜日
Kubernetes python clientでMicrok8sのServiceを削除する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sのServiceを削除することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでServiceを削除することが出来ます。
delete-service.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでServiceを削除することが出来ます。
delete-service.py
from kubernetes import config, client
from kubernetes.client.exceptions import ApiException
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
namespace = 'default'
service_name = 'httpd-service'
# Serviceの削除
try:
api.delete_namespaced_service(service_name, namespace)
except ApiException as ex:
print(ex)
・実行コマンド
python3 delete-service.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月27日水曜日
Kubernetes python clientでMicrok8sの永続ボリューム/永続ボリューム要求/Deployment/Serviceを作成する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sの永続ボリューム/永続ボリューム要求/Deployment/Serviceを作成することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでMicrok8sの永続ボリューム/永続ボリューム要求/Deployment/Serviceを作成することが出来ます。ローカルストレージの永続ボリュームを使用するApache Httpdをデプロイ&サービス作成しています。
deploy-httpd.py
・実行コマンド
https://github.com/kubernetes-client/python
・kubectlを使用して同様のデプロイを行う場合は、以下のページを参照してください。
Microk8sでlocal永続ボリュームを使用するApache Httpdをデプロイする
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでMicrok8sの永続ボリューム/永続ボリューム要求/Deployment/Serviceを作成することが出来ます。ローカルストレージの永続ボリュームを使用するApache Httpdをデプロイ&サービス作成しています。
deploy-httpd.py
from kubernetes import config, client
from kubernetes.client.exceptions import ApiException
# 永続ボリュームの作成
def create_pv(api):
pv = client.V1PersistentVolume()
# 永続ボリューム名
pv.metadata = client.V1ObjectMeta(
name="local-httpd-pv"
)
pv.spec = client.V1PersistentVolumeSpec(
# 容量
capacity = {"storage":"50Mi"},
# local volume
local = client.V1LocalVolumeSource(path="/var/mywww/html"),
# アクセスモード
access_modes = [
"ReadOnlyMany"
],
# node affinityの設定
node_affinity = client.V1VolumeNodeAffinity(
required = client.V1NodeSelector(
node_selector_terms = [
client.V1NodeSelectorTerm(
match_expressions = [
client.V1NodeSelectorRequirement(
key = "kubernetes.io/hostname",
operator = "In",
values = ["ub2004server1"] # 適宜ホスト名を変更してください
)
]
)
]
)
),
# storage class設定
storage_class_name = "local-storage",
)
# 永続ボリュームを作成
api.create_persistent_volume(pv)
# 永続ボリューム要求の作成
def create_pvc(api, namespace):
pv = client.V1PersistentVolumeClaim()
pv.metadata = client.V1ObjectMeta(
name="local-httpd-pvc"
)
pv.spec = client.V1PersistentVolumeClaimSpec(
access_modes = [
"ReadOnlyMany"
],
resources = client.V1ResourceRequirements(
requests = {"storage": "50Mi"}
),
storage_class_name = "local-storage",
)
api.create_namespaced_persistent_volume_claim(namespace, pv)
# Deploymentの作成
def create_deployment(api, namespace):
dp = client.V1Deployment()
dp.metadata = client.V1ObjectMeta(
name="httpd-deployment",
labels={"app":"myhttpd"}
)
dp.spec = client.V1DeploymentSpec(
replicas = 1,
selector = client.V1LabelSelector(
match_labels = {"app":"myhttpd"}
),
template = client.V1PodTemplateSpec(
metadata = client.V1ObjectMeta(
labels={"app":"myhttpd"}
),
spec = client.V1PodSpec(
containers = [
client.V1Container(
name = "myhttpd",
image = "httpd:2.4-alpine",
ports = [
client.V1ContainerPort(container_port=80)
],
volume_mounts = [
client.V1VolumeMount(
name = "documentroot",
mount_path = "/usr/local/apache2/htdocs"
)
]
)
],
volumes = [
client.V1Volume(
name = "documentroot",
persistent_volume_claim = client.V1PersistentVolumeClaimVolumeSource(
claim_name = "local-httpd-pvc"
)
)
]
)
)
)
api.create_namespaced_deployment(namespace, dp)
# Serviceの作成
def create_service(api, namespace):
sv = client.V1Service()
sv.metadata = client.V1ObjectMeta(
name="httpd-service"
)
sv.spec = client.V1ServiceSpec(
selector = {"app":"myhttpd"},
type = "LoadBalancer",
external_i_ps = ["192.168.1.10"], # 適宜IPアドレスを変更してください
ports = [
client.V1ServicePort(
port = 8080,
target_port = 80,
protocol = "TCP"
)
]
)
api.create_namespaced_service(namespace, sv)
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
namespace = 'default'
# 永続ボリュームの作成
try:
create_pv(api)
except ApiException as ex:
if ex.reason == 'Conflict':
print("already exists.")
else:
print(ex)
# 永続ボリューム要求の作成
try:
create_pvc(api, namespace)
except ApiException as ex:
if ex.reason == 'Conflict':
print("already exists.")
else:
print(ex)
# Deploymentの作成
try:
apps_api = client.AppsV1Api(api_client)
create_deployment(apps_api, namespace)
except ApiException as ex:
if ex.reason == 'Conflict':
print("already exists.")
else:
print(ex)
# Serviceの作成
try:
create_service(api, namespace)
except ApiException as ex:
if ex.reason == 'Conflict':
print("already exists.")
else:
print(ex)
・実行コマンド
python3 deploy-httpd.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
・kubectlを使用して同様のデプロイを行う場合は、以下のページを参照してください。
Microk8sでlocal永続ボリュームを使用するApache Httpdをデプロイする
2022年4月26日火曜日
Kubernetes python clientでMicrok8sのNodeを列挙する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sのNodeを列挙することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでNodeを列挙することが出来ます。
list-node.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでNodeを列挙することが出来ます。
list-node.py
from kubernetes import config, client
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
# Nodeの列挙
nodes = api.list_node(watch=False)
for node in nodes.items:
# node名を表示
print("node name: {}".format(node.metadata.name))
# conditionsを表示
for condition in node.status.conditions:
if condition.status == 'True':
print(" condition: {}".format(condition.type))
# address
for address in node.status.addresses:
print(" address:{}".format(address))
・実行コマンド
python3 list-node.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月25日月曜日
Kubernetes python clientでMicrok8sの永続ボリューム要求を列挙する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sの永続ボリューム要求(Persistent volume claim)を列挙することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリュームを列挙することが出来ます。
list-pvc.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリュームを列挙することが出来ます。
list-pvc.py
from kubernetes import config, client
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
# Persistent Volume Claimの列挙
pvcs = api.list_persistent_volume_claim_for_all_namespaces(watch=False)
for pvc in pvcs.items:
# Persistent volume Claim名を表示
print("persistent volume claim name: {}".format(pvc.metadata.name))
# phaseを表示
print(" phase: {}".format(pvc.status.phase))
# access mode
for access_mode in pvc.spec.access_modes:
print(" access mode:{}".format(access_mode))
# 容量を表示
print(" capacity: {}".format(pvc.status.capacity))
# Persistent volume nameを表示
print(" persistent volume name: {}".format(pvc.spec.volume_name))
・実行コマンド
python3 list-pvc.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月24日日曜日
Kubernetes python clientでMicrok8sの永続ボリュームを列挙する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sの永続ボリュームを列挙することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリュームを列挙することが出来ます。
list-pv.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムで永続ボリュームを列挙することが出来ます。
list-pv.py
from kubernetes import config, client
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
# Persistent Volumeの列挙
volumes = api.list_persistent_volume(watch=False)
for volume in volumes.items:
# volume名を表示
print("volume name: {}".format(volume.metadata.name))
# phaseを表示
print(" phase: {}".format(volume.status.phase))
# access mode
for access_mode in volume.spec.access_modes:
print(" access mode:{}".format(access_mode))
# 容量を表示
print(" capacity: {}".format(volume.spec.capacity))
# storage class nameを表示
print(" storage class name: {}".format(volume.spec.storage_class_name))
# local volume path
if volume.spec.local is not None:
print(" local volume path: {}".format(volume.spec.local.path))
・実行コマンド
python3 list-pv.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月23日土曜日
Microk8sとKubernetes python clientでServiceを列挙する
以下のようなMicrok8sとKubernetes python clientサンプルプログラムでServiceを列挙することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでServiceを列挙することが出来ます。
list-service.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでServiceを列挙することが出来ます。
list-service.py
from kubernetes import config, client
# configを読み込み
cfg = config.load_kube_config()
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
# serviceの列挙
services = api.list_namespaced_service('default', watch=False)
for service in services.items:
# service名を表示
print("service name: {}".format(service.metadata.name))
print("type: {}".format(service.spec.type))
# ポート
for port in service.spec.ports:
print(" port: {} -> target port: {}".format(port.port, port.target_port))
・実行コマンド
python3 list-service.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月22日金曜日
Kubernetes python clientでMicrok8sのPodを列挙する
以下のようなKubernetes python clientサンプルプログラムでMicrok8sのPodを列挙することが出来ます。
以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでPodを列挙することが出来ます。
list-pod.py
・実行コマンド
https://github.com/kubernetes-client/python
実行手順
1. 実行環境の構築・設定以下のページを参照して、実行環境の構築・設定を行います。
Kubernetes python clientでMicrok8sのnamespaceを列挙する
2. サンプルプログラムの作成と実行
以下のサンプルプログラムでPodを列挙することが出来ます。
list-pod.py
from kubernetes import config, client
# configを読み込み
cfg = config.load_kube_config()
namespace = 'default'
# クライアントを作成
with client.ApiClient(cfg) as api_client:
api = client.CoreV1Api(api_client)
# podの列挙
pods = api.list_namespaced_pod(namespace, watch=False)
for pod in pods.items:
# print(type(pod))
print("-----------")
# pod名とphase
print("{}:{}".format(pod.metadata.name, pod.status.phase))
# pod内のコンテナ
for container in pod.spec.containers:
# イメージ名
print(" image: {}".format(container.image))
# ポート
if container.ports is not None:
for port in container.ports:
print(" container port: {}".format(port.container_port))
print(" host port: {}".format(port.host_port))
# restart policy
print("restart policy: {}".format(pod.spec.restart_policy))
# スケジューラ名
print("scheduler_name: {}".format(pod.spec.scheduler_name))
# サービスアカウント
print("service_account_name: {}".format(pod.spec.service_account_name))
# ボリューム
for volume in pod.spec.volumes:
# ボリューム名
print(" volume name: {}".format(volume.name))
# Persistent Volume Claim
print(" PVC: {}".format(volume.persistent_volume_claim))
・実行コマンド
python3 list-pod.py
関連情報
・Kubernetes Python Clientのリポジトリhttps://github.com/kubernetes-client/python
2022年4月14日木曜日
k3sで同一ポッド内にn8n.ioとPostgreSQLを配置する
n8n.ioは自動化ワークフローツールです。k3s同一ポッド内にn8n.ioとPostgreSQLを配置するには、以下の手順を実行します。データはlocal永続ボリュームに保存します。
k3sがインストールされているホスト上でlocal永続ボリュームで使用するディレクトリを作成します。
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
※n8n.io用
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQLデータ用
※n8n.io用
4. n8n.ioとPostgreSQLのDeploymentの作成
以下のコマンドでn8n.ioとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
5. サービスの作成
以下のコマンドでサービスを作成します。
ブラウザからhttp://<ホスト名またはIP>:8080/ にアクセスしてワークフローを作成します。
実行手順
1. local永続ボリュームで使用するディレクトリの作成k3sがインストールされているホスト上でlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/n8n-pg-data
sudo mkdir -p /var/n8n-data
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pg-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/n8n-pg-data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-pg-pv.yml
※n8n.io用
cat << EOF > local-n8n-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-n8n-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/n8n-data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-n8n-pv.yml
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-pg-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-pg-pv
EOF
sudo k3s kubectl apply -f ./local-pg-pvc.yml
※n8n.io用
cat << EOF > local-n8n-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-n8n-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-n8n-pv
EOF
sudo k3s kubectl apply -f ./local-n8n-pvc.yml
4. n8n.ioとPostgreSQLのDeploymentの作成
以下のコマンドでn8n.ioとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > n8n-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n-pg-deployment
labels:
app: n8n-pg
spec:
replicas: 1
selector:
matchLabels:
app: n8n-pg
strategy:
type: Recreate
template:
metadata:
labels:
app: n8n-pg
spec:
containers:
- name: mypg
image: postgres:14-alpine
env:
- name: POSTGRES_DB
value: n8n
- name: POSTGRES_USER
value: n8n
- name: POSTGRES_PASSWORD
value: n8n
ports:
- containerPort: 5432
volumeMounts:
- name: pgdata
mountPath: /var/lib/postgresql/data
- name: n8n
image: n8nio/n8n
env:
- name: DB_TYPE
value: postgresdb
- name: DB_POSTGRESDB_DATABASE
value: n8n
- name: DB_POSTGRESDB_HOST
value: 127.0.0.1
- name: DB_POSTGRESDB_PORT
value: "5432"
- name: DB_POSTGRESDB_USER
value: n8n
- name: DB_POSTGRESDB_PASSWORD
value: n8n
- name: GENERIC_TIMEZONE
value: Asia/Tokyo
- name: TZ
value: Asia/Tokyo
ports:
- containerPort: 5678
volumeMounts:
- name: n8n-data
mountPath: /home/node/.n8n
dnsConfig:
options:
- name: ndots
value: "1"
volumes:
- name: n8n-data
persistentVolumeClaim:
claimName: local-n8n-pvc
- name: pgdata
persistentVolumeClaim:
claimName: local-pg-pvc
EOF
sudo k3s kubectl apply -f ./n8n-pg-deployment.yml
5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > n8n-service.yml
apiVersion: v1
kind: Service
metadata:
name: n8n-service
spec:
selector:
app: n8n-pg
type: LoadBalancer
externalIPs:
- xxx.xxx.xxx.xxx # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 5678
- name: db
protocol: TCP
port: 3306
targetPort: 3306
EOF
sudo k3s kubectl apply -f ./n8n-service.yml
ブラウザからhttp://<ホスト名またはIP>:8080/ にアクセスしてワークフローを作成します。
2022年4月13日水曜日
k3sで同一ポッド内にMariaDBとMetabaseを配置する
Metabaseはオープンソースのデータ解析・可視化ツールです。k3sで同一ポッド内にMariaDBとMetabaseを配置するには、以下の手順を実行します(metabase公式のイメージはamd64のみです)。
〇Metabaseの画面
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※MariaDBデータ用
※Metabase用
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※MariaDBデータ用
※Metabase用
4. MetabaseとMariaDBのDeploymentの作成
以下のコマンドでMetabaseとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
5. サービスの作成
以下のコマンドでサービスを作成します。
ブラウザからhttp://<ホスト名:8080 にアクセスします。
言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: MySQL
名前: mariadb
ホスト: 127.0.0.1
ポート: 3306
データベース名: metabase
ユーザ: metabase
パスワード: metabase
〇Metabaseの画面
実行手順
1. local永続ボリュームで使用するディレクトリの作成以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/mymariadb
sudo mkdir -p /var/metabase
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※MariaDBデータ用
cat << EOF > local-mariadb-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-mariadb-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/mymariadb
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-mariadb-pv.yml
※Metabase用
cat << EOF > local-metabase-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-metabase-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/metabase
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-metabase-pv.yml
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※MariaDBデータ用
cat << EOF > local-mariadb-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-mariadb-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-mariadb-pv
EOF
sudo k3s kubectl apply -f ./local-mariadb-pvc.yml
※Metabase用
cat << EOF > local-metabase-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-metabase-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-metabase-pv
EOF
sudo k3s kubectl apply -f ./local-metabase-pvc.yml
4. MetabaseとMariaDBのDeploymentの作成
以下のコマンドでMetabaseとMariaDBを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > metabase-mariadb-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: metabase-mariadb-deployment
labels:
app: metabase-mariadb
spec:
replicas: 1
selector:
matchLabels:
app: metabase-mariadb
strategy:
type: Recreate
template:
metadata:
labels:
app: metabase-mariadb
spec:
containers:
- name: mymariadb
image: mariadb:10.7-focal
args: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
env:
- name: MYSQL_ROOT_PASSWORD
value: mymariadb
- name: MYSQL_DATABASE
value: metabase
- name: MYSQL_USER
value: metabase
- name: MYSQL_PASSWORD
value: metabase
ports:
- containerPort: 3306
volumeMounts:
- name: mariadb-data
mountPath: /var/lib/mysql
- name: metabase
image: metabase/metabase
env:
- name: MB_DB_FILE
value: /metabase-data/metabase.db
- name: MB_DB_TYPE
value: mysql
- name: MB_DB_DBNAME
value: metabase
- name: MB_DB_PORT
value: "3306"
- name: MB_DB_USER
value: metabase
- name: MB_DB_PASS
value: metabase
- name: MB_DB_HOST
value: 127.0.0.1
ports:
- containerPort: 3000
volumeMounts:
- name: metabase-data
mountPath: /metabase-data
volumes:
- name: mariadb-data
persistentVolumeClaim:
claimName: local-mariadb-pvc
- name: metabase-data
persistentVolumeClaim:
claimName: local-metabase-pvc
EOF
sudo k3s kubectl apply -f ./metabase-mariadb-deployment.yml
5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > metabase-service.yml
apiVersion: v1
kind: Service
metadata:
name: metabase-service
spec:
selector:
app: metabase-mariadb
type: LoadBalancer
externalIPs:
- xxx.xxx.xxx.xxx # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 3000
- name: db
protocol: TCP
port: 3306
targetPort: 3306
EOF
sudo k3s kubectl apply -f ./metabase-service.yml
ブラウザからhttp://<ホスト名:8080 にアクセスします。
言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: MySQL
名前: mariadb
ホスト: 127.0.0.1
ポート: 3306
データベース名: metabase
ユーザ: metabase
パスワード: metabase
2022年4月12日火曜日
k3sで同一ポッド内にPostgreSQLとMetabaseを配置する
Metabaseはオープンソースのデータ解析・可視化ツールです。k3sで同一ポッド内にPostgreSQLとMetabaseを配置するには、以下の手順を実行します(metabase公式のイメージはamd64のみです)。
〇Metabaseの画面
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
※Metabase用
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQL用
※Metabase用
4. MetabaseとPostgrelSQLのDeploymentの作成
以下のコマンドでMetabaseとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
5. サービスの作成
以下のコマンドでサービスを作成します。
ブラウザからhttp://<ホスト名:8080 にアクセスします。
言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: PostgreSQL
名前: pg
ホスト: 127.0.0.1
ポート: 5432
データベース名: metabase
ユーザ: postgres
パスワード: mypostgres
〇Metabaseの画面
実行手順
1. local永続ボリュームで使用するディレクトリの作成以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/pgdata
sudo mkdir -p /var/metabase
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pg-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/pgdata
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-pg-pv.yml
※Metabase用
cat << EOF > local-metabase-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-metabase-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/metabase
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-metabase-pv.yml
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQL用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-pg-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-pg-pv
EOF
sudo k3s kubectl apply -f ./local-pg-pvc.yml
※Metabase用
cat << EOF > local-metabase-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-metabase-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-metabase-pv
EOF
sudo k3s kubectl apply -f ./local-metabase-pvc.yml
4. MetabaseとPostgrelSQLのDeploymentの作成
以下のコマンドでMetabaseとPostgreSQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > metabase-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: metabase-pg-deployment
labels:
app: metabase-pg
spec:
replicas: 1
selector:
matchLabels:
app: metabase-pg
strategy:
type: Recreate
template:
metadata:
labels:
app: metabase-pg
spec:
containers:
- name: mypg
image: postgres:14-alpine
env:
- name: POSTGRES_DB
value: metabase
- name: POSTGRES_PASSWORD
value: mypostgres
ports:
- containerPort: 5432
volumeMounts:
- name: pgdata
mountPath: /var/lib/postgresql/data
- name: metabase
image: metabase/metabase
env:
- name: MB_DB_FILE
value: /metabase-data/metabase.db
- name: MB_DB_TYPE
value: postgres
- name: MB_DB_DBNAME
value: metabase
- name: MB_DB_PORT
value: "5432"
- name: MB_DB_USER
value: postgres
- name: MB_DB_PASS
value: mypostgres
- name: MB_DB_HOST
value: 127.0.0.1
ports:
- containerPort: 3000
volumeMounts:
- name: metabase-data
mountPath: /metabase-data
volumes:
- name: pgdata
persistentVolumeClaim:
claimName: local-pg-pvc
- name: metabase-data
persistentVolumeClaim:
claimName: local-metabase-pvc
EOF
sudo k3s kubectl apply -f ./metabase-pg-deployment.yml
5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > metabase-service.yml
apiVersion: v1
kind: Service
metadata:
name: metabase-service
spec:
selector:
app: metabase-pg
type: LoadBalancer
externalIPs:
- xxx.xxx.xxx.xxx # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 3000
- name: db
protocol: TCP
port: 5432
targetPort: 5432
EOF
sudo k3s kubectl apply -f ./metabase-service.yml
ブラウザからhttp://<ホスト名:8080 にアクセスします。
言語、ユーザアカウント情報を入力して、「3.データを追加する」で以下の様に入力します。
データベースのタイプ: PostgreSQL
名前: pg
ホスト: 127.0.0.1
ポート: 5432
データベース名: metabase
ユーザ: postgres
パスワード: mypostgres
2022年4月11日月曜日
k3sで同一ポッド内にPostgreSQLとKanboardを配置する(local永続ボリューム使用)
Kanboardはタスク管理をおこなうPHP製のソフトウェアです。k3sで同一ポッド内にPostgreSQLとKanboardを配置するには、以下の手順を実行します。PostgreSQLとKanboardのデータはlocal永続ボリュームに保存します。
以下のコマンドでPostgreSQLデータ格納用ディレクトリを作成します。
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
※Kanboardデータ用
※Kanboardプラグイン用
※KanboardのSSL用
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQLデータ用
※Kanboardデータ用
※Kanboardプラグイン用
※KanboardのSSL用
4. KanboardとPostgreSQLのDeploymentの作成
以下のコマンドでkanboardとpostgresqlを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
5. KanboardとPostgreSQLのサービスの作成
以下のコマンドでサービスを作成します。
ブラウザから以下のURLからKanboardにアクセスします。
http://<k3sをインストールしたホストのIP>:8080/
初期ログインはユーザadmin、パスワードadminでログインしてください。
・Python API Client for Kanboardのついてのまとめは「Python API Client for KanboardでKanboardをコントロールする」を参照してください。
・Kanboardに関する他の情報はこちらを参照してください。
・Kanboardのgithubリポジトリ
https://github.com/kanboard/kanboard
実行手順
1. KanboardとPostgreSQLデータ格納用ディレクトリを作成以下のコマンドでPostgreSQLデータ格納用ディレクトリを作成します。
sudo mkdir -p /var/pgdata
sudo mkdir -p /var/kanboard_data
sudo mkdir -p /var/kanboard_plugins
sudo mkdir -p /var/kanboard_ssl
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-pg-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/pgdata
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-pg-pv.yml
※Kanboardデータ用
cat << EOF > local-kanboard-data-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-kanboard-data-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/kanboard_data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-kanboard-data-pv.yml
※Kanboardプラグイン用
cat << EOF > local-kanboard-plugins-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-kanboard-plugins-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/kanboard_data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-kanboard-plugins-pv.yml
※KanboardのSSL用
cat << EOF > local-kanboard-ssl-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-kanboard-ssl-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/kanboard_ssl
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-kanboard-ssl-pv.yml
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※PostgreSQLデータ用
cat << EOF > local-pg-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-pg-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-pg-pv
EOF
sudo k3s kubectl apply -f ./local-pg-pvc.yml
※Kanboardデータ用
cat << EOF > local-kanboard-data-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-kanboard-data-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-kanboard-data-pv
EOF
sudo k3s kubectl apply -f ./local-kanboard-data-pvc.yml
※Kanboardプラグイン用
cat << EOF > local-kanboard-plugins-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-kanboard-plugins-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-kanboard-plugins-pv
EOF
sudo k3s kubectl apply -f ./local-kanboard-plugins-pvc.yml
※KanboardのSSL用
cat << EOF > local-kanboard-ssl-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-kanboard-ssl-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-kanboard-ssl-pv
EOF
sudo k3s kubectl apply -f ./local-kanboard-ssl-pvc.yml
4. KanboardとPostgreSQLのDeploymentの作成
以下のコマンドでkanboardとpostgresqlを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > kanboard-pg-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: kanboard-pg-deployment
labels:
app: kanboard-pg
spec:
replicas: 1
selector:
matchLabels:
app: kanboard-pg
strategy:
type: Recreate
template:
metadata:
labels:
app: kanboard-pg
spec:
containers:
- name: mypg
image: postgres:14-alpine
env:
- name: POSTGRES_DB
value: kanboard
- name: POSTGRES_USER
value: kanboard
- name: POSTGRES_PASSWORD
value: kanboard
ports:
- containerPort: 5432
volumeMounts:
- name: pg-data
mountPath: /var/lib/postgresql/data
- name: kanboard
image: kanboard/kanboard:latest
env:
- name: DATABASE_URL
value: postgres://kanboard:kanboard@127.0.0.1:5432/kanboard
ports:
- containerPort: 80
name: http
- containerPort: 443
name: https
volumeMounts:
- name: kanboard-data
mountPath: /var/www/app/data
- name: kanboard-plugins
mountPath: /var/www/app/plugins
- name: kanboard-ssl
mountPath: /etc/nginx/ssl
volumes:
- name: pg-data
persistentVolumeClaim:
claimName: local-pg-pvc
- name: kanboard-data
persistentVolumeClaim:
claimName: local-kanboard-data-pvc
- name: kanboard-plugins
persistentVolumeClaim:
claimName: local-kanboard-plugins-pvc
- name: kanboard-ssl
persistentVolumeClaim:
claimName: local-kanboard-ssl-pvc
EOF
sudo k3s kubectl apply -f ./kanboard-pg-deployment.yml
5. KanboardとPostgreSQLのサービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > kanboard-pg-service.yml
apiVersion: v1
kind: Service
metadata:
name: kanboard-pg-service
spec:
selector:
app: kanboard-pg
type: LoadBalancer
externalIPs:
- xxx.xxx.xxx.xxx # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 80
- name: https
protocol: TCP
port: 443
targetPort: 8443
- name: db
protocol: TCP
port: 3306
targetPort: 3306
EOF
sudo k3s kubectl apply -f ./kanboard-pg-service.yml
ブラウザから以下のURLからKanboardにアクセスします。
http://<k3sをインストールしたホストのIP>:8080/
初期ログインはユーザadmin、パスワードadminでログインしてください。
関連情報
・Kanboardの設定・操作方法については「Kanboardの設定・操作」を参照してください。・Python API Client for Kanboardのついてのまとめは「Python API Client for KanboardでKanboardをコントロールする」を参照してください。
・Kanboardに関する他の情報はこちらを参照してください。
・Kanboardのgithubリポジトリ
https://github.com/kanboard/kanboard
2022年4月10日日曜日
Microk8sでPyMySQLとipython-sqlをインストールしたJupyterLabをデプロイする
Microk8sでPyMySQLとipython-sqlをインストールしたJupyterLabをデプロイするには、以下の手順を実行します。データはlocal永続ボリュームに保存します。
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※jovyan用の永続ボリューム
※スタートアップスクリプト用の永続ボリューム
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※jovyan用の永続ボリューム
※スタートアップスクリプト用の永続ボリューム要求
4. Deploymentの作成
以下のコマンドでjupyterのイメージと作成したlocal永続ボリュームを使用するDeploymentを作成します。
5. サービスの作成
以下のコマンドでサービスを作成します。
6. 動作確認
ブラウザからhttp://<ホスト名:8080/?token=jupyter にアクセスします。
ipython-sqlをインストールしているのでSQLマジックセルでSQLを実行できるか確認します。
以下のusername, password, dbhost, dbnameを書き換えて、MariaDBデータベースに接続/実行確認します。
実行手順
1. local永続ボリュームで使用するディレクトリの作成以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/nb_jovyan
sudo mkdir -p /var/start-notebook.d
sudo chown 1000:100 /var/nb_jovyan
cat << EOF | sudo tee /var/start-notebook.d/install_packages.sh
conda install -c anaconda pymysql -y
conda install -c conda-forge ipython-sql -y
EOF
sudo chmod +x /var/start-notebook.d/install_packages.sh
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※jovyan用の永続ボリューム
cat << EOF > local-jovyan-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-jovyan-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/nb_jovyan
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。microk8s kubectl apply -f ./local-jovyan-pv.yml
※スタートアップスクリプト用の永続ボリューム
cat << EOF > local-startnb-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-startnb-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/start-notebook.d
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているMicrok8sがインストールされているホスト名になります。適宜変更してください。microk8s kubectl apply -f ./local-startnb-pv.yml
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※jovyan用の永続ボリューム
cat << EOF > local-jovyan-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-jovyan-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-jovyan-pv
EOF
microk8s kubectl apply -f ./local-jovyan-pvc.yml
※スタートアップスクリプト用の永続ボリューム要求
cat << EOF > local-startnb-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-startnb-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-startnb-pv
EOF
microk8s kubectl apply -f ./local-startnb-pvc.yml
4. Deploymentの作成
以下のコマンドでjupyterのイメージと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > jupyter-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: jupyter-deployment
labels:
app: jupyter
spec:
replicas: 1
selector:
matchLabels:
app: jupyter
template:
metadata:
labels:
app: jupyter
spec:
containers:
- name: jupyter
image: jupyter/scipy-notebook:latest
ports:
- containerPort: 8888
env:
- name: JUPYTER_TOKEN
value: "jupyter"
- name: DOCKER_STACKS_JUPYTER_CMD
value: "lab"
volumeMounts:
- name: nb-jovyan
mountPath: /home/jovyan/work
- name: startnb
mountPath: /usr/local/bin/start-notebook.d
volumes:
- name: nb-jovyan
persistentVolumeClaim:
claimName: local-jovyan-pvc
- name: startnb
persistentVolumeClaim:
claimName: local-startnb-pvc
EOF
microk8s kubectl apply -f ./jupyter-deployment.yml
5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > jupyter-service.yml
apiVersion: v1
kind: Service
metadata:
name: jupyter-service
spec:
selector:
app: jupyter
type: LoadBalancer
externalIPs:
- xxx.xxx.xxx.xxx # 外部からアクセスできるMicrok8sをインストールしたホストのIPを設定します。
ports:
- protocol: TCP
port: 8080
targetPort: 8888
EOF
microk8s kubectl apply -f ./jupyter-service.yml
6. 動作確認
ブラウザからhttp://<ホスト名:8080/?token=jupyter にアクセスします。
ipython-sqlをインストールしているのでSQLマジックセルでSQLを実行できるか確認します。
以下のusername, password, dbhost, dbnameを書き換えて、MariaDBデータベースに接続/実行確認します。
%load_ext sql
dsl = 'mysql+pymysql://username:password@dbhost:3306/dbname'
%sql $dsl
%%sql
select version();
2022年4月9日土曜日
k3sで同一ポッド内にGhostとMySQLを配置する
Ghostはブログプラットフォームです。k3sで同一ポッド内にGhostとMySQLを配置するには、以下の手順を実行します(official mysqlイメージにはarm 32bit版は無いようです)。
以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※MySQLデータ用
※Ghost用
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※MySQLデータ用
※Ghost用
4. GhostとMySQLのDeploymentの作成
以下のコマンドでGhostとMySQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
5. サービスの作成
以下のコマンドでサービスを作成します。
ブラウザからhttp://<ホスト名またはIP:8080>/ghost/ にアクセスしてユーザ登録などを行います。
実行手順
1. local永続ボリュームで使用するディレクトリの作成以下のコマンドでlocal永続ボリュームで使用するディレクトリを作成します。
sudo mkdir -p /var/mysql-data
sudo mkdir -p /var/ghost-data
2. local永続ボリュームの作成
以下のコマンドでlocal永続ボリュームを作成します。
※MySQLデータ用
cat << EOF > local-mysql-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-mysql-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/mysql-data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-mysql-pv.yml
※Ghost用
cat << EOF > local-ghost-pv.yml
apiVersion: v1
kind: PersistentVolume
metadata:
name: local-ghost-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
storageClassName: local-storage
local:
path: /var/ghost-data
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- `hostname`
EOF
※`hostname`は今ログオンしているk3sがインストールされているホスト名になります。適宜変更してください。sudo k3s kubectl apply -f ./local-ghost-pv.yml
3. 永続ボリューム要求の作成
以下のコマンドで永続ボリューム要求を作成します。
※MySQLデータ用
cat << EOF > local-mysql-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-mysql-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-mysql-pv
EOF
sudo k3s kubectl apply -f ./local-mysql-pvc.yml
※Ghost用
cat << EOF > local-ghost-pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: local-ghost-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: local-storage
resources:
requests:
storage: 5Gi
volumeName: local-ghost-pv
EOF
sudo k3s kubectl apply -f ./local-ghost-pvc.yml
4. GhostとMySQLのDeploymentの作成
以下のコマンドでGhostとMySQLを含むポッドと作成したlocal永続ボリュームを使用するDeploymentを作成します。
cat << EOF > ghost-mysql-deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ghost-mysql-deployment
labels:
app: ghost-mysql
spec:
replicas: 1
selector:
matchLabels:
app: ghost-mysql
strategy:
type: Recreate
template:
metadata:
labels:
app: ghost-mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_ROOT_PASSWORD
value: ghost
ports:
- containerPort: 3306
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
- name: ghost
image: ghost:4-alpine
env:
- name: url
value: http://xxx.xxx.xxx.xxx:8080 # ここは外部からアクセスできるk3sをインストールしたホスト名・IPに変更します
- name: database__client
value: mysql
- name: database__connection__host
value: 127.0.0.1
- name: database__connection__user
value: root
- name: database__connection__password
value: ghost
- name: database__connection__database
value: ghost
ports:
- containerPort: 2368
volumeMounts:
- name: ghost-data
mountPath: /var/lib/ghost/content
volumes:
- name: mysql-data
persistentVolumeClaim:
claimName: local-mysql-pvc
- name: ghost-data
persistentVolumeClaim:
claimName: local-ghost-pvc
EOF
sudo k3s kubectl apply -f ./ghost-mysql-deployment.yml
5. サービスの作成
以下のコマンドでサービスを作成します。
cat << EOF > ghost-service.yml
apiVersion: v1
kind: Service
metadata:
name: ghost-service
spec:
selector:
app: ghost-mysql
type: LoadBalancer
externalIPs:
- xxx.xxx.xxx.xxx # 外部からアクセスできるk3sをインストールしたホストのIPを設定します。
ports:
- name: http
protocol: TCP
port: 8080
targetPort: 2368
- name: db
protocol: TCP
port: 3306
targetPort: 3306
EOF
sudo k3s kubectl apply -f ./ghost-service.yml
ブラウザからhttp://<ホスト名またはIP:8080>/ghost/ にアクセスしてユーザ登録などを行います。
ラベル:
Ghost,
k3s,
Kubernetes,
MySQL
登録:
投稿 (Atom)