mirror of
https://github.com/kubernetes-sigs/kubespray.git
synced 2025-12-13 21:34:40 +03:00
The old repository for these has been deleted, leaving the previous configuration not possible to deploy, and even currently running clusters fail after a restart as the DeameonSet has ImagePullPolicy: Always. More details can be found here: kubernetes-sigs/vsphere-csi-driver#3053 As of writing, only CSI driver versions 3.1.2 to 3.3.1 is available in this registry. This "officially" supports Kubernetes 1.26 to 1.30. Since older drivers are not available, I have removed some feature-gating for those unavailable versions while I was at it. For the cloud provider, the `latest` image is now missing, and only 1.28.0 to 1.31.0 are available. I've set the latest of these as the new default. I also updated the documented default versions, as they were all out of date and not aligned with actual code defaults.
171 lines
5.6 KiB
Django/Jinja
171 lines
5.6 KiB
Django/Jinja
kind: DaemonSet
|
|
apiVersion: apps/v1
|
|
metadata:
|
|
name: vsphere-csi-node
|
|
namespace: "{{ vsphere_csi_namespace }}"
|
|
spec:
|
|
selector:
|
|
matchLabels:
|
|
app: vsphere-csi-node
|
|
updateStrategy:
|
|
type: "RollingUpdate"
|
|
rollingUpdate:
|
|
maxUnavailable: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: vsphere-csi-node
|
|
role: vsphere-csi
|
|
spec:
|
|
priorityClassName: system-node-critical
|
|
nodeSelector:
|
|
kubernetes.io/os: linux
|
|
{% if vsphere_csi_node_affinity %}
|
|
affinity:
|
|
{{ vsphere_csi_node_affinity | to_nice_yaml | indent(width=8) }}
|
|
{% endif %}
|
|
serviceAccountName: vsphere-csi-node
|
|
hostNetwork: true
|
|
dnsPolicy: "ClusterFirstWithHostNet"
|
|
containers:
|
|
- name: node-driver-registrar
|
|
image: {{ kube_image_repo }}/sig-storage/csi-node-driver-registrar:{{ vsphere_csi_node_driver_registrar_image_tag }}
|
|
{% if external_vsphere_version < "7.0u1" %}
|
|
lifecycle:
|
|
preStop:
|
|
exec:
|
|
command: ["/bin/sh", "-c", "rm -rf /registration/csi.vsphere.vmware.com-reg.sock /csi/csi.sock"]
|
|
{% endif %}
|
|
args:
|
|
- "--v=5"
|
|
- "--csi-address=$(ADDRESS)"
|
|
- "--kubelet-registration-path=$(DRIVER_REG_SOCK_PATH)"
|
|
{% if vsphere_csi_node_driver_registrar_resources | length > 0 %}
|
|
resources:
|
|
{{ vsphere_csi_node_driver_registrar_resources | default({}) | to_nice_yaml | trim | indent(width=10) }}
|
|
{% endif %}
|
|
env:
|
|
- name: ADDRESS
|
|
value: /csi/csi.sock
|
|
- name: DRIVER_REG_SOCK_PATH
|
|
value: /var/lib/kubelet/plugins/csi.vsphere.vmware.com/csi.sock
|
|
volumeMounts:
|
|
- name: plugin-dir
|
|
mountPath: /csi
|
|
- name: registration-dir
|
|
mountPath: /registration
|
|
livenessProbe:
|
|
exec:
|
|
command:
|
|
- /csi-node-driver-registrar
|
|
- --kubelet-registration-path=/var/lib/kubelet/plugins/csi.vsphere.vmware.com/csi.sock
|
|
- --mode=kubelet-registration-probe
|
|
initialDelaySeconds: 3
|
|
- name: vsphere-csi-node
|
|
image: {{ kube_image_repo }}/csi-vsphere/driver:{{ vsphere_csi_driver_image_tag }}
|
|
imagePullPolicy: {{ k8s_image_pull_policy }}
|
|
args:
|
|
- "--fss-name=internal-feature-states.csi.vsphere.vmware.com"
|
|
- "--fss-namespace={{ vsphere_csi_namespace }}"
|
|
imagePullPolicy: "Always"
|
|
{% if vsphere_csi_driver_resources | length > 0 %}
|
|
resources:
|
|
{{ vsphere_csi_driver_resources | default({}) | to_nice_yaml | trim | indent(width=10) }}
|
|
{% endif %}
|
|
env:
|
|
- name: NODE_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: spec.nodeName
|
|
- name: CSI_ENDPOINT
|
|
value: unix:///csi/csi.sock
|
|
- name: MAX_VOLUMES_PER_NODE
|
|
value: "59" # Maximum number of volumes that controller can publish to the node. If value is not set or zero Kubernetes decide how many volumes can be published by the controller to the node.
|
|
- name: X_CSI_MODE
|
|
value: "node"
|
|
- name: X_CSI_SPEC_REQ_VALIDATION
|
|
value: "false"
|
|
- name: X_CSI_DEBUG
|
|
value: "true"
|
|
- name: X_CSI_SPEC_DISABLE_LEN_CHECK
|
|
value: "true"
|
|
- name: LOGGER_LEVEL
|
|
value: "PRODUCTION" # Options: DEVELOPMENT, PRODUCTION
|
|
- name: GODEBUG
|
|
value: x509sha1=1
|
|
- name: NODEGETINFO_WATCH_TIMEOUT_MINUTES
|
|
value: "1"
|
|
securityContext:
|
|
privileged: true
|
|
capabilities:
|
|
add: ["SYS_ADMIN"]
|
|
allowPrivilegeEscalation: true
|
|
volumeMounts:
|
|
- name: plugin-dir
|
|
mountPath: /csi
|
|
- name: pods-mount-dir
|
|
mountPath: /var/lib/kubelet
|
|
# needed so that any mounts setup inside this container are
|
|
# propagated back to the host machine.
|
|
mountPropagation: "Bidirectional"
|
|
- name: device-dir
|
|
mountPath: /dev
|
|
- name: blocks-dir
|
|
mountPath: /sys/block
|
|
- name: sys-devices-dir
|
|
mountPath: /sys/devices
|
|
ports:
|
|
- containerPort: 9808
|
|
name: healthz
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /healthz
|
|
port: healthz
|
|
initialDelaySeconds: 10
|
|
timeoutSeconds: 5
|
|
periodSeconds: 5
|
|
failureThreshold: 3
|
|
- name: liveness-probe
|
|
image: {{ kube_image_repo }}/sig-storage/livenessprobe:{{ vsphere_csi_liveness_probe_image_tag }}
|
|
args:
|
|
{% if external_vsphere_version >= "7.0u1" %}
|
|
- "--v=4"
|
|
{% endif %}
|
|
- "--csi-address=/csi/csi.sock"
|
|
{% if vsphere_csi_liveness_probe_ds_resources | length > 0 %}
|
|
resources:
|
|
{{ vsphere_csi_liveness_probe_ds_resources | default({}) | to_nice_yaml | trim | indent(width=10) }}
|
|
{% endif %}
|
|
volumeMounts:
|
|
- name: plugin-dir
|
|
mountPath: /csi
|
|
volumes:
|
|
- name: registration-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet/plugins_registry
|
|
type: Directory
|
|
- name: plugin-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet/plugins/csi.vsphere.vmware.com
|
|
type: DirectoryOrCreate
|
|
- name: pods-mount-dir
|
|
hostPath:
|
|
path: /var/lib/kubelet
|
|
type: Directory
|
|
- name: device-dir
|
|
hostPath:
|
|
path: /dev
|
|
- name: blocks-dir
|
|
hostPath:
|
|
path: /sys/block
|
|
type: Directory
|
|
- name: sys-devices-dir
|
|
hostPath:
|
|
path: /sys/devices
|
|
type: Directory
|
|
tolerations:
|
|
- effect: NoExecute
|
|
operator: Exists
|
|
- effect: NoSchedule
|
|
operator: Exists
|