参考https://github.com/kubernetes/kubeadm/issues/1239。如何成功配置和启动最新的kubeadm?
kubeadm_new.config由配置迁移生成:
kubeadm config migrate --old-config kubeadm_default.config --new-config kubeadm_new.config
。 kubeadm_new.config的内容:
apiEndpoint:
advertiseAddress: 1.2.3.4
bindPort: 6443
apiVersion: kubeadm.k8s.io/v1alpha3
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: khteh-t580
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiVersion: kubeadm.k8s.io/v1alpha3
auditPolicy:
logDir: /var/log/kubernetes/audit
logMaxAge: 2
path: ""
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controlPlaneEndpoint: ""
etcd:
local:
dataDir: /var/lib/etcd
image: ""
imageRepository: k8s.gcr.io
kind: ClusterConfiguration
kubernetesVersion: v1.12.2
networking:
dnsDomain: cluster.local
podSubnet: ""
serviceSubnet: 10.96.0.0/12
unifiedControlPlaneImage: ""
我在kubeadm_new.config中更改了“ kubernetesVersion:v1.12.2”,它似乎进一步发展,现在停留在以下错误:
failed to run Kubelet: Running with swap on is not supported, please disable swap! or set --fail-swap-on flag to false.
我如何将故障交换设置为FALSE才能进行?
答案 0 :(得分:2)
Kubeadm附带了一个打印默认配置的命令,因此您可以使用以下命令检查每个分配的默认值:
kubeadm config print-default
在这种情况下,如果要在kubelet中禁用交换检查,则必须在当前的kubeadm配置中添加以下几行:
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
failSwapOn: false
答案 1 :(得分:0)
您没有提到为什么选择禁用交换。
我不会将其视为第一选择-不是因为内存交换是一种不好的做法(这是一种有用且基本的内核机制),而是因为似乎Kubelet并未设计为在启用交换功能的情况下正常工作。
如您在Kubeadm installation中所见,K8S对此主题非常清楚:
禁止交换。您必须禁用交换才能使kubelet正常工作 正确。
我建议阅读有关Evicting end-user Pods以及K8S提供的用于优先安排豆荚内存的相关功能的信息:
1)The 3 qos classes-确保您的高优先级工作负载正在与Guaranteed
(或至少Burstable
)类一起运行。