This commit is contained in:
2026-06-25 10:02:16 -05:00
parent 0bc9b2e788
commit 1da9bfd43c
5 changed files with 258 additions and 52 deletions

View File

@@ -88,6 +88,10 @@ papermc_server:
dev_servers:
hosts:
scrim:
backstage:
ansible_host: 10.1.71.133
ansible_user: wed
ansible_become: true
# dhcp_server:
# hosts:

View File

@@ -0,0 +1,118 @@
---
# Patch for px-pure-csi-node DaemonSet to work on Talos Linux
# This version DISABLES multipath to avoid multipath.conf issues on Talos
# Apply with: kubectl patch daemonset px-pure-csi-node -n portworx --patch-file px-csi-talos-patch-v2.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: px-pure-csi-node
namespace: portworx
spec:
template:
spec:
containers:
- name: node-plugin
env:
# CRITICAL: Disable multipath to avoid /etc/multipath.conf requirement
- name: DISABLE_MULTIPATH
value: "true"
# Keep existing env vars (these will merge with existing)
- name: PX_LOGLEVEL
value: INFO
- name: LOG_FILE
value: /var/log/px-pure-csi/node.log
- name: PURE_DISCOVERY_CONF
value: /config/pure.json
- name: CSI_ENDPOINT
value: unix:/csi/csi.sock
- name: CSI_NODE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: CLUSTER_UUID
valueFrom:
configMapKeyRef:
key: ClusterUUID
name: pure-storage-cluster-cm
- name: CLUSTER_NAME
valueFrom:
configMapKeyRef:
key: ClusterName
name: pure-storage-cluster-cm
- name: NODE_STAGE_CONCURRENCY
value: "25"
- name: PURE_FLASHARRAY_SAN_TYPE
value: ISCSI
volumeMounts:
# Add Talos-specific mounts
- name: usr-local-sbin
mountPath: /usr/local/sbin
mountPropagation: Bidirectional
- name: var-lib-iscsi
mountPath: /var/lib/iscsi
mountPropagation: Bidirectional
# Fix existing mounts (keep originals, add propagation)
- name: log-dir
mountPath: /var/log/px-pure-csi
- name: sys
mountPath: /sys
- name: kubelet-dir
mountPath: /var/lib/kubelet
mountPropagation: Bidirectional
- name: kubelet-dir
mountPath: /csi
subPath: plugins/pxd.portworx.com
- name: device-dir
mountPath: /dev
- name: iscsi
mountPath: /etc/iscsi
- name: host-root
mountPath: /host
mountPropagation: Bidirectional
volumes:
# Add Talos-specific volumes
- name: usr-local-sbin
hostPath:
path: /usr/local/sbin
type: Directory
- name: var-lib-iscsi
hostPath:
path: /var/lib/iscsi
type: DirectoryOrCreate
- name: host-root
hostPath:
path: /
type: Directory
# Keep existing volumes
- name: kubelet-dir
hostPath:
path: /var/lib/kubelet
- name: log-dir
hostPath:
path: /var/log/px-pure-csi
- name: device-dir
hostPath:
path: /dev
type: Directory
- name: probe-dir
emptyDir: {}
- name: iscsi
hostPath:
path: /etc/iscsi
- name: pure-config
secret:
secretName: px-pure-secret
items:
- key: pure.json
path: pure.json
- name: sys
hostPath:
path: /sys

View File

@@ -0,0 +1,44 @@
---
# Patch for px-pure-csi-node DaemonSet to work on Talos Linux
# Apply with: kubectl patch daemonset px-pure-csi-node -n portworx --patch-file px-csi-talos-patch.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: px-pure-csi-node
namespace: portworx
spec:
template:
spec:
containers:
- name: node-plugin
volumeMounts:
# Add Talos-specific mounts
- name: usr-local-sbin
mountPath: /usr/local/sbin
mountPropagation: Bidirectional
- name: var-lib-iscsi
mountPath: /var/lib/iscsi
mountPropagation: Bidirectional
# Fix existing kubelet-dir mount propagation
- name: kubelet-dir
mountPath: /var/lib/kubelet
mountPropagation: Bidirectional
# Mount host root for nsenter access
- name: host-root
mountPath: /host
mountPropagation: Bidirectional
volumes:
# Add Talos-specific volumes
- name: usr-local-sbin
hostPath:
path: /usr/local/sbin
type: Directory
- name: var-lib-iscsi
hostPath:
path: /var/lib/iscsi
type: DirectoryOrCreate
- name: host-root
hostPath:
path: /
type: Directory

