Skip to content

Instantly share code, notes, and snippets.

@jianzzha
Created July 21, 2020 16:30
Show Gist options
  • Save jianzzha/b4dc5484e0825560939cee4097dc2663 to your computer and use it in GitHub Desktop.
Save jianzzha/b4dc5484e0825560939cee4097dc2663 to your computer and use it in GitHub Desktop.
ocs+cnv+performance profile setup sequence
function wait_pods_in_namespace () {
ns=${1:-default}
echo "wait pods in ${ns} ready"
while true; do
sleep 3s
count=$(oc get pods -n ${ns} | egrep -v 'Running|Complete|found' | wc -l)
if ((count == 1)); then
break;
fi
done
}
function wait_node () {
echo "wait nodes ready"
while true; do
sleep 3s
count=$(oc get nodes | egrep -v 'Ready|found' | wc -l)
if ((count == 1)); then
break
fi
done
}
for node in worker1 worker2 worker3; do
for i in d e f g; do
ssh -o "StrictHostKeyChecking=no" core@${node} sudo sgdisk --zap-all /dev/sd${i};
done;
ssh -o "StrictHostKeyChecking=no" core@${node} sudo systemctl reboot
done
wait_node
for i in worker1 worker2 worker3; do oc label nodes "$i" cluster.ocs.openshift.io/openshift-storage=''; done
cat <<EOF | oc apply -f -
---
apiVersion: v1
kind: Namespace
metadata:
labels:
openshift.io/cluster-monitoring: "true"
name: openshift-storage
spec: {}
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-storage-operatorgroup
namespace: openshift-storage
spec:
serviceAccount:
metadata:
creationTimestamp: null
targetNamespaces:
- openshift-storage
---
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: ocs-catalogsource
namespace: openshift-marketplace
spec:
displayName: OpenShift Container Storage
icon:
base64data: PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTQ1Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2UwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPlJlZEhhdC1Mb2dvLUhhdC1Db2xvcjwvdGl0bGU+PHBhdGggZD0iTTE1Ny43Nyw2Mi42MWExNCwxNCwwLDAsMSwuMzEsMy40MmMwLDE0Ljg4LTE4LjEsMTcuNDYtMzAuNjEsMTcuNDZDNzguODMsODMuNDksNDIuNTMsNTMuMjYsNDIuNTMsNDRhNi40Myw2LjQzLDAsMCwxLC4yMi0xLjk0bC0zLjY2LDkuMDZhMTguNDUsMTguNDUsMCwwLDAtMS41MSw3LjMzYzAsMTguMTEsNDEsNDUuNDgsODcuNzQsNDUuNDgsMjAuNjksMCwzNi40My03Ljc2LDM2LjQzLTIxLjc3LDAtMS4wOCwwLTEuOTQtMS43My0xMC4xM1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMjcuNDcsODMuNDljMTIuNTEsMCwzMC42MS0yLjU4LDMwLjYxLTE3LjQ2YTE0LDE0LDAsMCwwLS4zMS0zLjQybC03LjQ1LTMyLjM2Yy0xLjcyLTcuMTItMy4yMy0xMC4zNS0xNS43My0xNi42QzEyNC44OSw4LjY5LDEwMy43Ni41LDk3LjUxLjUsOTEuNjkuNSw5MCw4LDgzLjA2LDhjLTYuNjgsMC0xMS42NC01LjYtMTcuODktNS42LTYsMC05LjkxLDQuMDktMTIuOTMsMTIuNSwwLDAtOC40MSwyMy43Mi05LjQ5LDI3LjE2QTYuNDMsNi40MywwLDAsMCw0Mi41Myw0NGMwLDkuMjIsMzYuMywzOS40NSw4NC45NCwzOS40NU0xNjAsNzIuMDdjMS43Myw4LjE5LDEuNzMsOS4wNSwxLjczLDEwLjEzLDAsMTQtMTUuNzQsMjEuNzctMzYuNDMsMjEuNzdDNzguNTQsMTA0LDM3LjU4LDc2LjYsMzcuNTgsNTguNDlhMTguNDUsMTguNDUsMCwwLDEsMS41MS03LjMzQzIyLjI3LDUyLC41LDU1LC41LDc0LjIyYzAsMzEuNDgsNzQuNTksNzAuMjgsMTMzLjY1LDcwLjI4LDQ1LjI4LDAsNTYuNy0yMC40OCw1Ni43LTM2LjY1LDAtMTIuNzItMTEtMjcuMTYtMzAuODMtMzUuNzgiLz48L3N2Zz4=
mediatype: image/svg+xml
image: quay.io/ocs-dev/ocs-registry:4.4.0
publisher: Red Hat
sourceType: grpc
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: ocs-subscription
namespace: openshift-storage
spec:
channel: alpha
name: ocs-operator
source: ocs-catalogsource
sourceNamespace: openshift-marketplace
EOF
wait_pods_in_namespace openshift-storage
oc new-project local-storage
oc annotate project local-storage openshift.io/node-selector=''
cat <<EOF | oc apply -f -
apiVersion: v1
kind: Namespace
metadata:
name: local-storage
---
apiVersion: operators.coreos.com/v1alpha2
kind: OperatorGroup
metadata:
name: local-operator-group
namespace: local-storage
spec:
targetNamespaces:
- local-storage
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: local-storage-operator
namespace: local-storage
spec:
channel: "4.3"
installPlanApproval: Automatic
name: local-storage-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
wait_pods_in_namespace local-storage
cat <<EOF | oc apply -f -
apiVersion: local.storage.openshift.io/v1
kind: LocalVolume
metadata:
name: local-disks
namespace: local-storage
spec:
logLevel: Normal
managementState: Managed
nodeSelector:
nodeSelectorTerms:
- matchExpressions:
- key: cluster.ocs.openshift.io/openshift-storage
operator: In
values:
- ''
storageClassDevices:
- devicePaths:
- /dev/sdd
- /dev/sde
- /dev/sdf
- /dev/sdg
storageClassName: localblock-sc
volumeMode: Block
EOF
wait_pods_in_namespace local-storage
cat <<EOF | oc apply -f -
apiVersion: ocs.openshift.io/v1
kind: StorageCluster
metadata:
namespace: openshift-storage
name: storagecluster
spec:
manageNodes: false
monDataDirHostPath: /var/lib/rook
storageDeviceSets:
- name: deviceset-0
count: 3
replica: 3
resources:
requests: {}
limits: {}
placement: {}
dataPVCTemplate:
spec:
storageClassName: localblock-sc
accessModes:
- ReadWriteOnce
volumeMode: Block
resources:
requests:
storage: 900Gi
portable: false
EOF
wait_pods_in_namespace openshift-storage
cat <<EOF | oc create -f -
apiVersion: v1
kind: Namespace
metadata:
name: openshift-cnv
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-cnv-operatorgroup
namespace: openshift-cnv
spec:
targetNamespaces:
- openshift-cnv
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: openshift-cnv-subscription
namespace: openshift-cnv
spec:
channel: "2.3"
name: kubevirt-hyperconverged
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
wait_pods_in_namespace openshift-cnv
cat <<EOF | oc create -f -
apiVersion: hco.kubevirt.io/v1alpha1
kind: HyperConverged
metadata:
finalizers:
- hyperconvergeds.hco.kubevirt.io
name: kubevirt-hyperconverged
namespace: openshift-cnv
spec:
BareMetalPlatform: true
EOF
wait_pods_in_namespace openshift-cnv
cat <<EOF | oc create -f -
apiVersion: v1
kind: Namespace
metadata:
labels:
openshift.io/cluster-monitoring: "true"
name: openshift-performance-addon
---
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-performance-addon-operatorgroup
namespace: openshift-performance-addon
spec:
targetNamespaces:
- openshift-performance-addon
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: performance-addon-operator-subscription
namespace: openshift-performance-addon
spec:
channel: "4.4"
name: performance-addon-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
EOF
wait_pods_in_namespace openshift-performance-addon
cat <<EOF | oc create -f -
apiVersion: performance.openshift.io/v1alpha1
kind: PerformanceProfile
metadata:
name: "worker0-perf"
spec:
cpu:
isolated: "6-11,18-23"
reserved: "0-1,12-13"
hugepages:
defaultHugepagesSize: "1G"
pages:
- size: "1G"
count: 8
realTimeKernel:
enabled: false
nodeSelector:
node-role.kubernetes.io/worker-cnf: ""
EOF
oc label --overwrite node worker0 node-role.kubernetes.io/worker-cnf=""
cat <<EOF | oc create -f -
apiVersion: machineconfiguration.openshift.io/v1
kind: MachineConfigPool
metadata:
name: worker-cnf
namespace: openshift-machine-config-operator
labels:
machineconfiguration.openshift.io/role: worker-cnf
spec:
paused: false
machineConfigSelector:
matchExpressions:
- key: machineconfiguration.openshift.io/role
operator: In
values: [worker,worker-cnf]
nodeSelector:
matchLabels:
node-role.kubernetes.io/worker-cnf: ""
EOF
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment