kubernetes - kubelet.service:服务延期超时,计划重新启动

标签 kubernetes upgrade kubectl kubeadm kubelet

语境

我们目前正在使用一些带有v1.8.7的集群(该集群是几个月前由当前不可用的开发人员创建的),并正在尝试升级到更高版本。
但是,我们想在用于实验和POC的群集上尝试相同的方法。

我们尝试了什么

为此,我们尝试在一个主节点上运行一些kubeadm命令,但未找到kubeadm。

因此,我们尝试使用命令安装相同的文件-

apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

发生了什么

但是,现在该节点的状态为“未就绪”,并且kubelet服务失败

关于如何解决此问题以及我们应该做什么的任何指示?
root@k8s-master-dev-0:/home/azureuser# kubectl get nodes
NAME                     STATUS     ROLES     AGE       VERSION
k8s-master-dev-0         NotReady   master    118d      v1.8.7
k8s-master-dev-1         Ready      master    118d      v1.8.7
k8s-master-dev-2         Ready      master    163d      v1.8.7
k8s-agents-dev-0         Ready      agent     163d      v1.8.7
k8s-agents-dev-1         Ready      agent     163d      v1.8.7
k8s-agents-dev-2         Ready      agent     163d      v1.8.7

root@k8s-master-dev-0:/home/azureuser# systemctl status kubelet.service
● kubelet.service - Kubelet
   Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/kubelet.service.d
           └─10-kubeadm.conf
   Active: failed (Result: start-limit-hit) since Thu 2018-12-13 14:33:25 UTC; 18h ago

Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Control process exited, code=exited status=2
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: Failed to start Kubelet.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Unit entered failed state.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Failed with result 'exit-code'.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Service hold-off time over, scheduling restart.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: Stopped Kubelet.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Start request repeated too quickly.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: Failed to start Kubelet.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Unit entered failed state.
Dec 13 14:33:25 k8s-master-dev-0 systemd[1]: kubelet.service: Failed with result 'start-limit-hit'.

最佳答案

您的kubelet进入不良状态的原因是,您必须更新kubelet的升级的kubelet软件包和服务文件,并且如果您之前做过,则必须丢失某些更改。

您可以尝试以下操作:

  • 禁用交换内存:swapoff -a
  • 检查您的kubelet服务文件,对于kubeadm,它位于/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,并检查值--cgroup-driver,如果它是systemd,则将其命名为cgroupfs,然后:

  • 重新加载守护程序并重新启动kubelet:
    systemctl daemon-reload
    systemctl restart kubelet
    

    现在检查您的kubelet是否启动。

    PS:应该认真完成kubeadm控制平面的实时升级,请检查我有关如何升级kubeadm的答案

    how to upgrade kubernetes from v1.10.0 to v1.10.11

    关于kubernetes - kubelet.service:服务延期超时,计划重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53776890/

    相关文章:

    kubernetes - 启动 minikube 时是否可以挂载多个卷?

    java - 使用 "helm test"集成测试部署的服务

    kubernetes - kube-controller-manager & kube-scheduler in CrashLoopBackoff kubernetes 错误

    filter - 使用 solr.StandardFilterFactory 从新服务器上的现有核心升级 schema.xml 中的过滤器

    kubernetes - 如何使用kubectl找出K8s作业是否失败?

    具有集群角色的 Kubernetes 服务帐户

    kubernetes - 如果容器未与主机共享内核,则解析cgroup文件以获取统计信息是否可行?

    spring-boot - 基于线程池状态扩展Spring Boot App

    iphone - 自动升级 iOS 应用

    azure - 将 AKS 1.21 升级到 1.25 的潜在风险