Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CSI-PowerScale driver & resiliency update #220

Merged
merged 2 commits into from
May 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions content/docs/csidriver/installation/helm/isilon.md
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ CRDs should be configured during replication prepare stage with repctl as descri
| kubeletConfigDir | Specify kubelet config dir path | Yes | "/var/lib/kubelet" |
| enableCustomTopology | Indicates PowerScale FQDN/IP which will be fetched from node label and the same will be used by controller and node pod to establish a connection to Array. This requires enableCustomTopology to be enabled. | No | false |
| fsGroupPolicy | Defines which FS Group policy mode to be used, Supported modes `None, File and ReadWriteOnceWithFSType` | No | "ReadWriteOnceWithFSType" |
| podmonAPIPort | Defines the port which csi-driver will use within the cluster to support podmon | No | 8083 |
| maxPathLen | Defines the maximum length of path for a volume | No | 128 |
| ***controller*** | Configure controller pod specific parameters | | |
| controllerCount | Defines the number of csi-powerscale controller pods to deploy to the Kubernetes release| Yes | 2 |
| volumeNamePrefix | Defines a string prefix for the names of PersistentVolumes created | Yes | "k8s" |
Expand Down Expand Up @@ -171,6 +173,9 @@ CRDs should be configured during replication prepare stage with repctl as descri
| sidecarProxyImage | Image for csm-authorization-sidecar. | No | " " |
| proxyHost | Hostname of the csm-authorization server. | No | Empty |
| skipCertificateValidation | A boolean that enables/disables certificate validation of the csm-authorization server. | No | true |
| **podmon** | Podmon is an optional feature under development and tech preview. Enable this feature only after contact support for additional information. | - | - |
| enabled | A boolean that enable/disable podmon feature. | No | false |
| image | image for podmon. | No | " " |

*NOTE:*

Expand Down
4 changes: 2 additions & 2 deletions content/docs/csidriver/installation/operator/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -309,13 +309,13 @@ The below notes explain some of the general items to take care of.
name: snapshotter
- args:
- --monitor-interval=60s
image: gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.4.0
image: gcr.io/k8s-staging-sig-storage/csi-external-health-monitor-controller:v0.5.0
imagePullPolicy: IfNotPresent
name: external-health-monitor
- image: k8s.gcr.io/sig-storage/csi-attacher:v3.4.0
imagePullPolicy: IfNotPresent
name: attacher
- image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.0
- image: k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.5.1
imagePullPolicy: IfNotPresent
name: registrar
- image: k8s.gcr.io/sig-storage/csi-resizer:v1.4.0
Expand Down
3 changes: 2 additions & 1 deletion content/docs/csidriver/release/powerscale.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ description: Release notes for PowerScale CSI driver
### New Features/Changes

- Removed beta volumesnapshotclass sample files.
- Added support for Kubernetes 1.24.
- Added support to increase volume path limit.

### Fixed Issues

- CSI Driver installation fails with the error message "error getting FQDN".

### Known Issues
| Issue | Resolution or workaround, if known |
Expand Down
15 changes: 12 additions & 3 deletions content/docs/resiliency/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,9 @@ CSM for Resiliency provides the following capabilities:
{{<table "table table-striped table-bordered table-sm">}}
| Capability | PowerScale | Unity XT | PowerStore | PowerFlex | PowerMax |
| --------------------------------------- | :--------: | :------: | :--------: | :-------: | :------: |
| Detect pod failures when: Node failure, K8S Control Plane Network failure, K8S Control Plane failure, Array I/O Network failure | no | yes | no | yes | no |
| Cleanup pod artifacts from failed nodes | no | yes | no | yes | no |
| Revoke PV access from failed nodes | no | yes | no | yes | no |
| Detect pod failures when: Node failure, K8S Control Plane Network failure, K8S Control Plane failure, Array I/O Network failure | yes | yes | no | yes | no |
| Cleanup pod artifacts from failed nodes | yes | yes | no | yes | no |
| Revoke PV access from failed nodes | yes | yes | no | yes | no |
{{</table>}}

