Initialize PotatOS
kubeadm
やる
やる
defualt configをファイルに書き出す必要がある(in Kubernete v1.25)
code:bash
$ sudo apt install lvm2
$ sudo pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
$ sudo vgcreate usb-storage /dev/sdb
Volume group "usb-storage" successfully created
$ cat /etc/topolvm/lvmd.yaml
socket-name: /run/topolvm/lvmd.sock
device-classes:
- name: usb
volume-group: usb-storage
default: true
spare-gb: 1
$ sudo cat /etc/systemd/system/lvmd.service
Description=lvmd for TopoLVM
Wants=lvm2-monitor.service
After=lvm2-monitor.service
Type=simple
Restart=on-failure
RestartForceExitStatus=SIGPIPE
ExecStartPre=/bin/mkdir -p /run/topolvm
ExecStart=/usr/local/sbin/lvmd
WantedBy=multi-user.target
kube-scheduler
やるだけ、applyせずとも書き換わった (ownerControll がNodeになってるからかな)
code:bash
$ helm upgrade --namespace=topolvm-system -f topolvm.yaml -i topolvm topolvm/topolvm
USBメモリから10GiB切り出してmon用のディスクに
local-pv-provisioner
code:a.patch
diff --git a/local-pv-provisioner/local-pv-provisioner.yaml b/local-pv-provisioner/local-pv-provisioner.yaml
index a0258486..f2a8fc61 100644
--- a/local-pv-provisioner/local-pv-provisioner.yaml
+++ b/local-pv-provisioner/local-pv-provisioner.yaml
@@ -10,11 +10,13 @@ apiVersion: v1
kind: ServiceAccount
metadata:
name: local-pv-provisioner
+ namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: local-pv-provisioner
+ namespace: kube-system
rules:
- apiGroups:
- ""
@@ -41,6 +43,7 @@ apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: manager-rolebinding
+ namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
@@ -48,12 +51,13 @@ roleRef:
subjects:
- kind: ServiceAccount
name: local-pv-provisioner
- namespace: default
+ namespace: kube-system
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: local-pv-provisioner
+ namespace: kube-system
labels:
app.kubernetes.io/name: local-pv-provisioner
spec:
@@ -68,10 +72,10 @@ spec:
containers:
- name: local-pv-provisioner
image: quay.io/cybozu/local-pv-provisioner:0.2.5
- imagePullPolicy: Never
+ imagePullPolicy: IfNotPresent
args:
- - --device-dir=/dev/crypt-disk/by-path
- - --polling-interval=10s
+ - --device-dir=/dev/disk/by-path/
+ - --device-name-filter=.*ata.*-1$
env:
- name: LP_NODE_NAME
valueFrom:
@@ -89,3 +93,5 @@ spec:
- name: dev
hostPath:
path: /dev
+ nodeSelector:
+ potatos.k8s.platform.home.whywrite.it/disknode: "true"
SATAディスクがPVとして見えるようになる
rook-ceph
code:a.patch
diff --git a/deploy/examples/cluster-on-pvc.yaml b/deploy/examples/cluster-on-pvc.yaml
index c82364e96..f34a806f7 100644
--- a/deploy/examples/cluster-on-pvc.yaml
+++ b/deploy/examples/cluster-on-pvc.yaml
@@ -28,7 +28,7 @@ spec:
# size appropriate for monitor data will be used.
volumeClaimTemplate:
spec:
- storageClassName: gp2
+ storageClassName: topolvm-provisioner
resources:
requests:
storage: 10Gi
@@ -55,7 +55,7 @@ spec:
# IMPORTANT: If volumes specified by the storageClassName are not portable across nodes
# this needs to be set to false. For example, if using the local storage provisioner
# this should be false.
- portable: true
+ portable: false
# Certain storage class in the Cloud are slow
# Rook can configure the OSD running on PVC to accommodate that by tuning some of the Ceph internal
# Currently, "gp2" has been identified as such
@@ -100,7 +100,7 @@ spec:
topologySpreadConstraints:
- maxSkew: 1
# IMPORTANT: If you don't have zone labels, change this to another key such as kubernetes.io/hostname
- topologyKey: topology.kubernetes.io/zone
+ topologyKey: kubernetes.io/hostname
whenUnsatisfiable: DoNotSchedule
labelSelector:
matchExpressions:
@@ -125,9 +125,9 @@ spec:
spec:
resources:
requests:
- storage: 10Gi
+ storage: 976762584Ki
# IMPORTANT: Change the storage class depending on your environment
- storageClassName: gp2
+ storageClassName: local-storage
volumeMode: Block
accessModes:
- ReadWriteOnce
code:bash
$ kubectl apply -f csi/rbd/storageclass.yaml
$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-storage kubernetes.io/no-provisioner Retain WaitForFirstConsumer false 7d
rook-ceph-block rook-ceph.rbd.csi.ceph.com Delete Immediate true 20h
topolvm-provisioner topolvm.cybozu.com Delete WaitForFirstConsumer true 21h
がっちゃがちゃやな
metallb (BGP)