【问题标题】:weave-net pods in pending state, error in scheduler logsweave-net pods 处于挂起状态,调度程序日志出错
【发布时间】:2019-10-13 17:50:10
【问题描述】:

我正在尝试建立一个新的 kubernetes 集群,并面临使用 weave 作为网络解决方案的问题。 Weave pod 处于挂起状态,并且 kubectl 命令行中没有可用的事件/日志。

我正在尝试从头开始设置一个 Kubernetes 集群,作为在线课程的一部分。我已经设置了主节点——API 服务器、控制器管理器和调度程序启动并运行。以及运行 kubelet 和 kube-proxy 的工作节点。

节点状态:

vagrant@master-1:~$ kubectl get nodes -n kube-system

NAME STATUS ROLES AGE VERSION worker-1 NotReady <none> 25h v1.13.0 worker-2 NotReady <none> 9h v1.13.0

作为启用网络的下一步,我正在使用 weave。我已经在工作节点上安装并提取了 weave。

现在当我尝试运行以下命令时:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

我看到 DaemonSet 正在初始化,但创建的 pod 继续处于“待处理状态”。

vagrant@master-1:~$ kubectl get pods -n kube-system

NAME READY STATUS RESTARTS AGE weave-net-ccrqs 0/2 Pending 0 73m weave-net-vrm5f 0/2 Pending 0 73m

以下命令: vagrant@master-1:~$ kubectl describe pods -n kube-system 不返回任何正在进行的事件。

从调度程序服务日志中,我可以看到记录了以下错误。

Oct 13 16:46:51 master-2 kube-scheduler[14569]: E1013 16:46:51.973883   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.StatefulSet: statefulsets.apps is forbidden: User "system:anonymous" cannot list resource "statefulsets" in API group "apps" at the cluster scope
Oct 13 16:46:51 master-2 kube-scheduler[14569]: E1013 16:46:51.982228   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.StorageClass: storageclasses.storage.k8s.io is forbidden: User "system:anonymous" cannot list resource "storageclasses" in API group "storage.k8s.io" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.338171   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.PersistentVolume: persistentvolumes is forbidden: User "system:anonymous" cannot list resource "persistentvolumes" in API group "" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.745288   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.Service: services is forbidden: User "system:anonymous" cannot list resource "services" in API group "" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.765103   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1beta1.PodDisruptionBudget: poddisruptionbudgets.policy is forbidden: User "system:anonymous" cannot list resource "poddisruptionbudgets" in API group "policy" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.781419   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.ReplicaSet: replicasets.apps is forbidden: User "system:anonymous" cannot list resource "replicasets" in API group "apps" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.785872   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.ReplicationController: replicationcontrollers is forbidden: User "system:anonymous" cannot list resource "replicationcontrollers" in API group "" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.786117   14569 reflector.go:134] k8s.io/kubernetes/cmd/kube-scheduler/app/server.go:232: Failed to list *v1.Pod: pods is forbidden: User "system:anonymous" cannot list resource "pods" in API group "" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.786790   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.Node: nodes is forbidden: User "system:anonymous" cannot list resource "nodes" in API group "" at the cluster scope
Oct 13 16:46:52 master-2 kube-scheduler[14569]: E1013 16:46:52.787016   14569 reflector.go:134] k8s.io/client-go/informers/factory.go:132: Failed to list *v1.PersistentVolumeClaim: persistentvolumeclaims is forbidden: User "system:anonymous" cannot list resource "persistentvolumeclaims" in API group "" at the cluster scope

由于我对kubernetes比较陌生,如果我错过了添加相关信息,请原谅。将立即分享。需要帮助。

