请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

kubectl get nodes 显示No resources found

按照教程一步一步走,在搭建完calico后,输入kubectl get nodes,但显示No resources found
[root@node1 ~]# kubectl get po -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-577f77cb5c-pbw5c 0/1 Pending 0 48m

正在回答 回答被采纳积分+3

1回答

AI小慕 2024-11-12 14:03:39

问题分析

从你提供的信息来看,kubectl get nodes 命令显示 No resources found,这通常意味着 Kubernetes 集群中没有任何节点注册。同时,你提到 Calico 控制器的 Pod 处于 Pending 状态,这可能是由于网络插件没有正确配置或启动导致的问题。

核心问题

  1. 节点未注册:Kubernetes 集群中没有节点注册。
  2. Calico Pod 处于 Pending 状态:可能是因为网络插件配置不正确或资源不足。

解决步骤

1. 检查 kubelet 服务状态

确保所有节点上的 kubelet 服务正在运行:

systemctl status kubelet

如果 kubelet 服务没有运行,请启动它:

systemctl start kubelet
systemctl enable kubelet

2. 检查节点注册

确保所有节点已经正确注册到 Kubernetes 集群。可以通过查看 /etc/kubernetes/kubelet.conf 文件中的配置来确认节点是否正确配置。

3. 检查 Calico Pod 的日志

获取 Calico 控制器 Pod 的详细日志,以了解具体的错误信息:

kubectl logs calico-kube-controllers-577f77cb5c-pbw5c -n kube-system

4. 检查 Calico 组件的状态

确保 Calico 组件(如 calico-node)已经正确部署并运行:

kubectl get pods -n kube-system | grep calico

5. 检查网络配置

确保 Calico 的网络配置文件(通常是 calico.yaml 或类似的文件)正确无误,并且已经应用到集群中:

kubectl apply -f calico.yaml

示例代码

假设你的 calico.yaml 文件有问题,这里是一个示例配置文件:

apiVersion: v1
kind: ConfigMap
metadata:
  name: calico-config
  namespace: kube-system
data:
  typha_service_name: "none"
  felix_defaultEndpointToHostAction: "ACCEPT"
  felix_ipipEnabled: "true"
  felix_vxlanEnabled: "false"

---

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: calico-node
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: calico-node
  template:
    metadata:
      labels:
        k8s-app: calico-node
    spec:
      hostNetwork: true
      nodeSelector:
        kubernetes.io/os: linux
      tolerations:
        - effect: NoSchedule
          operator: Exists
        - key: CriticalAddonsOnly
          operator: Exists
      serviceAccountName: calico-node
      containers:
        - name: calico-node
          image: calico/node:v3.19.0
          env:
            - name: DATASTORE_TYPE
              value: "kubernetes"
            - name: NODENAME
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName
            - name: CALICO_NETWORKING_BACKEND
              value: "bird"
            - name: CLUSTER_TYPE
              value: "k8s,bgp"
            - name: IP
              value: "autodetect"
            - name: FELIX_DEFAULTENDPOINTTOHOSTACTION
              value: "ACCEPT"
            - name: FELIX_IPV6SUPPORT
              value: "false"
            - name: FELIX_IPINIPMTU
              value: "1440"
            - name: FELIX_HEALTHENABLED
              value: "true"
          securityContext:
            privileged: true
          volumeMounts:
            - mountPath: /lib/modules
              name: lib-modules
              readOnly: true
            - mountPath: /var/run/calico
              name: var-run-calico
            - mountPath: /var/lib/calico
              name: var-lib-calico
            - mountPath: /run/xtables.lock
              name: xtables-lock
              readOnly: false
      volumes:
        - name: lib-modules
          hostPath:
            path: /lib/modules
        - name: var-run-calico
          hostPath:
            path: /var/run/calico
        - name: var-lib-calico
          hostPath:
            path: /var/lib/calico
        - name: xtables-lock
          hostPath:
            path: /run/xtables.lock
            type: FileOrCreate

总结

  1. 确保 kubelet 服务在所有节点上正常运行。
  2. 检查节点是否已注册到 Kubernetes 集群。
  3. 查看 Calico Pod 的日志以获取更多信息。
  4. 确保 Calico 组件正确部署并运行。
  5. 检查并应用正确的 Calico 配置文件。

通过以上步骤,你应该能够解决 kubectl get nodes 显示 No resources found 和 Calico Pod 处于 Pending 状态的问题。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信