目录

    1. CNI 问题

    错误日志

    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

    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 。修改:

    cgroupDriver: systemd
    

    与 Docker 的配置文件 /etc/docker/daemon.json 一致即可:

    {
      "exec-opts": ["native.cgroupdriver=systemd"]
    }
    

    3. Helm init 找不到请求资源

    具体报错信息:

    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 。

    解决办法:

    helm init --output yaml > tiller.yaml
    

    更新 tiller.yaml 两处:

    • apiVersion 版本
    • 增加选择器
    apiVersion: apps/v1
    kind: Deployment
    ...
    spec:
      replicas: 1
      strategy: {}
      selector:
        matchLabels:
          app: helm
          name: tiller
    

    创建 tiller

    kubectl create -f tiller.yaml
    

    参考链接,Github Issues