为调度程序添加了 kubeconfig:

    {
      kubectl config set-cluster kubernetes-the-hard-way \
        --certificate-authority=ca.crt \
        --embed-certs=true \
        --server=https://127.0.0.1:6443 \
        --kubeconfig=kube-scheduler.kubeconfig

      kubectl config set-credentials system:kube-scheduler \
        --client-certificate=kube-scheduler.crt \
        --client-key=kube-scheduler.key \
        --embed-certs=true \
        --kubeconfig=kube-scheduler.kubeconfig

      kubectl config set-context default \
        --cluster=kubernetes-the-hard-way \
        --user=system:kube-scheduler \
        --kubeconfig=kube-scheduler.kubeconfig

      kubectl config use-context default --kubeconfig=kube- 
   scheduler.kubeconfig
    }

添加调度服务定义:

cat <<EOF | sudo tee /etc/systemd/system/kube-scheduler.service
[Unit]
Description=Kubernetes Scheduler
Documentation=https://github.com/kubernetes/kubernetes

[Service]
ExecStart=/usr/local/bin/kube-scheduler \\
  --kubeconfig=/var/lib/kubernetes/kube-scheduler.kubeconfig \\
  --address=127.0.0.1 \\
  --leader-elect=true \\
  --v=2
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

使用以下启动调度程序:

sudo systemctl enable kube-scheduler
sudo systemctl start kube-scheduler

组件状态:

vagrant@master-1:~$ kubectl get componentstatuses --kubeconfig admin.kubeconfig
NAME                 STATUS    MESSAGE             ERROR
scheduler            Healthy   ok
controller-manager   Healthy   ok
etcd-0               Healthy   {"health":"true"}
etcd-1               Healthy   {"health":"true"}

【问题讨论】:

    标签: kubernetes weave


    【解决方案1】:

    我已经在参与 HA 的两个主节点上重新启动了 kube 调度程序和控制器管理器,我相信这允许 api 服务器的负载均衡器 URL 生效,并且之前观察到的错误被消除了。

    在此之后,我设置了一个工作节点并安装了 weave,pod 被部署并且节点准备就绪。

    vagrant@master-1:~$ kubectl get pods -n kube-system
    NAME              READY   STATUS    RESTARTS   AGE
    weave-net-zswht   1/2     Running   0          41s
    vagrant@master-1:~$ kubectl get nodes
    NAME       STATUS   ROLES    AGE     VERSION
    worker-1   Ready    <none>   4m51s   v1.13.0
    

    【讨论】:

    • 我遇到了同样的问题。您在工作节点中安装了 weave 并且该工作节点开始工作?
    【解决方案2】:

    调度程序的日志消息表明它未配置为在系统帐户下运行 - 它需要查看正在发生的事情并进行更改的权限。

    大概您应该在前面的步骤中进行配置。

    我不认为它与 Weave Net 有任何关系 - 尝试运行任何东西可能会遇到同样的困难。

    【讨论】:

    • 我已经为调度器、服务定义和启动脚本添加了 kubeconfig。您能否就设置出错的地方提出建议?
    • 你在哪里说“为调度程序添加了 kubeconfig:”,这些是你运行的 shell 命令,对吧?他们都完成了没有错误吗?
    • 你应该将创建的kube-scheduler.kubeconfig 移动到/var/lib/kubernetes - 你这样做了吗?
    • sudo mv kube-scheduler.kubeconfig /var/lib/kubernetes/ 配置文件被移动到 lib 并且 shell 命令完全运行。我今天将尝试重做所有这些,以检查是否有遗漏的东西。我将共享调度程序服务日志,而不安排任何 pod。
    • 我尝试重新开始并设置集群。在主节点上安装控制平面组件后,我检查了调度程序日志,结果是正确的!调度程序仍然记录相同的错误,但是我添加了 kubectl get componentstatus 的输出,表明调度程序是健康的。请提出建议。
    【解决方案3】:

    在我的情况下,我未能完全禁用工作节点上的交换,因此在重新启动后,kubelet 没有完全初始化,导致与上述类似的错误。在使用 'swapoff -a' 并删除有问题的 fstab 交换线后,一切都很好,kubelet 切换到活动状态..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2017-02-21
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多