1. CNI 问题
错误日志
1
2
| journalctl -u kubelet
...Unable to update cni config: No networks found in /etc/cni/net.d
|
由于没有安装 CNI ,需要移除 /var/lib/kubelet/kubeadm-flags.env
参数中的--network-plugin=cni
1
2
| cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--cgroup-driver=systemd --pod-infra-container-image=k8s.gcr.io/pause:3.1"
|
2. 节点 NotReady
节点 NotReady 可能的原因有很多。通常会是网络、容器配置错误导致,需要逐一排查。
这里使用的是 使用 Kubeadm 安装 Kubernetes 集群
文档的安装步骤。
最后分析原因是 Kubelet 的 cgroupDriver 与 Docker 不一致导致 NotReady。
Kubelet 的配置文件在 /var/lib/kubelet/config.yaml
。修改:
与 Docker 的配置文件 /etc/docker/daemon.json
一致即可:
1
2
3
| {
"exec-opts": ["native.cgroupdriver=systemd"]
}
|
3. Helm init 找不到请求资源
具体报错信息:
1
2
3
| helm init --service-account tiller
...
Error: error installing: the server could not find the requested resource
|
原因:
helm v2.14.3 不兼容 Kubernetes 1.16.0 的 apiVersion 。
解决办法:
1
| helm init --output yaml > tiller.yaml
|
更新 tiller.yaml 两处:
1
2
3
4
5
6
7
8
9
10
| apiVersion: apps/v1
kind: Deployment
...
spec:
replicas: 1
strategy: {}
selector:
matchLabels:
app: helm
name: tiller
|
创建 tiller
1
| kubectl create -f tiller.yaml
|
参考链接,Github Issues 。