【发布时间】:2019-10-03 11:06:02
【问题描述】:
我想在 macOS 主机上运行的 CentOS docker 容器中运行 Kubernetes v1.13.5 单元测试。我在尝试运行 kubeadm 时遇到错误,因为它不喜欢启用交换。
1) 我尝试了kubeadm init --fail-swap-on=false,但得到了Error: unknown flag: --fail-swap-on。也许仅在较旧的 k8s 中受支持,但文档似乎并不清楚。
2) 我试过了
kubeadm init --config /etc/kubernetes/kubeadm-config.yaml --ignore-preflight-errors=all --skip-token-print
与/etc/kubernetes/kubeadm-config.yaml 一样
---
apiVersion: kubeadm.k8s.io/v1alpha3
controlPlaneEndpoint: ""
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
networking:
podSubnet: "10.244.0.0/16"
serviceSubnet: "10.96.0.0/12"
kubernetesVersion: "v1.13.5"
failSwapOn: false
但这给了...error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster", ... SNIP ... error unmarshaling JSON: while decoding JSON: json: unknown field \"failSwapOn\""
3) 我尝试关闭容器内的交换,但我得到...
docker run -i -t centos
[root@2ed611b32f1a /]# swapoff -a
swapoff:不是超级用户。
或者它在privileged 模式下运行但不影响设置
docker run --privileged -i -t centos
[root@94f9a0e5e46a /]# swapoff -a
[root@94f9a0e5e46a /]# free -h
total used free shared buff/cache available
Mem: 12Gi 371Mi 11Gi 1.0Mi 1.1Gi 12Gi
Swap: 2.0Gi 0B 2.0Gi
4) 我试过像docker run --memory 256M --memory-swap 256M 这样的标志,但这些是not honoured inside the container 尽管https://docs.docker.com/config/containers/resource_constraints/ 说...
防止容器使用交换
如果 --memory 和 --memory-swap 设置为相同的值,这会阻止 容器使用任何交换。这是因为 --memory-swap 是 可以使用的组合内存和交换量,而 --memory 是 只有可以使用的物理内存量。
5) 我尝试在笔记本电脑上的 docker desktop v2.1.0.3 中通过其 UI 中的首选项调整交换设置,但它不会让我将交换减少到 512.0 MiB 以下。
您能否建议一种方法让 k8s 在我的 macOS 主机上运行的 CentOS docker 容器中运行?
【问题讨论】:
标签: docker kubernetes