k8s执行kubectl delete -f kube-flannel.yml报错Error from server (NotFound): error when deleting “kube-fla

文章讲述了在误删除kube-flannel.yml文件后,如何通过修改该文件内容,恢复或重新创建该文件,然后使用kubectldelete命令进行操作的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

原因是在删除之前,修改了kube-flannel.yml文件的内容,找回删除之前的文件,或者覆盖一个一样的文件,再执行:

kubectl delete -f kube-flannel.yml

即可。

 

--- apiVersion: extensions/v1beta1 kind: PodSecurityPolicy metadata: name: psp.flannel.unprivileged annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: docker/default seccomp.security.alpha.kubernetes.io/defaultProfileName: docker/default apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default spec: privileged: false volumes: - configMap - secret - emptyDir - hostPath allowedHostPaths: - pathPrefix: "/etc/cni/net.d" - pathPrefix: "/etc/kube-flannel" - pathPrefix: "/run/flannel" readOnlyRootFilesystem: false # Users and groups runAsUser: rule: RunAsAny supplementalGroups: rule: RunAsAny fsGroup: rule: RunAsAny # Privilege Escalation allowPrivilegeEscalation: false defaultAllowPrivilegeEscalation: false # Capabilities allowedCapabilities: ['NET_ADMIN'] defaultAddCapabilities: [] requiredDropCapabilities: [] # Host namespaces hostPID: false hostIPC: false hostNetwork: true hostPorts: - min: 0 max: 65535 # SELinux seLinux: # SELinux is unsed in CaaSP rule: 'RunAsAny' --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: flannel rules: - apiGroups: ['extensions'] resources: ['podsecuritypolicies'] verbs: ['use'] resourceNames: ['psp.flannel.unprivileged'] - apiGroups: - "" resources: - pods verbs: - get - apiGroups: - "" resources: - nodes verbs: - list - watch - apiGroups: - "" resources: - nodes/status verbs: - patch --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1beta1 metadata: name: flannel roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: flannel subjects: - kind: ServiceAccount name: flannel namespace: kube-system --- apiVersion: v1 kind: ServiceAccount metadata: name: flannel namespace: kube-system --- kind: ConfigMap apiVersion: v1 metadata: name: kube-flannel-cfg namespace: kube-system labels: tier: node app: flannel data: cni-conf.json: | { "name": "cbr0", "plugins": [ { "type": "flannel", "delegate": { "hairpinMode": true, "isDefaultGateway": true } }, { "type": "portmap", "capabilities": { "portMappings": true } } ] } net-conf.json: | { "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } } --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: kube-flannel-ds-amd64 namespace: kube-system labels: tier: node app: flannel spec: template: metadata: labels: tier: node app: flannel spec: hostNetwork: true nodeSelector: beta.kubernetes.io/arch: amd64 tolerations: - operator: Exists effect: NoSchedule serviceAccountName: flannel initContainers: - name: install-cni image: jmgao1983/flannel:v0.11.0-amd64 command: - cp args: - -f - /etc/kube-flannel/cni-conf.json - /etc/cni/net.d/10-flannel.conflist volumeMounts: - name: cni mountPath: /etc/cni/net.d - name: flannel-cfg mountPath: /etc/kube-flannel/ containers: - name: kube-flannel image: jmgao1983/flannel:v0.11.0-amd64 command: - /opt/bin/flanneld args: - --ip-masq - --kube-subnet-mgr resources: requests: cpu: "100m" memory: "50Mi" limits: cpu: "100m" memory: "50Mi" securityContext: privileged: false capabilities: add: ["NET_ADMIN"] env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: run mountPath: /run/flannel - name: flannel-cfg mountPath: /etc/kube-flannel/ volumes: - name: run hostPath: path: /run/flannel - name: cni hostPath: path: /etc/cni/net.d - name: flannel-cfg configMap: name: kube-flannel-cfg --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: kube-flannel-ds-arm64 namespace: kube-system labels: tier: node app: flannel spec: template: metadata: labels: tier: node app: flannel spec: hostNetwork: true nodeSelector: beta.kubernetes.io/arch: arm64 tolerations: - operator: Exists effect: NoSchedule serviceAccountName: flannel initContainers: - name: install-cni image: quay.io/coreos/flannel:v0.11.0-arm64 command: - cp args: - -f - /etc/kube-flannel/cni-conf.json - /etc/cni/net.d/10-flannel.conflist volumeMounts: - name: cni mountPath: /etc/cni/net.d - name: flannel-cfg mountPath: /etc/kube-flannel/ containers: - name: kube-flannel image: quay.io/coreos/flannel:v0.11.0-arm64 command: - /opt/bin/flanneld args: - --ip-masq - --kube-subnet-mgr resources: requests: cpu: "100m" memory: "50Mi" limits: cpu: "100m" memory: "50Mi" securityContext: privileged: false capabilities: add: ["NET_ADMIN"] env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: run mountPath: /run/flannel - name: flannel-cfg mountPath: /etc/kube-flannel/ volumes: - name: run hostPath: path: /run/flannel - name: cni hostPath: path: /etc/cni/net.d - name: flannel-cfg configMap: name: kube-flannel-cfg --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: kube-flannel-ds-arm namespace: kube-system labels: tier: node app: flannel spec: template: metadata: labels: tier: node app: flannel spec: hostNetwork: true nodeSelector: beta.kubernetes.io/arch: arm tolerations: - operator: Exists effect: NoSchedule serviceAccountName: flannel initContainers: - name: install-cni image: quay.io/coreos/flannel:v0.11.0-arm command: - cp args: - -f - /etc/kube-flannel/cni-conf.json - /etc/cni/net.d/10-flannel.conflist volumeMounts: - name: cni mountPath: /etc/cni/net.d - name: flannel-cfg mountPath: /etc/kube-flannel/ containers: - name: kube-flannel image: quay.io/coreos/flannel:v0.11.0-arm command: - /opt/bin/flanneld args: - --ip-masq - --kube-subnet-mgr resources: requests: cpu: "100m" memory: "50Mi" limits: cpu: "100m" memory: "50Mi" securityContext: privileged: false capabilities: add: ["NET_ADMIN"] env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: run mountPath: /run/flannel - name: flannel-cfg mountPath: /etc/kube-flannel/ volumes: - name: run hostPath: path: /run/flannel - name: cni hostPath: path: /etc/cni/net.d - name: flannel-cfg configMap: name: kube-flannel-cfg --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: kube-flannel-ds-ppc64le namespace: kube-system labels: tier: node app: flannel spec: template: metadata: labels: tier: node app: flannel spec: hostNetwork: true nodeSelector: beta.kubernetes.io/arch: ppc64le tolerations: - operator: Exists effect: NoSchedule serviceAccountName: flannel initContainers: - name: install-cni image: quay.io/coreos/flannel:v0.11.0-ppc64le command: - cp args: - -f - /etc/kube-flannel/cni-conf.json - /etc/cni/net.d/10-flannel.conflist volumeMounts: - name: cni mountPath: /etc/cni/net.d - name: flannel-cfg mountPath: /etc/kube-flannel/ containers: - name: kube-flannel image: quay.io/coreos/flannel:v0.11.0-ppc64le command: - /opt/bin/flanneld args: - --ip-masq - --kube-subnet-mgr resources: requests: cpu: "100m" memory: "50Mi" limits: cpu: "100m" memory: "50Mi" securityContext: privileged: false capabilities: add: ["NET_ADMIN"] env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: run mountPath: /run/flannel - name: flannel-cfg mountPath: /etc/kube-flannel/ volumes: - name: run hostPath: path: /run/flannel - name: cni hostPath: path: /etc/cni/net.d - name: flannel-cfg configMap: name: kube-flannel-cfg --- apiVersion: extensions/v1beta1 kind: DaemonSet metadata: name: kube-flannel-ds-s390x namespace: kube-system labels: tier: node app: flannel spec: template: metadata: labels: tier: node app: flannel spec: hostNetwork: true nodeSelector: beta.kubernetes.io/arch: s390x tolerations: - operator: Exists effect: NoSchedule serviceAccountName: flannel initContainers: - name: install-cni image: quay.io/coreos/flannel:v0.11.0-s390x command: - cp args: - -f - /etc/kube-flannel/cni-conf.json - /etc/cni/net.d/10-flannel.conflist volumeMounts: - name: cni mountPath: /etc/cni/net.d - name: flannel-cfg mountPath: /etc/kube-flannel/ containers: - name: kube-flannel image: quay.io/coreos/flannel:v0.11.0-s390x command: - /opt/bin/flanneld args: - --ip-masq - --kube-subnet-mgr resources: requests: cpu: "100m" memory: "50Mi" limits: cpu: "100m" memory: "50Mi" securityContext: privileged: false capabilities: add: ["NET_ADMIN"] env: - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: run mountPath: /run/flannel - name: flannel-cfg mountPath: /etc/kube-flannel/ volumes: - name: run hostPath: path: /run/flannel - name: cni hostPath: path: /etc/cni/net.d - name: flannel-cfg configMap: name: kube-flannel-cfg
<think>我们正在处理的问题:如何验证在运行`kubectlapply -f kube-flannel.yml`后,flannel网络插件是否成功安装。根据提供的引用,特别是引用[1]和[2],我们可以知道网络插件(如flannel)的安装状态对于Kubernetes集群的正常运行至关重要。如果网络插件没有正确安装,kubelet会报告网络插件未就绪的错误。验证步骤:1. **检查Flannel的DaemonSet是否运行正常**:Flannel通常以DaemonSet的形式部署在每个节点上。我们可以检查所有节点上的Flannel Pod是否处于Running状态。```bashkubectlget pods-nkube-system -l app=flannel```如果所有Pod都处于Running状态,则说明Flannel已经成功部署到各个节点。2.**检查节点网络状态**:在Kubernetes中,每个节点的网络状态可以通过`kubectldescribe node`来查看。特别关注节点的Conditions部分,确保`NetworkUnavailable`为`False`。```bashkubectldescribe node<node-name>| grep-inetwork```或者,查看所有节点的状态:```bashkubectlget nodes-owide```所有节点状态应为Ready,并且网络配置正常。3.**检查CNI配置文件**:Flannel会创建CNI配置文件在`/etc/cni/net.d/`目录下。通常,Flannel会生成一个名为`10-flannel.conflist`或类似的文件。确保该目录下存在有效的CNI配置文件。在节点上执行:```bashls /etc/cni/net.d/```并检查文件内容是否正确。4. **检查kubelet日志**:如果之前有网络问题,kubelet日志中可能会有相关错误。根据引用[1],如果网络插件未就绪,kubelet会报告类似`NetworkPluginNotReady`的错误。如果Flannel安装成功,这些错误应该消失。查看kubelet日志(根据系统不同,可能使用journalctl):```bashjournalctl-ukubelet -f```或者直接查看日志文件(如果使用systemd)。5. **测试Pod之间的网络通信**:创建一个测试Pod,验证跨节点的网络通信是否正常。可以使用一个简单的busyboxPod来ping另一个Pod或Service。6.**检查Flannel的日志**:如果Flannel Pod已经运行,但仍有问题,可以查看FlannelPod的日志:```bashkubectl logs-nkube-system <flannel-pod-name>```根据引用[2]的内容,注意参数`kube_network_plugin`支持的值包括'flannel',所以如果之前配置了flannel,那么应该被支持。另外,引用[5]提到containerd的命名空间问题,如果集群使用containerd,并且版本在1.24及以上,需要确保镜像被正确导入到containerd的`k8s.io`命名空间。但Flannel通常使用镜像,如果镜像拉取失败,也会导致安装失败。因此,如果Flannel Pod处于ImagePullBackOff状态,需要检查镜像拉取情况。总结:通过以上步骤,我们可以验证Flannel网络插件是否成功安装。生成相关问题:1.Flannel安装失败的可能原因有哪些?2.如何解决Flannel Pod一直处于CrashLoopBackOff状态的问题?3.Kubernetes中除了Flannel还有哪些网络插件?4.如何配置Flannel使用特定的网络后端(如VXLAN或host-gw)?</think>### 验证 Flannel 网络插件安装成功的方法 #### 1. **检查 Flannel Pod 状态** 运行以下命令验证核心组件是否正常运行: ```bash kubectl get pods -n kube-system -l app=flannel ``` ✅ 成功标志:所有 Pod 状态为 `Running`(例如 `kube-flannel-ds-xxxxx`),且 READY 列显示 `1/1`。若出现 `CrashLoopBackOff` 或 `ImagePullBackOff` 表示失败[^1][^5]。 --- #### 2. **检查节点网络状态** ```bash kubectl get nodes -o wide ``` ✅ 成功标志: - 所有节点状态为 `Ready` - `INTERNAL-IP` 列显示正确的节点 IP - 若节点状态包含 `NetworkUnavailable` 或 `NotReady` 则失败[^1]。 --- #### 3. **验证 CNI 配置文件** 登录节点检查 CNI 配置: ```bash # 在集群节点上执行 ls /etc/cni/net.d/ | grep flannel cat /etc/cni/net.d/10-flannel.conflist # 确认配置文件存在 ``` ✅ 成功标志:存在 `10-flannel.conflist` 且内容包含 Flannel 网络配置[^1][^2]。 --- #### 4. **检查网络接口** 在节点上验证虚拟网络接口: ```bash ip addr show flannel.1 # 检查 VXLAN 接口 ip route | grep flannel # 检查路由表 ``` ✅ 成功标志:`flannel.1` 接口存在且包含集群 Pod 网段路由(默认 `10.244.0.0/16`)。 --- #### 5. **测试跨节点通信** 创建测试 Pod 验证网络连通性: ```bash kubectl create deployment test-netshoot --image nicolaka/netshoot -- sleep infinity kubectl exec -it <POD_NAME> -- ping <其他节点的Pod_IP> ``` ✅ 成功标志:跨节点 Pod 之间可互相 ping 通[^1]。 --- #### 6. **检查 kubelet 日志** 排查底层错误: ```bash journalctl -u kubelet | grep -i flannel ``` ❌ 失败标志:出现 `cni config uninitialized` 或 `NetworkPluginNotReady` 错误[^1][^5]。 --- ### 常见故障原因 1. **镜像拉取失败**: ```bash kubectl describe pod -n kube-system <flannel_pod> | grep Events ``` 解决方案:手动导入 Flannel 镜像到 containerd 的 `k8s.io` 命名空间[^5]。 2. **CNI 配置冲突**: 删除 `/etc/cni/net.d/` 下非 Flannel 的旧配置文件。 3. **网络端口冲突**: 确认节点防火墙开放 Flannel 所需的 UDP 8472(VXLAN)和 TCP 6443 端口。 --- ### 相关问题 1. Flannel 安装后节点仍显示 `NotReady` 可能是什么原因? 2. 如何修改 Flannel 的默认 Pod 网段 `10.244.0.0/16`? 3. Containerd 环境下如何解决 Flannel 镜像拉取失败问题? 4. Flannel 与其他网络插件(如 Calico)冲突时如何清理残留配置? [^1]: 网络插件未就绪时 kubelet 会报告 `NetworkPluginNotReady` 和 `cni config uninitialized` 错误 [^2]: Flannel 属于支持的 CNI 插件,需确保配置参数正确 [^5]: Containerd 环境下需注意镜像命名空间问题,1.24+ 版本需导入到 `k8s.io` 命名空间
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值