kubelet问题

问题一:

日志如下

Failed to get system container stats for “/system.slice/docker.service”: failed to get cgroup stats for “/system.slice/docker.service”: failed to get container info for “/system.slice/docker.service”: unknown container “/system.slice/docker.service”

处理方式

修改kubelet配置 /etc/sysconfig/kubelet,添加如下命令

--runtime-cgroups=/systemd/system.slice --kubelet-cgroups=/systemd/system.slice

原理

大概意思是Flag --cgroup-driver --kubelet-cgroups 驱动已经被禁用,这个参数应该通过kubelet 的配置指定配置文件来配置

问题二:

现象:

kubelet 1.16 在低版本内核无法启动

处理方式

修改kubelet配置 /etc/sysconfig/kubelet,添加如下命令

--feature-gates SupportPodPidsLimit=false 

原理

禁用kubelet新版本特性

coredns问题

现象:

kubeadm搭建集群,添加网络后,coredns异常

kubectl get pods -n kube-system
NAME                                 READY   STATUS    RESTARTS   AGE
coredns-5dc887ffbb-2s8jd             0/1     Running   0          16h

coredns日志如下

pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:98: Failed to list *v1.Namespace: Unauthorized
pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:98: Failed to list *v1.Endpoints: Unauthorized
pkg/mod/k8s.io/[email protected]/tools/cache/reflector.go:98: Failed to list *v1.Service: Unauthorized

查看api server日志

Unable to authenticate the request due to an error: [invalid bearer token, square/go-jose: error in cryptographic primitive

处理方式:

删除coredns-token和pods后恢复

kubectl delete secret  -n kube-system coredns-token-6n887
kubectl delete pods coredns-5dc887ffbb-zgff5

原理:

一般发生在你自定义ca,或者升级集群的时候。secret保留的 仍然是依据旧的ca 生成的token,这时需要手动删除token 和pods,让集群根据新的ca重新生成新的token,新的pod 也能使用新的token去访问。

相关git issue:

https://github.com/kubernetes/kubernetes/issues/72026