Skip to content

Commit c8b67f6

Browse files
committed
Add cross-architecture remote Docker support with SSH tunneling and TLS certificate handling
1 parent 759214f commit c8b67f6

File tree

125 files changed

+5809
-625
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+5809
-625
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,4 @@ test/integration/testdata/minikube-linux-amd64-latest-stable
6464
hack/legacy_fill_db/gopogh_filldb_log.txt
6565
hack/legacy_fill_db/out/output_summary.json
6666
hack/legacy_fill_db/out/output.html
67+
.aider*

Makefile

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ KIC_VERSION ?= $(shell grep -E "Version =" pkg/drivers/kic/types.go | cut -d \"
2424
HUGO_VERSION ?= $(shell grep -E "HUGO_VERSION = \"" netlify.toml | cut -d \" -f2)
2525

2626
# Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
27-
ISO_VERSION ?= v1.36.0
27+
ISO_VERSION ?= v1.36.0-1749153077-20895
2828

2929
# Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta
3030
DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))
@@ -103,7 +103,7 @@ $(shell mkdir -p $(BUILD_DIR))
103103
CURRENT_GIT_BRANCH ?= $(shell git branch | grep \* | cut -d ' ' -f2)
104104

105105
# Use system python if it exists, otherwise use Docker.
106-
PYTHON := $(shell command -v python || echo "docker run --rm -it -v $(shell pwd):/minikube:Z -w /minikube python python")
106+
PYTHON := $(shell command -v python || echo "docker run --rm -it -v $(shell pwd):/minikube -w /minikube python python")
107107
BUILD_OS := $(shell uname -s)
108108

109109
SHA512SUM=$(shell command -v sha512sum || echo "shasum -a 512")
@@ -189,7 +189,7 @@ endef
189189

190190
# $(call DOCKER, image, command)
191191
define DOCKER
192-
docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user $(shell id -u):$(shell id -g) -w /app -v $(PWD):/app:Z -v $(GOPATH):/go --init $(1) /bin/bash -c '$(2)'
192+
docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 --user $(shell id -u):$(shell id -g) -w /app -v $(PWD):/app -v $(GOPATH):/go --init $(1) /bin/bash -c '$(2)'
193193
endef
194194

195195
ifeq ($(BUILD_IN_DOCKER),y)
@@ -341,13 +341,32 @@ out/minikube-%.iso: $(shell find "deploy/iso/minikube-iso" -type f)
341341
ifeq ($(IN_DOCKER),1)
342342
$(MAKE) minikube-iso-$*
343343
else
344-
docker run --rm --workdir /mnt --volume $(CURDIR):/mnt:Z $(ISO_DOCKER_EXTRA_ARGS) \
344+
docker run --rm --workdir /mnt --volume $(CURDIR):/mnt $(ISO_DOCKER_EXTRA_ARGS) \
345345
--user $(shell id -u):$(shell id -g) --env HOME=/tmp --env IN_DOCKER=1 \
346346
$(ISO_BUILD_IMAGE) /bin/bash -lc '/usr/bin/make minikube-iso-$*'
347347
endif
348348

349+
# Build ISO on remote frank server (169.254.1.1)
350+
.PHONY: iso-remote-%
351+
iso-remote-%: deploy/iso/minikube-iso/board/minikube/%/rootfs-overlay/usr/bin/auto-pause ## Build ISO on remote frank server
352+
@echo "Building minikube ISO on frank (169.254.1.1) for architecture: $*"
353+
@echo "Building auto-pause binary locally first..."
354+
@make deploy/iso/minikube-iso/board/minikube/$*/rootfs-overlay/usr/bin/auto-pause
355+
@echo "Syncing source code to frank..."
356+
@rsync -av --delete --exclude 'out/' --exclude '.git/' --exclude 'test-results/' --exclude '.idea/' --exclude '*.swp' . 169.254.1.1:~/minikube-build/
357+
@echo "Building ISO on frank (auto-pause already built)..."
358+
@ssh 169.254.1.1 "cd ~/minikube-build && export GO111MODULE=on && touch deploy/iso/minikube-iso/board/minikube/$*/rootfs-overlay/usr/bin/auto-pause && make minikube-iso-$* HOSTCC=/usr/bin/gcc-13 HOSTCXX=/usr/bin/g++-13"
359+
@echo "Copying ISO back from frank..."
360+
@scp 169.254.1.1:~/minikube-build/out/minikube-$*.iso out/
361+
@echo "ISO build complete: out/minikube-$*.iso"
362+
363+
# Convenience targets for remote ISO builds
364+
.PHONY: iso-remote-amd64 iso-remote-arm64
365+
iso-remote-amd64: iso-remote-x86_64
366+
iso-remote-arm64: iso-remote-aarch64
367+
349368
iso_in_docker:
350-
docker run -it --rm --workdir /mnt --volume $(CURDIR):/mnt:Z $(ISO_DOCKER_EXTRA_ARGS) \
369+
docker run -it --rm --workdir /mnt --volume $(CURDIR):/mnt $(ISO_DOCKER_EXTRA_ARGS) \
351370
--user $(shell id -u):$(shell id -g) --env HOME=/tmp --env IN_DOCKER=1 \
352371
$(ISO_BUILD_IMAGE) /bin/bash
353372

