参考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.
如何将fail-swap-on设置为FALSE以使其继续运行?
发布于 2018-11-14 17:38:01
Kubeadm附带了一个打印默认配置的命令,因此您可以使用以下命令检查每个指定的默认值:kubeadm config print-default
在您的示例中,如果要禁用kubelet中的交换检查,则必须在当前kubeadm配置中添加以下行:
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
failSwapOn: false发布于 2020-11-16 19:10:44
您还没有提到为什么选择禁用交换。
我不认为它是首选--不是因为内存交换是一种糟糕的做法(它是一种有用的基本内核机制),而是因为Kubelet似乎不能在启用交换的情况下正常工作。
正如您在Kubeadm installation中所看到的,K8S对此主题非常清楚
交换已禁用。您必须禁用交换,以使kubelet正常工作。
我建议阅读有关Evicting end-user Pods和K8S提供的相关功能的信息,以确定pods内存的优先级:
1) The 3 qos classes -确保您的高优先级工作负载正在使用Guaranteed (或至少是Burstable)类运行。
https://stackoverflow.com/questions/53294167
复制相似问题