auto set LocalStorageCapacityIsolation for BTRFS
parent
e1cecc0fa0
commit
592e2b01ca
|
@ -518,6 +518,17 @@ func generateNewConfigFromFlags(cmd *cobra.Command, k8sVersion string, drvName s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if driver.IsDockerBTRFS(drvName) {
|
||||||
|
fg := "LocalStorageCapacityIsolation=false"
|
||||||
|
if !strings.Contains(cc.KubernetesConfig.FeatureGates, fg) {
|
||||||
|
klog.Info("auto-setting LocalStorageCapacityIsolation to false")
|
||||||
|
if len(cc.KubernetesConfig.FeatureGates) != 0 {
|
||||||
|
fg = "," + fg
|
||||||
|
}
|
||||||
|
cc.KubernetesConfig.FeatureGates += fg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return cc
|
return cc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ package driver
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -144,6 +145,24 @@ func IsDockerDesktop(name string) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsDockerBTRFS checks if Docker is using btrfs storage driver
|
||||||
|
func IsDockerBTRFS(name string) bool {
|
||||||
|
if !IsDocker(name) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
cmd := exec.Command("docker", "info", "-f", "{{.Driver}}")
|
||||||
|
if err := cmd.Run(); err != nil {
|
||||||
|
klog.Warning("failed to get Docker storage driver: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
output, err := cmd.Output()
|
||||||
|
if err != nil {
|
||||||
|
klog.Warning("failed to get command output: %v", err)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return strings.Contains(string(output), "btrfs")
|
||||||
|
}
|
||||||
|
|
||||||
// IsMock checks if the driver is a mock
|
// IsMock checks if the driver is a mock
|
||||||
func IsMock(name string) bool {
|
func IsMock(name string) bool {
|
||||||
return name == Mock
|
return name == Mock
|
||||||
|
|
Loading…
Reference in New Issue