@@ -523,7 +542,7 @@ out/linters/golangci-lint-$(GOLINT_VERSION):
523542
.PHONY: lint
524543
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
525544
lint:
526-
docker run --rm -v `pwd`:/app:Z -w /app golangci/golangci-lint:$(GOLINT_VERSION) \
545+
docker run --rm -v `pwd`:/app -w /app golangci/golangci-lint:$(GOLINT_VERSION) \
527546
golangci-lint run ${GOLINT_OPTIONS} ./..."
528547
# --skip-dirs "cmd/drivers/kvm|cmd/drivers/hyperkit|pkg/drivers/kvm|pkg/drivers/hyperkit"
529548
# The "--skip-dirs" parameter is no longer supported in the V2 version. If you need to skip the directory,
@@ -657,7 +676,7 @@ out/docker-machine-driver-hyperkit:
657676
ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y)
658677
docker run --rm -e GOCACHE=/app/.cache -e IN_DOCKER=1 \
659678
--user $(shell id -u):$(shell id -g) -w /app \
660-
-v $(PWD):/app:Z -v $(GOPATH):/go:Z --init --entrypoint "" \
679+
-v $(PWD):/app -v $(GOPATH):/go --init --entrypoint "" \
661680
$(HYPERKIT_BUILD_IMAGE) /bin/bash -c 'CC=o64-clang CXX=o64-clang++ /usr/bin/make $@'
662681
else
663682
$(if $(quiet),@echo " GO $@")

README.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ minikube implements a local Kubernetes cluster on macOS, Linux, and Windows. min
2121

2222
minikube runs the latest stable release of Kubernetes, with support for standard Kubernetes features like:
2323