View File

@@ -143,63 +143,18 @@ worker:
# Only mount /var/lib/iscsi (NOT /etc/iscsi)
# The iscsi-tools extension manages /etc/iscsi automatically
# /var/lib/iscsi contains iSCSI session and node data that must persist
- destination: /var/lib/iscsi
type: bind
source: /var/lib/iscsi
options:
- bind
- rshared
- rw
# - destination: /var/lib/iscsi
# type: bind
# source: /var/lib/iscsi
# options:
# - bind
# - rshared
# - rw
# ARP tuning for dual-NIC setup
sysctls:
net.ipv4.conf.all.arp_announce: "2"
net.ipv4.conf.all.arp_ignore: "1"
- |-
apiVersion: v1alpha1
kind: ExtensionServiceConfig
name: multipathd
configFiles:
- content: |-
# Pure Storage FlashArray multipath configuration
# Configured via ExtensionServiceConfig for multipathd system service
defaults {
polling_interval 10
path_selector "round-robin 0"
path_grouping_policy group_by_prio
path_checker tur
prio alua
failback immediate
user_friendly_names no
find_multipaths yes
fast_io_fail_tmo 10
dev_loss_tmo 600
no_path_retry 0
}
devices {
device {
vendor "PURE"
product "FlashArray"
path_selector "round-robin 0"
path_grouping_policy group_by_prio
prio alua
path_checker tur
fast_io_fail_tmo 10
user_friendly_names no
no_path_retry 0
hardware_handler "1 alua"
dev_loss_tmo 600
failback immediate
}
}
blacklist {
# Exclude Portworx PXD devices from multipathing
devnode "^pxd[0-9]*"
devnode "^pxd.*"
}
mountPath: /etc/multipath.conf
# ─── Nodes ───────────────────────────────────────────────────────────────────
nodes:

View File

@@ -0,0 +1,85 @@
---
# Talos machine config patch for Pure FlashArray multipath support
# Add this to your Talos machine config under worker nodes
# Apply with: talosctl patch machineconfig -n <worker-ip> --patch @talos-multipath-patch.yaml
machine:
files:
- path: /var/etc/multipath.conf
permissions: 0644
op: create
# content: |-
# # Pure Storage FlashArray multipath configuration
# defaults {
# polling_interval 10
# path_selector "round-robin 0"
# path_grouping_policy group_by_prio
# path_checker tur
# prio alua
# failback immediate
# user_friendly_names no
# find_multipaths yes
# fast_io_fail_tmo 10
# dev_loss_tmo 600
# no_path_retry 0
# }
# devices {
# device {
# vendor "PURE"
# product "FlashArray"
# path_selector "round-robin 0"
# path_grouping_policy group_by_prio
# prio alua
# path_checker tur
# fast_io_fail_tmo 10
# user_friendly_names no
# no_path_retry 0
# hardware_handler "1 alua"
# dev_loss_tmo 600
# failback immediate
# }
# }
# blacklist {
# devnode "^pxd[0-9]*"
# devnode "^pxd.*"
# }
# Symlink for PX-CSI to find multipath.conf
- path: /etc/multipath.conf
permissions: 0644
op: create
# content: |-
# # Symlink to persistent location
# # Note: Talos /etc is read-only, this gets regenerated on boot
# defaults {
# polling_interval 10
# path_selector "round-robin 0"
# path_grouping_policy group_by_prio
# path_checker tur
# prio alua
# failback immediate
# user_friendly_names no
# find_multipaths yes
# fast_io_fail_tmo 10
# dev_loss_tmo 600
# no_path_retry 0
# }
# devices {
# device {
# vendor "PURE"
# product "FlashArray"
# path_selector "round-robin 0"
# path_grouping_policy group_by_prio
# prio alua
# path_checker tur
# fast_io_fail_tmo 10
# user_friendly_names no
# no_path_retry 0
# hardware_handler "1 alua"
# dev_loss_tmo 600
# failback immediate
# }
# }
# blacklist {
# devnode "^pxd[0-9]*"
# devnode "^pxd.*"
# }