## Supported Operating Systems/Container Orchestrator Platforms
Expand Down Expand Up @@ -61,6 +61,7 @@ CSM for Resiliency supports the following CSI drivers and versions.
| --------------------------------- | :----------: | :----------------: |
| CSI Driver for Dell PowerFlex | [csi-powerflex](https://github.com/dell/csi-powerflex) | v2.0.0 + |
| CSI Driver for Dell Unity XT | [csi-unity](https://github.com/dell/csi-unity) | v2.0.0 + |
| CSI Driver for Dell PowerScale | [csi-powerscale](https://github.com/dell/csi-powerscale) | v2.3.0 + |
{{</table>}}

### PowerFlex Support
Expand All @@ -84,6 +85,14 @@ Dell Unity XT is targeted for midsized deployments, remote or branch offices, an

All three deployment options, i.e. Unity XT, UnityVSA, and Unity-based VxBlock, enjoy one architecture, one interface with consistent features and rich data services.

### PowerScale Support

PowerScale is a highly scalable NFS array that is very well suited to Kubernetes deployments. The CSM for Resiliency support for PowerScale leverages the following PowerScale features:

* Detection of Array I/O Network Connectivity status changes.
* A robust mechanism to detect if Nodes are actively doing I/O to volumes.
* Low latency REST API supports fast CSI provisioning and de-provisioning operations.

## Limitations and Exclusions

This file contains information on Limitations and Exclusions that users should be aware of. Additionally, there are driver specific limitations and exclusions that may be called out in the [Deploying CSM for Resiliency](deployment) page.
Expand Down
40 changes: 39 additions & 1 deletion content/docs/resiliency/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ For information on the PowerFlex CSI driver, see [PowerFlex CSI Driver](https://

For information on the Unity XT CSI driver, see [Unity XT CSI Driver](https://github.com/dell/csi-unity).

For information on the PowerScale CSI driver, see [PowerScale CSI Driver](https://github.com/dell/csi-powerscale).

Configure all the helm chart parameters described below before installing the drivers.

## Helm Chart Installation
Expand All @@ -31,13 +33,15 @@ podmon:
- "--mode=controller"
- "--skipArrayConnectionValidation=false"
- "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"
node:
args:
- "--csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock"
- "--labelvalue=csi-vxflexos"
- "--mode=node"
- "--leaderelection=false"
- "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"

```

Expand All @@ -59,7 +63,7 @@ To install CSM for Resiliency with the driver, the following changes are require
| skipArrayConnectionValidation | Optional | Boolean value that if set to true will cause controllerPodCleanup to skip the validation that no I/O is ongoing before cleaning up the pod. If set to true will cause controllerPodCleanup on K8S Control Plane failure (kubelet service down). | controller |
| labelKey | Optional | String value that sets the label key used to denote pods to be monitored by CSM for Resiliency. It will make life easier if this key is the same for all driver types, and drivers are differentiated by different labelValues (see below). If the label keys are the same across all drivers you can do `kubectl get pods -A -l labelKey` to find all the CSM for Resiliency protected pods. labelKey defaults to "podmon.dellemc.com/driver". | controller & node |
| labelValue | Required | String that sets the value that denotes pods to be monitored by CSM for Resiliency. This must be specific for each driver. Defaults to "csi-vxflexos" for CSI Driver for Dell PowerFlex and "csi-unity" for CSI Driver for Dell Unity XT | controller & node |
| arrayConnectivityPollRate | Optional | The minimum polling rate in seconds to determine if the array has connectivity to a node. Should not be set to less than 5 seconds. See the specific section for each array type for additional guidance. | controller |
| arrayConnectivityPollRate | Optional | The minimum polling rate in seconds to determine if the array has connectivity to a node. Should not be set to less than 5 seconds. See the specific section for each array type for additional guidance. | controller & node |
| arrayConnectivityConnectionLossThreshold | Optional | Gives the number of failed connection polls that will be deemed to indicate array connectivity loss. Should not be set to less than 3. See the specific section for each array type for additional guidance. | controller |
| driver-config-params | Required | String that set the path to a file containing configuration parameter(for instance, Log levels) for a driver. | controller & node |

Expand All @@ -82,13 +86,15 @@ podmon:
- "-arrayConnectivityConnectionLossThreshold=3"
- "--skipArrayConnectionValidation=false"
- "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"
node:
args:
- "-csisock=unix:/var/lib/kubelet/plugins/vxflexos.emc.dell.com/csi_sock"
- "-labelvalue=csi-vxflexos"
- "-mode=node"
- "-leaderelection=false"
- "--driver-config-params=/vxflexos-config-params/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"

```

Expand All @@ -108,6 +114,7 @@ podmon:
- "-mode=controller"
- "--skipArrayConnectionValidation=false"
- "--driver-config-params=/unity-config/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"
node:
args:
- "-csisock=unix:/var/lib/kubelet/plugins/unity.emc.dell.com/csi_sock"
Expand All @@ -116,7 +123,38 @@ podmon:
- "-mode=node"
- "-leaderelection=false"
- "--driver-config-params=/unity-config/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"

```

## PowerScale Specific Recommendations

Here is a typical installation used for testing:

```yaml
podmon:
image: dellemc/podmon
enabled: true
controller:
args:
- "-csisock=unix:/var/run/csi/csi.sock"
- "--labelvalue=csi-isilon"
- "--arrayConnectivityPollRate=60"
- "--driverPath=csi-isilon.dellemc.com"
- "--mode=controller"
- "--skipArrayConnectionValidation=false"
- "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml"
randeepdell marked this conversation as resolved.
Show resolved Hide resolved
- "--driverPodLabelValue=dell-storage"
node:
args:
- "--csisock=unix:/var/lib/kubelet/plugins/csi-isilon/csi_sock"
- "--labelvalue=csi-isilon"
- "--arrayConnectivityPollRate=60"
- "--driverPath=csi-isilon.dellemc.com"
- "--mode=node"
- "--leaderelection=false"
- "--driver-config-params=/csi-isilon-config-params/driver-config-params.yaml"
- "--driverPodLabelValue=dell-storage"
```

## Dynamic parameters
Expand Down