24+
### Remote Docker Support
25+
* **Cross-architecture remote Docker contexts** - Run ARM64 minikube on macOS to manage x86_64 Docker hosts via SSH or TCP
26+
2427
* [LoadBalancer](https://minikube.sigs.k8s.io/docs/handbook/accessing/#loadbalancer-access) - using `minikube tunnel`
2528
* Multi-cluster - using `minikube start -p <name>`
2629
* [NodePorts](https://minikube.sigs.k8s.io/docs/handbook/accessing/#nodeport-access) - using `minikube service`
@@ -38,6 +41,29 @@ As well as developer-friendly features:
3841
* [AMD GPU support](https://minikube.sigs.k8s.io/docs/tutorials/amd/) - for machine learning
3942
* [Filesystem mounts](https://minikube.sigs.k8s.io/docs/handbook/mount/)
4043

44+
## Remote Docker Support
45+
46+
minikube supports running against remote Docker daemons, including cross-architecture scenarios. This allows you to:
47+
48+
* Run minikube on ARM64 macOS while managing Kubernetes clusters on x86_64 Linux Docker hosts
49+
* Use SSH or TCP connections to remote Docker daemons
50+
* Automatically detect and download the correct architecture binaries for the remote host
51+
52+
### Usage
53+
54+
Configure a remote Docker context and minikube will automatically detect and use it:
55+
56+
```bash
57+
# Create a remote Docker context via SSH
58+
docker context create remote-host --docker "host=ssh://user@remote-host"
59+
docker context use remote-host
60+
61+
# Start minikube - it will automatically use the remote context
62+
minikube start --driver=docker
63+
```
64+
65+
minikube will detect the remote architecture and download the appropriate Kubernetes binaries (kubelet, kubeadm, kubectl) for the target platform.
66+
4167
**For more information, see the official [minikube website](https://minikube.sigs.k8s.io)**
4268

4369
## Installation

cmd/minikube/cmd/config/profile_list.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,11 @@ import (
4040
"k8s.io/klog/v2"
4141
)
4242

43-
var profileOutput string
44-
var isLight bool
43+
var (
44+
profileOutput string
45+
isLight bool
46+
isDetailed bool
47+
)
4548

4649
var profileListCmd = &cobra.Command{
4750
Use: "list",
@@ -130,7 +133,13 @@ func profileStatus(p *config.Profile, api libmachine.API) cluster.State {
130133

131134
func renderProfilesTable(ps [][]string) {
132135
table := tablewriter.NewWriter(os.Stdout)
133-
table.SetHeader([]string{"Profile", "VM Driver", "Runtime", "IP", "Port", "Version", "Status", "Nodes", "Active Profile", "Active Kubecontext"})
136+
if isDetailed {
137+
table.SetHeader([]string{"Profile", "Driver", "Runtime", "IP", "Port", "Version",
138+
"Status", "Nodes", "Active Profile", "Active Kubecontext"})
139+
} else {
140+
table.SetHeader([]string{"Profile", "Driver", "Runtime", "IP", "Version", "Status",
141+
"Nodes", "Active Profile", "Active Kubecontext"})
142+
}
134143
table.SetAutoFormatHeaders(false)
135144
table.SetBorders(tablewriter.Border{Left: true, Top: true, Right: true, Bottom: true})
136145
table.SetCenterSeparator("|")
@@ -164,7 +173,13 @@ func profilesToTableData(profiles []*config.Profile) [][]string {
164173
if p.ActiveKubeContext {
165174
k = "*"
166175
}
167-
data = append(data, []string{p.Name, p.Config.Driver, p.Config.KubernetesConfig.ContainerRuntime, cpIP, strconv.Itoa(cpPort), k8sVersion, p.Status, strconv.Itoa(len(p.Config.Nodes)), c, k})
176+
if isDetailed {
177+
data = append(data, []string{p.Name, p.Config.Driver, p.Config.KubernetesConfig.ContainerRuntime,
178+
cpIP, strconv.Itoa(cpPort), k8sVersion, p.Status, strconv.Itoa(len(p.Config.Nodes)), c, k})
179+
} else {
180+
data = append(data, []string{p.Name, p.Config.Driver, p.Config.KubernetesConfig.ContainerRuntime,
181+
cpIP, k8sVersion, p.Status, strconv.Itoa(len(p.Config.Nodes)), c, k})
182+
}
168183
}
169184
return data
170185
}
@@ -213,5 +228,6 @@ func profilesOrDefault(profiles []*config.Profile) []*config.Profile {
213228
func init() {
214229
profileListCmd.Flags().StringVarP(&profileOutput, "output", "o", "table", "The output format. One of 'json', 'table'")
215230
profileListCmd.Flags().BoolVarP(&isLight, "light", "l", false, "If true, returns list of profiles faster by skipping validating the status of the cluster.")
231+
profileListCmd.Flags().BoolVarP(&isDetailed, "detailed", "d", false, "If true, returns a detailed list of profiles.")
216232
ProfileCmd.AddCommand(profileListCmd)
217233
}

cmd/minikube/cmd/service.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,18 +163,20 @@ You may select another namespace by using 'minikube service {{.service}} -n <nam
163163
for _, svc := range noNodePortServices {
164164
noNodePortSvcNames = append(noNodePortSvcNames, fmt.Sprintf("%s/%s", svc.Namespace, svc.Name))
165165
}
166-
if len(noNodePortServices) != 0 {
166+
if len(noNodePortServices) > 0 {
167167
out.WarningT("Services {{.svc_names}} have type \"ClusterIP\" not meant to be exposed, however for local development minikube allows you to access this !", out.V{"svc_names": noNodePortSvcNames})
168168
}
169169

170-
if driver.NeedsPortForward(co.Config.Driver) && services != nil {
171-
startKicServiceTunnel(services, cname, co.Config.Driver)
170+
if driver.NeedsPortForward(co.Config.Driver) {
171+
svcs := services
172+
if len(svcs) == 0 && len(noNodePortServices) > 0 {
173+
svcs = noNodePortServices
174+
}
175+
if len(svcs) > 0 {
176+
startKicServiceTunnel(svcs, cname, co.Config.Driver)
177+
}
172178
} else if !serviceURLMode {
173179
openURLs(data)
174-
if len(noNodePortServices) != 0 {
175-
startKicServiceTunnel(noNodePortServices, cname, co.Config.Driver)
176-
}
177-
178180
}
179181
},
180182
}

cmd/minikube/cmd/ssh.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import (
2929
"k8s.io/minikube/pkg/minikube/node"
3030
"k8s.io/minikube/pkg/minikube/out"
3131
"k8s.io/minikube/pkg/minikube/reason"
32+
"k8s.io/minikube/pkg/drivers/kic/oci"
33+
"k8s.io/klog/v2"
3234
)
3335

3436
var nativeSSHClient bool
@@ -56,7 +58,16 @@ var sshCmd = &cobra.Command{
5658
}
5759
}
5860

59-
err = machine.CreateSSHShell(co.API, *co.Config, *n, args, nativeSSHClient)
61+
// For remote Docker contexts, use docker exec instead of SSH
62+
klog.Warningf("SSH Command: Driver=%s, IsRemoteDockerContext=%v", co.Config.Driver, oci.IsRemoteDockerContext())
63+
if co.Config.Driver == driver.Docker && oci.IsRemoteDockerContext() {
64+
klog.Warningf("Using CreateSSHTerminal for remote Docker context")
65+
err = oci.CreateSSHTerminal(config.MachineName(*co.Config, *n), args)
66+
} else {
67+
klog.Warningf("Using standard SSH shell")
68+
err = machine.CreateSSHShell(co.API, *co.Config, *n, args, nativeSSHClient)
69+
}
70+
6071
if err != nil {
6172
// This is typically due to a non-zero exit code, so no need for flourish.
6273
out.ErrLn("ssh: %v", err)

cmd/minikube/cmd/start.go

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ import (
4141
"github.com/google/go-containerregistry/pkg/name"
4242
"github.com/google/go-containerregistry/pkg/v1/remote"
4343
"github.com/pkg/errors"
44-
"github.com/shirou/gopsutil/v3/cpu"
45-
gopshost "github.com/shirou/gopsutil/v3/host"
44+
"github.com/shirou/gopsutil/v4/cpu"
45+
gopshost "github.com/shirou/gopsutil/v4/host"
4646
"github.com/spf13/cobra"
4747
"github.com/spf13/viper"
4848
"golang.org/x/text/cases"
@@ -113,10 +113,11 @@ func init() {
113113

114114
// startCmd represents the start command
115115
var startCmd = &cobra.Command{
116-
Use: "start",
117-
Short: "Starts a local Kubernetes cluster",
118-
Long: "Starts a local Kubernetes cluster",
119-
Run: runStart,
116+
Use: "start",
117+
Aliases: []string{"create"},
118+
Short: "Starts a local Kubernetes cluster",
119+
Long: "Starts a local Kubernetes cluster",
120+
Run: runStart,
120121
}
121122

122123
// platform generates a user-readable platform message
@@ -135,7 +136,12 @@ func platform() string {
135136

136137
vsys, vrole, err := gopshost.Virtualization()
137138
if err != nil {
138-
klog.Warningf("gopshost.Virtualization returned error: %v", err)
139+
// Only log if it's a real error, not just "not implemented yet"
140+
if !strings.Contains(err.Error(), "not implemented yet") {
141+
klog.Warningf("gopshost.Virtualization returned error: %v", err)
142+
} else {
143+
klog.V(3).Infof("Virtualization detection not implemented for this platform (harmless)")
144+
}
139145
} else {
140146
klog.Infof("virtualization: %s %s", vsys, vrole)
141147
}
@@ -731,6 +737,14 @@ func selectDriver(existing *config.ClusterConfig) (registry.DriverState, []regis
731737
return ds, nil, true
732738
}
733739

740+
// Check for remote Docker context and auto-select docker driver
741+
if oci.IsRemoteDockerContext() {
742+
ds := driver.Status("docker")
743+
out.Step(style.Sparkle, `Detected a remote Docker context, using the {{.driver}} driver`, out.V{"driver": ds.String()})
744+
out.Infof("For remote Docker connections, you may need to run 'minikube tunnel-ssh' for API server access")
745+
return ds, nil, true
746+
}
747+
734748
choices := driver.Choices(viper.GetBool("vm"))
735749
pick, alts, rejects := driver.Suggest(choices)
736750
if pick.Name == "" {
@@ -1098,8 +1112,8 @@ func suggestMemoryAllocation(sysLimit, containerLimit, nodes int) int {
10981112
return mem
10991113
}
11001114

1101-
const fallback = 2200
1102-
maximum := 6000
1115+
const fallback = 3072
1116+
maximum := 6144
11031117

11041118
if sysLimit > 0 && fallback > sysLimit {
11051119
return sysLimit

cmd/minikube/cmd/start_flags.go

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424

2525
"github.com/blang/semver/v4"
2626
"github.com/pkg/errors"
27-
"github.com/shirou/gopsutil/v3/cpu"
27+
"github.com/shirou/gopsutil/v4/cpu"
2828
"github.com/spf13/cobra"
2929
"github.com/spf13/viper"
3030
"k8s.io/klog/v2"
@@ -61,8 +61,8 @@ const (
6161
hostOnlyCIDR = "host-only-cidr"
6262
containerRuntime = "container-runtime"
6363
criSocket = "cri-socket"
64-
networkPlugin = "network-plugin"
65-
enableDefaultCNI = "enable-default-cni"
64+
networkPlugin = "network-plugin" // deprecated, use --cni instead
65+
enableDefaultCNI = "enable-default-cni" // deprecated, use --cni=bridge instead
6666
cniFlag = "cni"
6767
hypervVirtualSwitch = "hyperv-virtual-switch"
6868
hypervUseExternalSwitch = "hyperv-use-external-switch"
@@ -163,7 +163,7 @@ func initMinikubeFlags() {
163163
startCmd.Flags().Bool(dryRun, false, "dry-run mode. Validates configuration, but does not mutate system state")
164164

165165
startCmd.Flags().String(cpus, "2", fmt.Sprintf("Number of CPUs allocated to Kubernetes. Use %q to use the maximum number of CPUs. Use %q to not specify a limit (Docker/Podman only)", constants.MaxResources, constants.NoLimit))
166-
startCmd.Flags().String(memory, "", fmt.Sprintf("Amount of RAM to allocate to Kubernetes (format: <number>[<unit>], where unit = b, k, m or g). Use %q to use the maximum amount of memory. Use %q to not specify a limit (Docker/Podman only)", constants.MaxResources, constants.NoLimit))
166+
startCmd.Flags().StringP(memory, "m", "", fmt.Sprintf("Amount of RAM to allocate to Kubernetes (format: <number>[<unit>], where unit = b, k, m or g). Use %q to use the maximum amount of memory. Use %q to not specify a limit (Docker/Podman only)", constants.MaxResources, constants.NoLimit))
167167
startCmd.Flags().String(humanReadableDiskSize, defaultDiskSize, "Disk size allocated to the minikube VM (format: <number>[<unit>], where unit = b, k, m or g).")
168168
startCmd.Flags().Bool(downloadOnly, false, "If true, only download and cache files for later use - don't install or start anything.")
169169
startCmd.Flags().Bool(cacheImages, true, "If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none.")
@@ -182,7 +182,7 @@ func initMinikubeFlags() {
182182
startCmd.Flags().Uint16(mountPortFlag, defaultMountPort, mountPortDescription)
183183
startCmd.Flags().String(mountTypeFlag, defaultMountType, mountTypeDescription)
184184
startCmd.Flags().String(mountUID, defaultMountUID, mountUIDDescription)
185-
startCmd.Flags().StringSlice(config.AddonListFlag, nil, "Enable addons. see `minikube addons list` for a list of valid addon names.")
185+
startCmd.Flags().StringSlice(config.AddonListFlag, nil, "Enable one or more addons, in a comma-separated format. See `minikube addons list` for a list of valid addon names.")
186186
startCmd.Flags().String(criSocket, "", "The cri socket path to be used.")
187187
startCmd.Flags().String(networkPlugin, "", "DEPRECATED: Replaced by --cni")
188188
startCmd.Flags().Bool(enableDefaultCNI, false, "DEPRECATED: Replaced by --cni=bridge")
@@ -232,6 +232,20 @@ func initKubernetesFlags() {
232232
func initDriverFlags() {
233233
startCmd.Flags().StringP("driver", "d", "", fmt.Sprintf("Driver is one of: %v (defaults to auto-detect)", driver.DisplaySupportedDrivers()))
234234
startCmd.Flags().String("vm-driver", "", "DEPRECATED, use `driver` instead.")
235+
// Hide the deprecated vm-driver flag from help text
236+
if err := startCmd.Flags().MarkHidden("vm-driver"); err != nil {
237+
klog.Warningf("Failed to hide vm-driver flag: %v\n", err)
238+
}
239+
// Hide the deprecated flag from help text so new users dont use it (still will be processed)
240+
if err := startCmd.Flags().MarkHidden(enableDefaultCNI); err != nil {
241+
klog.Warningf("Failed to hide %s flag: %v\n", enableDefaultCNI, err)
242+
}
243+
244+
// Hide the deprecated flag from help text so new users dont use it (still will be processed)
245+
if err := startCmd.Flags().MarkHidden(networkPlugin); err != nil {
246+
klog.Warningf("Failed to hide %s flag: %v\n", networkPlugin, err)
247+
}
248+
235249
startCmd.Flags().Bool(disableDriverMounts, false, "Disables the filesystem mounts provided by the hypervisors")
236250
startCmd.Flags().Bool("vm", false, "Filter to use only VM Drivers")
237251

cmd/minikube/cmd/start_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -277,26 +277,26 @@ func TestSuggestMemoryAllocation(t *testing.T) {
277277
nodes int
278278
want int
279279
}{
280-
{"128GB sys", 128000, 0, 1, 6000},
281-
{"64GB sys", 64000, 0, 1, 6000},
282-
{"32GB sys", 32768, 0, 1, 6000},
280+
{"128GB sys", 128000, 0, 1, 6144},
281+
{"64GB sys", 64000, 0, 1, 6144},
282+
{"32GB sys", 32768, 0, 1, 6144},
283283
{"16GB sys", 16384, 0, 1, 4000},
284284
{"odd sys", 14567, 0, 1, 3600},
285-
{"4GB sys", 4096, 0, 1, 2200},
285+
{"4GB sys", 4096, 0, 1, 3072},
286286
{"2GB sys", 2048, 0, 1, 2048},
287-
{"Unable to poll sys", 0, 0, 1, 2200},
287+
{"Unable to poll sys", 0, 0, 1, 3072},
288288
{"128GB sys, 16GB container", 128000, 16384, 1, 16336},
289289
{"64GB sys, 16GB container", 64000, 16384, 1, 16000},
290290
{"16GB sys, 4GB container", 16384, 4096, 1, 4000},
291291
{"4GB sys, 3.5GB container", 16384, 3500, 1, 3452},
292292
{"16GB sys, 2GB container", 16384, 2048, 1, 2048},
293293
{"16GB sys, unable to poll container", 16384, 0, 1, 4000},
294-
{"128GB sys 2 nodes", 128000, 0, 2, 6000},
295-
{"8GB sys 3 nodes", 8192, 0, 3, 2200},
296-
{"16GB sys 2 nodes", 16384, 0, 2, 2200},
294+
{"128GB sys 2 nodes", 128000, 0, 2, 6144},
295+
{"8GB sys 3 nodes", 8192, 0, 3, 3072},
296+
{"16GB sys 2 nodes", 16384, 0, 2, 3072},
297297
{"32GB sys 2 nodes", 32768, 0, 2, 4050},
298-
{"odd sys 2 nodes", 14567, 0, 2, 2200},
299-
{"4GB sys 2 nodes", 4096, 0, 2, 2200},
298+
{"odd sys 2 nodes", 14567, 0, 2, 3072},
299+
{"4GB sys 2 nodes", 4096, 0, 2, 3072},
300300
{"2GB sys 3 nodes", 2048, 0, 3, 2048},
301301
}
302302
for _, test := range tests {

0 commit comments

Comments
 (0)