auto set LocalStorageCapacityIsolation for BTRFS

pull/12990/head
Steven Powell 2021-11-30 14:34:57 -08:00
parent e1cecc0fa0
commit 592e2b01ca
2 changed files with 30 additions and 0 deletions

View File

@ -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
}

View File

@ -19,6 +19,7 @@ package driver
import (
"fmt"
"os"
"os/exec"
"runtime"
"sort"
"strconv"
@ -144,6 +145,24 @@ func IsDockerDesktop(name string) bool {
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
func IsMock(name string) bool {
return name == Mock